Cloudflare 与 VoidZero 宣布接管 tsrs 项目,这是一个将 TypeScript 编译器移植至 Rust 的实验性工程,未来将作为 Oxc JavaScript 编译器工具链的一部分进行开发。据媒体报道,两家公司正与发起该移植工作的 Owner.com 工程师 Max Schwenk 合作,并与 TypeScript 团队保持紧密协作。

性能显著提升,强调非分叉立场

Cloudflare 发布的博文指出,早期基准测试显示,tsrs 的运行速度较 TypeScript 7.0 快多达 8 倍,在执行同等规模类型检查时,内存占用减少约 70%。值得注意的是,TypeScript 7.1 测试版本身的速度已比 7.0 快 2.5 倍,部分优化即源自 tsrs 的上游贡献。

针对社区关切,作者明确强调:“我们并非要分叉(Fork)TypeScript。”他们主张 TypeScript 团队应继续完全掌控语言设计,移植版本必须紧密跟随上游决策,以避免最终瓦解或与官方版本不兼容。

为何选择 Rust 而非 Go?

尽管微软此前已将 TypeScript 编译器从 JavaScript 迁移至 Go,使运行速度提升 10 倍并大幅优化内存效率,但 Cloudflare 认为 Rust 在 WebAssembly(Wasm)场景下更具优势。将 Go 程序编译为 Wasm 需携带 Go 的垃圾回收器,而 Rust 的内存模型能实现 Wasm 客户机与主机间更简单的交互。

这一特性使得完整的开发工具链能在 Cloudflare Workers 沙盒环境中运行,或通过 Wasm 部署于浏览器、嵌入式设备及物联网应用。Cloudflare 表示,其平台拥有超 1,000 万名开发者,计划深化 tsrs 集成,例如在 Oxlint 中实现类型感知的 lint 规则。

目前,tsrs 已归属 oxc-project 组织的 GitHub 仓库,定位为 TypeScript 7 编译器及语言服务器的即插即用替代品。维护者目标是发布与 TypeScript 7.1 兼容且具备 100% 一致性的稳定版本。由于暂缺乏审查能力,项目目前不接受拉取请求,且不支持 –init 和 –showConfig 命令。许可证声明指出,tsrs 是 Apache-2.0 许可下的 TypeScript 衍生作品,“与微软无关,也未获其背书。”

AI 辅助移植与后续整合

Owner.com AI 开发者体验负责人 Schwenk 透露,该项目起源于一项 AI 实验。面对包含约 37,000 个 TypeScript 文件的后端单体应用,他在 TypeScript 7.0 下进行单线程检查需耗时 80 秒并占用 19 GiB 内存。Schwenk 表示,他要求 Anthropic 的 Claude Opus 5.5 提供对 Go 编译器的忠实移植,“自己一行代码也没写。”

测试结果显示,在添加类型打印机后,该移植版本在 15,197 个一致性测试用例中,除 4 个外全部通过,错误基线匹配率达 99.97%。目前,Owner 已在整个单体仓库中运行 tsrs,CI 类型检查耗时降至 7 秒(MacBook 上约为 12 秒)。在一组 17 个公开项目中,tsrs 的内存使用量比 TypeScript nightly 构建版本少约 3 倍,速度快 2.5 至 5 倍。

Cloudflare 表示,正与 Theo Browne 合作,将其独立的 Rust 移植项目 tsc-rs 与 tsrs 合并,打造支持 TypeScript 所有功能(含语言服务器协议)的统一包。开发者现已可从 npm 安装实验性版本。在发布稳定版前,团队致力于缩小与上游 TypeScript 的剩余差异,如诊断信息的打印顺序等。