目录
Cloudflare 发布了 TypeScript 编译器的 Rust 移植版 tsrs。据其报告,类型检查速度最高可达 TypeScript 7 的 8 倍,内存占用减少约 70%。该项目计划支持 TypeScript 的全部功能,包括语言服务器协议(LSP),但在考虑迁移前,应先验证兼容性。
主要要点#
- 据 Cloudflare 称,与基于 Go 的 TypeScript 7 相比,类型检查速度最高可达其 8 倍,内存占用减少约 70%。
- 据 VoidZero 称,tsrs 是与 TypeScript 团队紧密合作开发的,并非 TypeScript 的分支。
- WebAssembly 支持使其能够在浏览器和 Cloudflare Workers 中运行,但是否已具备实际部署条件,仍需确认。
- 项目计划支持 TypeScript 的全部功能和 LSP,并集成到 Oxc 工具链中。
tsrs 提供什么#
tsrs 于 2026 年 10 月发布,为 TypeScript 编译器工具链带来了 Rust 实现。参与开发的 VoidZero 将该项目描述为移植,而非分支。
这一区别表明,项目旨在与 TypeScript 协同发展,而非建立独立的语言路线。但仅凭这一点,不能认定所有编译器选项、诊断和编辑器功能都已具有相同的行为。
目前评估 tsrs 的主要理由是,它能以更少的内存加快类型检查。对于类型检查占持续集成运行时间较大比例的项目,考虑到报告中的改进幅度,值得在相同条件下进行比较。
谨慎解读基准测试#
Cloudflare 公布的类型检查基准测试显示,与 TypeScript 7 相比,速度最高可达其 8 倍,内存占用减少约 70%。这些是厂商报告的数据,并不保证所有代码仓库都能获得相同的改进。
比较中还包括 TypeScript 7.1 测试版。根据所提供的报告,该版本的速度约为 TypeScript 7 的 2.5 倍,但公布的结果显示,tsrs 仍然更快。因此,标题中的“8 倍”应理解为与 TypeScript 7 的比较,不应套用到 7.1 上。
所提供的资料缺乏足够的基准测试细节,无法据此预测具体项目的结果。在用这些数据估算处理能力或成本前,应确认测试所用的代码仓库、编译器配置、硬件和内存测量方法。
在自己的项目中试用#
VoidZero 提供了以下命令来开始运行:
npx tsrs请使用可随时丢弃的检出副本或评估分支,并在运行前查看该软件包的最新说明。从发布内容中,尚无法确认 tsrs 是否支持现有 TypeScript 的全部命令行选项和项目配置。
有效的评估需要进行以下四项检查。
- 记录编译器的准确版本,并使用同一代码仓库的相同修订版本。
- 比较报告的错误,包括位置和诊断消息。
- 在相同条件下测量运行时间和峰值内存占用。
- 重复测量,确认差异是否稳定。
即使运行更快,如果没有执行项目所需的检查,也没有意义。在将运行时间缩短视为成功前,应检查是否存在遗漏的诊断或不支持的配置。
浏览器和 Workers 支持#
Rust 可以编译为 WebAssembly,这为在浏览器开发工具和 Cloudflare Workers 中运行 tsrs 提供了可能。VoidZero 的公告也明确提到了这两种环境。
这意味着 TypeScript 工具有望在靠近 Web 编辑器的位置,或在托管开发服务中运行。Cloudflare 还宣布了 Workers 对 Rust 的原生支持,增加了另一种相关的运行方式。
这些功能仍需针对具体部署环境进行验证。所提供的报告并未说明执行完整类型检查时的软件包大小、启动时间、文件系统要求和运行时限制。能够在浏览器中运行,与具备可用于生产的浏览器开发环境,是两个不同的目标。
全功能支持仍是未来计划#
Cloudflare 计划通过单个软件包支持 TypeScript 的全部功能,包括 LSP。VoidZero 也表示,tsrs 将成为 Oxc 工具链的一部分。
应将这些视为路线图上的承诺。所提供的公告尚无法确认全部功能及 Oxc 集成目前已经可用。
在接入编辑器时,应检查团队使用的具体功能,如补全、导航、重命名和增量诊断。在自己的代码库中确认 tsrs 具有足够的兼容性之前,应继续将现有编译器的验证保留为必需步骤。
下一步#
在修改构建配置前,先在具有代表性的代码仓库中进行一次并行比较,记录诊断差异、运行时间和峰值内存占用。
来源:https://www.publickey1.jp/blog/26/cloudflaretypescriptrusttsrstypescript_7708lsptypescript.html
目录
