【Rust日报】2026-10-21 Cloudflare 用 Rust 移植 TypeScript
内容提要
Cloudflare与VoidZero等合作,将TypeScript 7类型检查器移植为Rust项目tsrs,并置于Oxc工具链下孵化,语言方向仍由TypeScript团队决定。相同检查线程下最多快8倍、内存少约70%,部分优化已回馈上游。可通过npm install tsrs安装,暂不支持--init等,后续将并入tsc-rs以补充LSP。另有三则简讯:Rust UI布局库对照网站上线;Rusteerio将Cheerio移植到Rust,通过全部777个上游测试,解析速度约为Cheerio四倍;Par语言新增SQL、WebSocket和自动清理。
延伸解读
性能数字的参照条件
tsrs 宣称最多快 8 倍、内存少约 70%,前提是类型检查 worker 数量相同。仓库基准表用 4 个 checker 线程,在 16 vCPU 的 Depot CI 上对比 typescript@7.0.2 与更晚的 7.1-dev 移植,例如 mui-docs 为 12.69 秒对 1.07 秒。仓库也说明,tsrs 提交晚于 7.0.2,部分项目报错条数不同源于 TypeScript 自身变化,因此这些数字更适合看作特定负载下的对照,而非通用结论。
兼容目标与当前缺口
tsrs 的方向仍由 TypeScript 团队决定,项目按上游实现保持兼容,稳定版目标是 TypeScript 7.1 上的完全一致。现阶段可通过 npm install tsrs 安装并用 npx tsrs 运行,但 --init 和 --showConfig 尚不支持,诊断输出顺序也与上游有差别。后续计划把 tsc-rs 并入 tsrs 以补上 LSP,说明它目前更接近类型检查器的移植,而非完整替代 tsc 的全部工作流。
移植项目的成本与验证方式
Rusteerio 的案例提供了一个观察角度:它目标行为对齐 Cheerio 1.2.0,通过全部 777 个上游测试且未改断言或新增跳过,文章称移植在一天内完成、LLM 花费约 1000 美元。基准显示解析 3000 个页面时每秒 364 页对 92 页,但两组测试都不含网络抓取,且性能数字对应 1.1.6 版本。这说明兼容测试通过和速度提升可以并存,但基准范围仍需按文章条件理解。
Q&A
Cloudflare 用 Rust 移植 TypeScript 的项目叫什么?在哪里可以找到?
项目叫 tsrs,是 TypeScript 7 类型检查器的 Rust 移植,仓库在 https://github.com/oxc-project/tsrs ,许可证 Apache-2.0。
tsrs 相比 TypeScript 7.0 性能提升多少?
在类型检查 worker 数量相同时,tsrs 比 TypeScript 7.0 最多快 8 倍,内存大约少 70%。
如何安装和使用 tsrs?
安装命令是 npm install tsrs,然后使用 npx tsrs 运行。
Rusteerio 是什么?它和 Cheerio 有什么关系?
Rusteerio 是 Cheerio 的 Rust 移植,做成 JavaScript 侧的直接替换,目标行为是 Cheerio 1.2.0,并通过了全部 777 个上游 Cheerio 测试。
Rusteerio 的解析速度比 Cheerio 快多少?
在 1 个 CPU 上解析并抽取 3000 个 Common Crawl 页面,Rusteerio 1.1.6 每秒 364 页,Cheerio 1.2.0 每秒 92 页,约为四倍。
Par 语言最近增加了哪些新功能?
Par 标准库新增了 Sql(覆盖 PostgreSQL、MySQL 和 SQLite)和 WebSocket(服务端和客户端),还加入了自动清理功能,允许在类型上标出线性值被丢弃时要调用的方法。