这个项目能做什么

Perry是一款针对TypeScript和JavaScript的提前编译型编译器,用Rust实现。它使用SWC进行解析,LLVM生成代码,产出独立的机器码二进制文件,而非附带JavaScript引擎。其README将它与Node.js、Bun和Electron对比,强调无需运行时安装、二进制文件体积小(Hello World约330KB)及即时冷启动。支持的目标平台包括macOS、Windows、Linux、iOS、iPadOS、visionOS、tvOS、watchOS、Android、Wear OS,以及Web和WebAssembly输出。类似SwiftUI的UI API会编译为原生平台控件(AppKit、UIKit、Android Views、Win32、GTK4)而非WebView,项目还提到主屏幕小部件支持。README称其在Node自身测试套件的53个node:*模块中通过率约97%,实现了fs、http/http2、net/tls、crypto、stream、child_process、worker_threads、fetch及Web全局对象,还兼容Fastify、Express、mysql2、pg、ioredis、ws、bcrypt、jsonwebtoken等约50个npm包,也支持纯JavaScript。并发通过parallelMap、parallelFilter和spawn在真实OS线程上暴露;编译器拒绝共享可变状态,因此数据竞争在编译时失败。标准库涵盖数据库、WebSocket、容器、国际化、密钥链、通知、自动更新及TUI框架。性能数据来自公开基准测试套件(Apple M1 Max,重复运行的中位数),涵盖图像卷积、递归斐波那契、JSON流水线、对象分配和数组写入,并与Node.js、Bun和Rust对比。README明确指出V8的JIT仍占优的工作负载,并链接到基准套件和方法学以便结果可复现。可通过npm(@perryts/perry)、Homebrew、winget、APT、Scoop、安装脚本或源码构建进行安装。典型用法包括perry init、perry run,以及perry compile src/main.ts -o myapp,还有perry doctor用于设置验证。遥测是可选的,可通过配置或环境变量禁用。使用Perry构建的项目包括Bloom Engine(原生TypeScript游戏引擎)、Mango(原生MongoDB GUI)、Hone(AI驱动的代码编辑器)和dB Meter(声级计)。该项目采用MIT许可证,公开开发,拥有Discord社区和公开问题追踪器。