扫一扫分享
Perry 是一个用 Rust 写的 TypeScript 编译器。它能把 .ts 文件直接编译成二进制的可执行文件,就像 C/C++ 或 Rust 那样。
关键点:它编译出来的程序,运行时不需要 Node.js、Electron 或任何浏览器内核。它是一个独立、干净的原生应用。
完整的编译和执行流程如下:
编写 main.ts → 执行 perry compile src/main.ts -o myapp → 生成可执行文件 ./myapp → 直接运行
Perry 的核心功能是编译,但它提供的是一个完整的开发工具箱:
原生编译能力:核心功能。利用 SWC(Rust写的TS/JS解析器)和 LLVM(强大的编译器基础设施),将 TypeScript 编译为原生机器码,启动速度和性能远超需要在运行时解释或JIT的框架。
跨10大平台编译:一套代码,通过 --target 参数,可编译到 macOS、iOS、Android、Windows、Linux、Web、WASM、tvOS、watchOS 和 visionOS 10个平台。
直接调用原生UI:它有一套自己的声明式UI系统 (perry/ui),不是网页套壳。代码编译后,在 macOS 上会调用 AppKit,在 Windows 上用 Win32,在 Linux 上用 GTK4,在 iOS上用 UIKit,是真正的原生控件。
自带标准库与npm包支持:内置了 fs, path, process 等 Node.js 核心API。更酷的是,像 fastify (HTTP框架)、mysql2、ioredis 这些热门npm包,都有用 Rust 重写的原生实现,无需安装 node_modules,直接 import 就能用,性能更高。
真正的多线程:通过 perry/thread 模块提供真实的系统线程,配合编译时安全检查,可以安全地做并行计算,避免了 JavaScript 单线程的限制。
生产级配套工具:提供了 perry init(创建项目)、perry doctor(环境诊断)、perry check(检查兼容性) 以及 perry publish(直接打包发布到应用商店) 等完整命令。
Perry 最大的特色,在于它与所有主流跨平台方案有本质区别:
vs. Electron:Electron 本质是打包了个浏览器。Perry 是纯原生二进制,hello world 体积仅约 330KB,而 Electron 起步就是几百MB。
vs. React Native / Flutter:RN 通过“桥”与原生通信,有损耗;Flutter 用自绘引擎,UI与系统脱节。Perry 的UI是直接编译成对应平台的原生控件,体验和用 Swift/Kotlin 写的一样。
vs. Node.js / Bun:它是个编译器,而不是运行时。在一些基准测试中,它的性能比 Node.js 快数倍甚至最高24倍,比 Bun 也快很多。
它的几个硬核优化包括:利用逃逸分析将对象分配在栈上(零堆分配)、采用NaN-Boxing技术处理数值、内置标记-清除垃圾回收器 (GC),生成高度优化的LLVM机器码等。
根据项目的展示案例和特性,Perry 特别适合以下场景:
高性能桌面工具:比如其官方案例 Mango(一个仅7MB、内存占用小于100MB的MongoDB数据库GUI)和 Pry(快速的JSON查看器)。
AI与创意应用:官方案例 Hone 是一个AI驱动、支持终端和Git的原生代码编辑器,说明Perry能胜任复杂的交互式应用。
游戏开发:官方案例 Bloom Engine 是一个用TypeScript写游戏、编译到原生平台的游戏引擎,支持Metal/DirectX 12/Vulkan等现代图形接口。
需要极致性能的服务端/命令行应用:它的原生编译特性使其非常适合开发对启动速度、内存占用和计算性能有苛刻要求的API服务或CLI工具。
嵌入式和IoT设备:得益于极小体积和零依赖特性,可以轻松部署在资源受限的ARM、x86等设备上。
Perry 并非以一个“框架”的形态出现,它更像是一把将 TypeScript 提升为系统级编程语言的利器。它展现的性能蓝图与原生能力确实引人注目。
仅供个人学习参考/导航指引使用,具体请以第三方网站说明为准,本站不提供任何专业建议。如果地址失效或描述有误,请联系站长反馈~感谢您的理解与支持!
手机扫一扫预览