Cloudflare 联合 VoidZero 发布 tsrs:AI 生成的 TypeScript 编译器 Rust 移植版
Cloudflare 与 VoidZero 联合发布 tsrs,这是 TypeScript 编译器的 Rust 移植版,在 Oxc 工具链中孵化,语言设计仍由 TypeScript 团队掌控。官方称在相同类型检查线程数下速度最高提升 8 倍、内存占用减少约 70%,第三方实测为 5.3 倍加速与 72% 内存下降且诊断结果一致。该移植由 Claude 驱动的 Agent 以 TypeScript 的 15,197 个一致性测试为规范完成,采用 Apache-2.0 开源。
报道正文
tsrs 是 TypeScript 编译器的 Rust 移植版,由 Cloudflare 宣布推出,并与 VoidZero 及 Owner.com 的 Max Schwenk 共同开发。该项目在 Oxc 工具链中孵化,并与 TypeScript 团队密切合作。Cloudflare 强调,tsrs 并非 TypeScript 的分支,语言设计仍完全由 TypeScript 团队掌控。

Cloudflare 声称,在类型检查工作线程数量相同的情况下,tsrs 的类型检查速度最高可提升 8 倍,内存占用减少约 70%。Rust 还可使项目能够通过 @tsrs/wasm 编译为 WebAssembly,从而在浏览器或 Workers 上运行检查,而无需像 Go 二进制文件那样将垃圾回收器一并带入最终产物。
开发者只需指定现有的 tsconfig,即可尝试使用:
npm install -D tsrs
npx tsrs -p . --noEmit
在一篇详细的技术文章中,Schwenk 解释说,他没有编写任何代码,而是通过指挥以 Claude Opus 5.5 为核心的 Agent,完成了忠实于原版的移植。整个过程以 TypeScript 自身的 15,197 个一致性测试用例作为规范。在 Owner 拥有 37,000 个文件的单体代码库中,原本使用 TypeScript 7.0 需要 19 GiB 内存和 80 秒才能完成的检查,现在只需 7 秒。
一名开发者对两个 npm 包进行了基准测试,测得 tsrs 的检查速度提升 5.3 倍,内存占用减少 72%,且诊断结果完全一致,生成的代码也逐字节相同。不过,他发现 tsrs 在存在类型错误时会以退出码 2 结束,而 tsc 返回 1,这一差异足以悄然破坏 CI 脚本。如果改用更新的 TypeScript 7.1 beta,而非 7.0 作为基准,ImportStatic 的测试显示,性能提升幅度缩小至 2.7 倍。这也提醒开发者,Cloudflare 宣称的 8 倍性能提升是相对于较旧版本测得的。
TypeScript 团队的 Daniel Rosenwasser 对此回应称,性能提升“并不只是语言选择的结果”,而且 tsrs 中发现的一些优化已经被用于改进 TypeScript 7.1,使其更加精简。
Peter Steinberger 在 X 上表示:
我在周末迁移到了 tsrs。可以直接替换,OC 的运行速度提升了约 5 倍。 有点不可思议,微软花了一个团队两年时间用 Go 重写 TypeScript 编译器,而现在只需让一个 Agent 放手去做,几周内就能得到一个明显更好的版本。
也有人对此持谨慎态度,质疑基于 Arena 分配、且永不释放内存的模型是否合理。
tsrs 与微软基于 Go 开发的编译器 tsgo,以及 Theo Browne 开发的另一个 Rust 移植项目 tsc-rs 并存。Cloudflare 并未打算让这些项目相互竞争,而是将 tsc-rs 与 tsrs 合并为一个统一的软件包,并计划加入语言服务器和内容映射器支持。
目前,tsrs 仍处于实验阶段。它尚不支持 watch 模式和语言服务器,--init 与 --showConfig 也不可用,诊断信息的顺序可能与原版不同。更多信息可参阅兼容性说明。
由于 tsrs 跟踪的是 TypeScript 7,仍在使用 TypeScript 5 或 6 的团队应先迁移到微软的原生 Go 移植版,再替换为 tsrs。完成前一步后,迁移到 tsrs 只需继续使用现有的 tsconfig 即可。
tsrs 采用 Apache-2.0 开源许可证,现已在 GitHub 上发布。
查看英文原文:Cloudflare and VoidZero Introduce tsrs: An AI-Generated Rust Port of TypeScript