Opus 5.5 两周把 TypeScript 编译器搬到 Rust

GitHub 上一个叫 ts-rust 的项目这两天在开发者圈子里传开。它把微软用 Go 重写的 TypeScript 编译器,连同类型检查器和语言服务器(LSP),整体移植到了 Rust,命令行工具叫 tsc-rs。维护方 pingdotgg 在说明里写得很直白:实现代码全部由大模型生成,自己一行都没读过。

项目钉死在 microsoft/typescript-go 的一个上游版本上,对应 TypeScript 7.1.0-dev。说明文件给出的测试结果是 181,711 条从 Go 版移植过来的测试全部通过,在作者测过的真实项目里兼容度 100%。仓库用 MIT 许可证,同时保留 TypeScript 的 Apache-2.0 和 Go 标准库的 BSD-3-Clause 声明,目前有 600 多个星标。

两条模型路线

作者先用 OpenAI 的 GPT-5.6 Sol 和 GPT-6 Astra 跑了一轮,API 费用超过 40 万美元,产出约 130 万行 Rust 代码,兼容度停在 84%。随后换成 Claude Opus 5.5 从头再来,10 个小时出了能跑的 v0,两周总花费约 24,047 美元。

“I’ve never read a line of this code.” (这些代码我一行都没读过。)

性能方面,作者拿自家 T3 Code 项目做基准:tsc-rs 跑完类型检查用 7.25 秒,Go 版 tsc 7 要 16.10 秒,快 2.22 倍。以 JavaScript 版 tsc 6 为基线,tsc 7 是 7.1 倍,tsc-rs 是 11.4 倍。这些数字都来自作者自测,目前没有第三方复现,OpenAI 和 Anthropic 也没有就这次对比公开表态。

放进同类项目里看

大模型做大规模代码迁移,今年已经有几次公开案例。GitHub 此前披露过用 Copilot 把自家一套运行时重写成 83 万行 Rust;Mistral 用智能体把 4 万行 Fortran 77 迁到 C++。这些项目的共同点是有一套现成的、覆盖面很大的测试集当裁判。

ts-rust 也是这个路数。微软的 Go 版移植本身就是一次逐文件的“照抄式”重写,测试用例跟着一起搬了过去,这给模型提供了一个几乎完全确定的目标:十几万条测试,过了就是过了。两家模型的差距,在这种目标明确、反馈即时的任务里被放得很大。换成需求模糊、没有测试兜底的业务代码,这个对比能不能成立,现在还说不准。

已知的坑

说明文件列了四条局限:单体仓库里同一文件可从多条路径到达时,输出文件可能比 tsc 多;tsc -b 增量构建场景下可能读到旧的或缺失的产物;长时间编辑会话里内存缓慢上涨,大约每 1000 次编辑涨 20MB;版本号显示的是移植时的 7.1.0-dev,不是 npm 上的版本。

作者把它定位为早期版本。对想尝鲜的团队来说,CI 里并行跑一遍 tsc-rs 和官方 tsc、比对诊断输出,是比较稳妥的试法;拿它直接替换生产构建链,在没有人审过代码的前提下,风险要自己掂量。

参考来源:ts-rust 项目说明、CocoLoop、Hacker News 讨论;项目说明核对测试条数、API 花费、T3 Code 基准耗时与倍数。