跳到正文
发现
Perry:TypeScript 原生编译器
命令行工具开发者工具

Perry:TypeScript 原生编译器

用 Rust 编写的 TypeScript 编译器,基于 SWC 与 LLVM 将代码直接编译成原生可执行文件,无需 Node.js 运行时。

admin
发布于 2026-11-02
浏览
1
访问
0
下载
0
版本
v0.5.1664
平台
Windows、macOS、Linux
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

Perry 是一个用 Rust 编写的 TypeScript/JavaScript 原生编译器。它先用 SWC 解析代码,再通过 LLVM 编译成机器码,最终产出独立的可执行文件。运行程序不需要安装 Node.js,也不需要打包 Electron 或浏览器引擎。同一套代码可以面向 macOS、Windows、Linux、iOS、Android、watchOS、TV,也可以通过 --target web 或 --target wasm 输出 JavaScript / WebAssembly,在浏览器中运行。

主要功能

  • 原生 AOT 编译:没有引擎启动和 JIT 预热。hello world 约 34 KB;只要程序用到运行时(循环、JSON、async 等),体积通常在几 MB 级别。
  • 多平台目标:一份 UI 代码可编译到 11 个目标:macOS、iOS、iPadOS、visionOS、tvOS、watchOS、Android、Wear OS、Windows、Linux、Web/WASM。它提供类 SwiftUI 的 API,生成真实平台控件(AppKit、UIKit、Android Views、Win32、GTK4),还支持桌面小组件。
  • Node 生态兼容:README 称在 Node 自带测试集上约有 97% 的通过率,覆盖 53 个 node:* 模块(fs、http/http2、net/tls、crypto、stream、child_process、worker_threads、fetch 等)以及约 50 个常见 npm 包(Fastify、Express、mysql2、pg、ioredis、ws、bcrypt、jsonwebtoken 等)。普通 JavaScript 也可以编译。
  • 真多线程:parallelMap、parallelFilter、spawn 基于真实操作系统线程;编译器会拒绝共享可变状态,因此数据竞争无法通过编译。
  • 内置能力:数据库、WebSocket、容器、i18n、keychain、通知、自动更新、TUI 框架均原生实现并静态链接。
  • 公开基准:README 给出在 Apple M1 Max 上重复运行取中位数的数据,例如图像卷积 354 ms(Node.js 1207 ms、Bun 915 ms、Rust 392 ms)、递归 Fibonacci 309 ms(Node.js 987 ms)、JSON 管道峰值内存 3.5 MB(Node.js 36 MB);同时也列出了落后的项目(method_calls、binary_trees、prime_sieve 等)。可以运行 ./benchmarks/run_public_baseline.sh 自行复现。

安装与使用

npm install -g @perryts/perry     # 或 brew install perryts/perry/perry
                                  # 或 winget install PerryTS.Perry
perry init my-app && cd my-app
perry run .

编译成单个原生二进制:

perry compile src/main.ts -o myapp
./myapp

npm 包与 ES 模块可以照常使用,例如用 Fastify 写一个 HTTP 服务后编译为一个二进制,服务器上不需要 node_modules。切换平台使用 --target ios、--target android、--target web 等参数,完整列表见平台指南;可用 perry doctor 检查环境。APT、Scoop、安装脚本与源码编译方式见安装文档。

注意事项

  • 遥测默认关闭,只有在 ~/.perry/config.toml 中显式开启才会发送数据;PERRY_NO_TELEMETRY=1 或 CI=true 始终优先。发送内容匿名并经过脱敏,不包含源码、路径或项目名,可用 perry doctor 查看。
  • TypeScript 语言支持存在限制,使用前建议阅读文档中的 supported-features 与 limitations 页面。
  • 项目以 MIT 许可证开源。

本作品整理自 GitHub 开源项目 PerryTS/perry,原作者 @PerryTS,许可证 MIT。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v0.5.1664当前版本

    性能与体积大幅优化:nbody 等基准运行时间从数千毫秒降到数百毫秒,编译产物由约 17 MB 降至 6.5 MB,hello world 启动 0.9 ms,并精简了启动路径的内存与指令开销。

评论