← 返回文章列表

tsrs 简介:将 TypeScript 移植至 Rust

Cloudflare 和 VoidZero 于 2026 年 10 月 20 日宣布,他们正与 Owner.com 的 Max Schwenk 合作开发 tsrs ,这是一项使用 Rust 移植 TypeScript 编译器的实验性项目。该项目在 Oxc JavaScript 编译器工具链中孵化,并非旨在成为 TypeScript 的独立分支。Cloudfl

文章封面

Cloudflare 和 VoidZero 于 2026 年 10 月 20 日宣布,他们正与 Owner.com 的 Max Schwenk 合作开发 tsrs,这是一项使用 Rust 移植 TypeScript 编译器的实验性项目。该项目在 Oxc JavaScript 编译器工具链中孵化,并非旨在成为 TypeScript 的独立分支。Cloudflare 表示,TypeScript 团队仍将是唯一负责该语言设计、行为和发展方向的力量。

首个实验版本现已发布到 npm。根据公告,该项目旨在忠实实现 TypeScript,同时探索更快的类型检查、更低的内存消耗以及更广泛的部署选项。

npm install tsrs
npx tsrs

所报告的性能提升受配置条件影响

Cloudflare 表示,早期基准测试显示,tsrs 的运行速度“最高快 8×”,内存使用量比 TypeScript 7.0 少约 70%。这些数据适用于两个系统使用相同数量的类型检查工作线程时,并且测试配置与 TypeScript 团队对齐,而非基于性能异常强劲的机器或更改默认设置后的比较。

公告还表示,tsrs 中的一些优化已经贡献给 TypeScript 的原生实现。在此基础上,Cloudflare 表示,TypeScript 7.1 beta 的运行速度最高可比 TypeScript 7.0 快 2.5×。这些性能数据来自该项目自身的早期测试,不应被视为对所有项目、机器或工作负载的保证。

tsrs 还提供了一种自适应配置,可根据机器类型调整行为。Cloudflare 将这种模式描述为使用更多内存,但可提供更高速度。这种权衡使其不适合在资源受限环境中作为通用默认选项,不过用户并非在所有情况下都必须采用该配置。

目标不止于加快本地类型检查

当前目标是减少开发者等待 TypeScript 检查的时间。使用 Rust 编写的编译器还可以增强工具链的可移植性,尤其是在编译为 WebAssembly 时。

Cloudflare 认为,Rust 特别适合 WebAssembly,因为其内存模型允许 WebAssembly 客体代码与宿主环境之间进行相对直接的交互,无需随程序一同分发垃圾回收器。对于内存开销比单纯执行速度更重要的应用,这一点尤其重要。

这种设计可支持多种部署模式:

  • 基于浏览器的开发:WebAssembly 可以让类型检查在浏览器本地运行,从而减少将源代码和项目元数据发送到远程服务的需求。
  • Cloudflare Workers:公告表示,Workers 长期以来一直支持 WebAssembly,并且近期通过 wasm-bindgen 新增的 Emscripten target 获得了原生 Rust 支持。因此,体积紧凑的编译器工作负载更容易适应严格受限的无服务器环境。
  • 沙箱化的智能体工作流:Cloudflare 提出,可以探索在 Workers 上运行完全封装的开发系统,使智能体能够在受控环境中操作完整的工具链。
  • 嵌入式和 IoT 设备:WebAssembly 还为在浏览器、嵌入式系统和 IoT 应用中运行兼容 TypeScript 的工具提供了一条路径,不过公告将这些描述为潜在机会,而非已经完成的产品。

选择 Rust 是为了兼顾速度与可移植性

TypeScript 团队此前曾推出原生 Go 实现,Cloudflare 表示,该移植版本相较原始 JavaScript 实现在速度和内存方面已经带来了显著改善。之所以选择 Rust,是因为它增加了多项对 WebAssembly 部署尤为有用的能力。

公告还反映出编译器移植可行性的更广泛变化。它表示,前沿 AI 模型如今可以在数天内协助完成大规模移植,从而产生保真度各不相同的 Rust 和 C++ 实现。Cloudflare 认为,这不仅提高了市场对更快的 TypeScript 工具的需求,也使兼容性维护变得更加重要。

兼容性需要有纪律的维护流程

一个速度很快但行为与 TypeScript 不同的编译器,无法为编辑器、代码检查器和构建系统提供良好基础。因此,tsrs 被设计为忠实移植,由 TypeScript 团队继续控制可接受的语言行为。

作为这项工作的一部分,维护者正与 Theo Browne 合作,将 tsc-rs 和 tsrs 合并为一个软件包。目标软件包将覆盖 TypeScript 的完整功能集,包括语言服务器协议和内容映射器。

同步流程借鉴了该项目在维护 Vinext 和 Next.js 方面的经验。在该模式下,智能体会审查上游变更、收集差异,并为可能相关的变更创建跟踪议题。随后,通过运行上游测试套件重新生成兼容性矩阵。检测到不匹配时,流程会创建复现用例、移植相关测试并提出修正方案。

Cloudflare 表示,TypeScript 将采用相同的大体方法,并特别注意防止 tsrs 引入行为偏差。在 tsrs 中发现的性能改进也可能被回馈至 TypeScript 原生代码库,使两种实现的用户都能从中受益。

实验版本仍存在一些差异

当前版本的行为尚未与上游编译器完全一致。已确认的一项差异是诊断信息的输出顺序。维护者表示,他们打算在发布稳定版本前尽量减少此类差异。

基准测试也仍处于初步阶段,自适应模式可能以更高的内存占用换取额外速度。因此,项目规模、工作线程数量、宿主硬件和 TypeScript 配置都可能影响结果。公告尚未提供证据表明 tsrs 可以在所有生产环境中取代上游编译器。

与 Oxlint 集成的可能性

Cloudflare 还在探索将 tsrs 更深入地集成到自有工具链中,包括在 Oxlint 中加入具备类型感知能力的检查规则。Oxc 团队也在独立重构其代码库,以提升速度、改善内存使用并增强可维护性。

更广泛的计划是让 tsrs 保持为一个健康的开源项目,同时不取代 TypeScript 编译器及其治理机制。Cloudflare 表示,将继续与 TypeScript 团队和 JavaScript 社区合作,重点推动更快、更具可移植性的工具,同时保持与该语言原始实现的兼容性。

资料来源:Introducing tsrs: A port of TypeScript to Rust(2026-10-20)。

相关文章

从 2,500 次请求到 24 次:无需星标用户也能重建星标历史GitHub 服务可用性报告:2026 年 9 月dotnetup:.NET 工具链管理器Clairic:全新 System One 萃取模型系列

一起聊聊

留下你的想法,评论审核通过后展示。