TypeScript 编译器有了 Rust 移植版,而且不是孤例——Cloudflare、VoidZero 和 Owner.com 的 Max Schwenk 正在合作开发 tsrs,把它放进 Oxc JavaScript 编译器工具链里孵化。早期基准很能打:比 TypeScript 7.0 快 8 倍,内存少 70%(同配置对比)。

先说清楚这事的边界。tsrs 不是 fork——Cloudflare 明确表态:「我们相信 TypeScript 团队应保持对语言设计和方向的完全控制,不希望改变这一点。」Rust 移植必须严格跟随原实现,否则迟早会分叉失配。这也解释了为什么做 Rust 移植的人都在强调「忠实」:TypeScript 团队对某些特性可能花几年探索原型才定方案,移植版跟不上,就会烂掉。

性能数字值得细看。Cloudflare 强调基准是和 TypeScript 团队一起核过的同配置对比——因为市面上已经出现了一些 TypeScript 移植版「性能很猛」的宣传,很多是用了更大的机器类型和不同选项。tsrs 快 8 倍、内存少 70% 是「同样数量的类型检查 worker」下的成绩。另外,TypeScript 7.1 beta 本身已经比 7.0 快 2.5 倍,其中一部分优化就是从 tsrs 上游回馈的。
「TypeScript 的 Go 移植已经快了 10 倍,为什么还要 Rust?」——Cloudflare 自己回答了这个问题:关键是 Wasm。Rust + Wasm 的组合一直很强,根源在 Rust 的内存管理模型。Go 程序编译到 Wasm 得连 Go 的垃圾回收器一起带上;而 Rust 的内存管理让 Wasm guest 和 host 之间的交互很直接,没有 GC 的负担。Cloudflare Workers 已经支持 Wasm,几周前还宣布了原生 Rust 支持(Emscripten target 的 wasm-bindgen)。


这让一个以前不现实的事情变得可能:在浏览器里、嵌入式设备上、IoT 应用里,跑一个完整的开发环境。Cloudflare 的说法是——把整个软件构建和部署系统放进 Workers 的紧循环里,内存占用小的优势立刻兑现,甚至可以在完全沙箱化的 Cloudflare 环境里端到端跑开发工具链。结合 Agent 场景:你能在一个完全沙箱化的环境里跑完整开发工具链,或者安全地在客户端浏览器里跑。
路线图也很务实。tsrs 会和 Theo Browne 的 tsc-rs 合并成一个包,支持 TypeScript 全部特性(含 LSP 和 content mappers);参照他们维护 Vinext 与 Next.js 同步的方式,严格不引入与上游的偏差;性能改进尽量回馈给 TypeScript 的 Go 代码库。现在 npm install tsrs 就能试实验版。
对开发者来说,这事的价值不在「又来了个快 8 倍的 TS」,而在「TypeScript 终于能在浏览器和边缘环境里完整运行」。当开发工具链不再依赖本地重型机器,而是能在浏览器里、在 Cloudflare Workers 里、在 Agent 的沙箱里跑起来,开发环境的形态会被重新定义。
参考来源: