写点什么

Cloudflare 与 VoidZero 联合推出 tsrs:由 AI 生成的 TypeScript 编译器 Rust 移植版

作者: Daniel Curtis
  • 2026-11-06
    北京
  • 本文字数:1237 字

    阅读完需:约 4 分钟

AI摘要

tsrs 是 Cloudflare 联合 VoidZero 与 Owner.com 开发的 TypeScript 编译器 Rust 移植版,非分支项目,语言规范仍由 TS 团队维护;实测类型检查速度最高提升 8 倍,内存降低约 70%,支持 WASM 编译。

关键观点:类型检查性能提升达 8 倍且内存减少 70%;通过 @tsrs/wasm 可在浏览器/Workers 运行,无 GC 开销;移植过程全程由 Claude Opus 5.5 Agent 驱动,以 15,197 个 TS 官方一致性测试为基准。

适合前端架构师、TypeScript 工具链开发者、大规模单体项目工程效能负责人阅读。

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