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

Cloudflare与VoidZero联合开发的tsrs是TypeScript编译器的Rust移植版,由Cloudflare宣布,并与Owner.com的Max Schwenk共同开展开发,该项目在Oxc工具链中孵化,并紧密协作TypeScript团队。tsrs并非TypeScript分支,语言设计完全由团队掌控,其类型检查性能在相同工作线程下提升8倍,内存占用减少约70%。项目还可通过@tsrs/wasm编译为WebAssembly,支持浏览器及Workers运行检查,无需纳入Go式垃圾回收器。开发者仅需指定tsconfig即可使用,性能显著提升,但存在退出码差异及性能相对基准的变化情况,需结合版本具体分析。此次合作体现了技术生态的优化趋势,依托AI能力加速编译器移植,在性能与功能拓展方面取得进展,但后续兼容性、竞争策略等方面仍需持续观察。

--91likeyou---

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

🔥 热词:#tsrs · #TypeScript · #Cloudflare · #VoidZero · #Rust · #移植版 · #并与 · #Schwenk