TypeScript 被移植到了 Rust……而且比 Go 快 3 倍
Original · TypeScript Got Ported To Rust... And It's 3x Faster Than Go
Key Takeaway
由 AI 代理团队在三周内基于微软 Go 版本移植并用 Rust 编写的 TypeScript 编译器,实现了比原版快 24 倍的惊人性能。
Highlights
完全兼容的 Rust 版 TypeScript 编译器已经诞生,并且其运行速度几乎是 Go 版本的 3 倍。
使用包含 793 个文件和大约 38 万行代码的 TypeScript 仓库作为测试用例,Rust 版本的平均速度比旧的 JavaScript 编译器快大约 24 倍。
该 Rust 移植版从第一次提交到正式官宣仅仅用了三周时间。
该项目由一位工程师指挥由 Claude Opus 5.5 领导的 AI 代理团队,以函数为单位将微软的 Go 编译器翻译成了 Rust 版本。
由于 TypeScript 拥有包含 13,000 多个小型程序的庞大测试套件,AI 代理能够通过逐个函数移植并运行测试来确保完全兼容。
Rust 编译器不需要垃圾回收器,因此编译为 WebAssembly 后可以更轻量地运行在浏览器或沙箱中。
Timeline
Rust 版 TypeScript 编译器介绍与性能对比
构建步骤通常通过 ESBuild 或 Vite 等工具快速剥离类型并打包,但大型代码库中的类型检查往往需要等待几分钟。为了测试编译性能,脚本对比了旧的 JavaScript 编译器、Go 编译器以及全新的 Rust 编译器在真实代码库上的表现。
- 微软在 7 月曾将 TypeScript 编译器移植到 Go 语言,而现在迎来了用 Rust 编写的完全兼容版本。
- 类型检查在大型代码库中非常缓慢,新型 Go 和 Rust 编译器的核心作用就是加速这个过程。
- 测试使用的演示项目是包含 793 个文件和 38 万行代码的 TypeScript 仓库本身。
四个场景的基准测试结果
通过测试有效类型、单个简单类型错误、核心类型损坏以及递归类型嵌套过深四个场景,全面评估了不同编译器的处理效率。Rust 版本在各项测试中均大幅领先,展现出极高的执行效率。
- 在所有类型都有效的场景中,JavaScript 耗时约 7 秒,Go 耗时 0.7 秒,Rust 仅需 0.3 秒。
- 在核心类型损坏导致海量连锁错误的场景中,JavaScript 耗时 13 秒,Go 耗时 2.2 秒,Rust 约 0.5 秒。
- Go 的速度比 JavaScript 快大约 9 到 10 倍,而 Rust 编译器的速度比 JavaScript 快大约 24 倍,比 Go 快将近 3 倍。
AI 辅助开发与架构设计
由于微软团队在过去两年里已经解决了所有艰难的架构问题,Rust 移植版得以借助 AI 代理以函数为单位进行翻译。AI 代理通过移植函数、运行测试并修复报错,最终输出了与官方版本错误数量惊人一致的运行结果。
- 该 Rust 版本从第一次提交到正式官宣仅仅用了三周时间。
- 项目由一位工程师指挥由 Claude Opus 5.5 领导的 AI 代理团队,逐个函数地复制了微软的 Go 编译器架构。
- 通过运行包含 13,000 多个小型程序的测试套件,Rust 版本能够给出与微软编译器完全相同的错误信息。
采用 Rust 的原因与未来应用
选择 Rust 的关键原因在于其无垃圾回收器的特性,非常适合打包为 WebAssembly 在各种环境中运行。同时,Rust 移植版发现的一些优化技巧目前也正在被反哺到微软接下来的 Go 版本中。
- Cloudflare 希望开发工具直接运行在沙箱或浏览器中,因此需要将编译器打包为 WebAssembly。
- Rust 完全不需要垃圾回收器,避免了随之带来的多余累赘。
- 该 Rust 移植版目前正由打造 Vite 的团队在 OXC 内部开发,并计划用于 OXLint 的类型感知检查规则中。
Description
A fully compatible TypeScript compiler written in Rust just landed, and it's meant to be almost 3x faster than the Go port. We ran tsrs, the Go compiler and JavaScript tsc side by side on the TypeScript repo, and found out how it was built in three weeks. If slow type checks eat your day, watch this. 🔗 Relevant Links https://blog.cloudflare.com/typescript-rust-port https://github.com/oxc-project ❤️ More about us Radically better observability stack: https://betterstack.com/ Written tutorials: https://betterstack.com/community/ Example projects: https://github.com/BetterStackHQ 📱 Socials Twitter: https://twitter.com/betterstackhq Instagram: https://www.instagram.com/betterstackhq/ TikTok: https://www.tiktok.com/@betterstack LinkedIn: https://www.linkedin.com/company/betterstack 📌 Chapters: 0:00 Intro 0:40 What a TypeScript compiler actually does 1:32 JavaScript vs Go vs Rust: the benchmark 2:53 How it was built in three weeks 4:06 Why build it in Rust 4:45 What's next for tsrs
