
凌晨 1:30 交给 AI,醒来一个 Rust 版 TypeScript:tsrs 的 2,900 star 是 Cloudflare 给的
它是什么 把微软 Go 版 TypeScript 7 的类型检查器逐行移植成 Rust 的开源项目,装上就能替换,更快、更省内存,还能在浏览器里跑。
为什么火了 大仓库跑类型检查动辄几十 GB 内存的痛点是真的;但真正让它爆的是 Cloudflare 和 VoidZero 官方博客宣布接手、TypeScript 团队公开站台,上了 HN 首页。
C你可以怎么跟 别再移植 TypeScript;学它的方法——拿上游测试集当规格、逐字节比对输出——去移植另一个还没人做、确实慢的工具,拿到真实跑分后找对口的机构或上游背书首发。
- 数据(每天更新) · 建库 2026-10-01 · 2,990 星 · 7 天 +332
GitHub · 星数 数据 2026-10-09 → 2026-11-08(31 天,31 次观测)。10-28 以前的点来自 deeply / 存档补录,不是每天都有
Max Schwenk 9 月 30 日晚上让 Claude Opus 5.5 把微软的 Go 版 TypeScript 逐行移植成 Rust,自己一行代码没写。10 月 1 日他自己发的 HN 帖只拿到 4 分。三周后 Cloudflare 和 VoidZero 宣布接手,项目两天涨了 1,300 star。同一个月里还冒出好几个「AI 把 TS 移植到 Rust」的项目,只有它跑出来了。下面讲它为什么能起来、star 从哪来、哪些做法能学,以及为什么不建议再做一个同样的东西。
一个 19 GiB 的类型检查
Max 在餐饮 SaaS 公司 Owner.com 写代码。他们的后端单体仓库叫 Olympus,大约 3.7 万个 TypeScript 文件。用 TypeScript 7.0(微软去年用 Go 重写的版本,也叫 tsgo)单线程检查一遍,要 19 GiB 内存、80 秒;再加上 lint 和语言服务,超过 50 GiB。他在 10-19 的工程博客里写:就算是一台 $3,000、36 GiB 内存的 MacBook,工程师也不敢同时开几个 agent,不然机器会卡死。他们试过让 agent「轮流跑」,写在规则文件里,「agent 不总是在听」。
9 月 30 日,他冒出一个念头:
「不知道 Opus 5.5 能不能一次把 TypeScript 编译器移植成 Rust。」
他给的规矩很死:算法、函数结构、求值顺序、报错全部和上游一样,钉死上游某一次提交,不许重新设计;一个 Go 包对应一个 Rust crate;拿 TypeScript 自己的 15,197 个 conformance 用例当规格。凌晨 1:30 左右,他让 20 多个子 agent 并行干一整夜。第二天早上醒来,第一次端到端跑,78% 的报错基线逐字节一致;补上类型打印之后,13,462 个里只差 4 个,一致率 99.97%。
之后是几周的「爬山」:每次只改一处、和 Go 版对比输出、跑分,不达标就扔。仓库里写了一道合入门槛:单线程指令数降 1%、或耗时降 2%、或峰值内存降 5%,而且输出逐字节一致,否则不收。在 Olympus 上,8 个检查线程时 tsrs 用 5.8 秒、7.5 GiB,tsgo 7.0 用 56.6 秒、49.8 GiB(Owner 博客,作者自测)。
它是什么
tsrs 是 TypeScript 7 类型检查器和语言服务的 Rust 移植,pnpm add -D tsrs 装上就能替换 tsc / tsgo 做 --noEmit 检查,另有一个能在浏览器里跑的 Wasm 包和在线 playground。仓库 10-01 建,原来在作者个人名下,现在转到了 oxc-project(做 oxlint、Rolldown 的那个组织),Apache-2.0。提交记录里作者本人 1,321 次,Oxc 作者 Boshen 357 次。PR 不对外开放,README 写的是「没有精力处理」。版本发得很勤:v0.18(10-19)到 v0.22(11-05),中间加了 --fast 模式。
star 是哪两天来的
| 日期 | star | 当天新增 |
|---|---|---|
| 10-17 | 147 | — |
| 10-20 | 376 | +58 |
| 10-21 | 686 | +310 |
| 10-22 | 1,651 | +965 |
| 10-23 | 1,927 | +276 |
| 10-24 到 11-05 | 2,065 → 2,773 | 每天 +30~150 |
| 11-06 | 2,866 | +93 |
(GitHub 每日 star;11-06 仓库页实时 2,933)
10-01 作者自己在 HN 发帖,4 分,没人理。转折是两篇博客:
- 10-19,Owner 工程博客:把上面那段「19 GiB、凌晨交给 AI、醒来 99.97%」讲完整。故事性强,但这是一家公司的工程博客,本身传播有限。
- 10-20,Cloudflare 官方博客「Introducing tsrs」:Cloudflare 和 VoidZero(Vite / Oxc 背后的公司,6 月被 Cloudflare 收购)联名,写明「和 TypeScript 团队密切合作」「我们不是在 fork TypeScript」,标题数字是「最多快 8 倍、内存少约 70%」。同一天上了 HN 首页,437 分、213 条评论。
HN 帖里最有分量的一条评论来自 TypeScript 团队的 Daniel Rosenwasser:他们在和 tsrs 的维护者一起研究它为什么快,TS 7.1 变快变省的一部分优化「其实来自 tsrs」,并祝贺「tsrs 团队把这件事变成正式项目」。官方团队公开站台,对一个 AI 写出来的移植来说,这比任何跑分都管用。
star 真正爆发是 10-21、10-22,比博客和 HN 晚一两天。推断是 X、Reddit、newsletter 和 YouTube 上的二次传播(socket.dev、Flavio Copes 写了解读,YouTube 上有「TypeScript Got Ported To Rust」这类视频),具体是哪一条带起来的没定位到。之后热度回落:近 7 天 +284,前 7 天 +655。
npm 上 tsrs 近 30 天下载约 945 万次,10-22 之后每天 42 万到 107 万次(npm 下载统计,截至 11-05),已经和微软官方 @typescript/native-preview 一周 682 万次同一量级。这个数字里有多少是 CI、镜像和各平台二进制重复计数,外面看不出来,别当成用户数。
同一个月,好几个人在做同一件事
| 项目 | 上线 | 规模(11-06) | 和 tsrs 的区别 |
|---|---|---|---|
| microsoft/typescript-go(TS 7) | 2024-09 | 2.6 万 star | 官方 Go 版,tsrs 就是照它移植的 |
| pingdotgg/ts-rust(tsc-rs,Theo Browne) | 2026-10 | 1,623 star,npm 一周 20.8 万次,HN 119 分 | 同样是 AI 写的 Rust 移植,比 tsrs 先出名;个人项目,The Register 报道花了约 2.4 万美元 token。Cloudflare 说正在和 Theo 商量合并 |
tsgo-rs、bun check | 2026 | 未核实 | HN 评论原话:「So that's three now」 |
| dudykr/stc | 2020-12 | 5,695 star,已停更 | 手写、从零重写,不是逐行跟上游 |
| kaleidawave/ezno | 2023-02 | 2,734 star | 重新设计的检查器,不追求和 tsc 一致 |
| 一堆 AI 移植小仓库 | 2026-09~10 | 个位数 star | Cloudflare 博客管这类叫 slopfork;r/typescript 有专帖吐槽 |
HN 上也有人直接说「你们都在做同一个东西」。技术上,「用前沿模型几天移植一个编译器」已经不稀奇,Cloudflare 的博客自己也这么写。
凭什么是它
同样是 AI 移植,tsrs 和别家的差别不在代码,在三件事:
- 忠实,而且能证明。钉死上游提交、拿官方测试集当规格、逐字节比对输出、CI 里有确定性检查和故障注入。别家比的是「谁更快」,它先回答「会不会悄悄漏报错」。
- 有人长期维护。大家对 slopfork 最大的疑问是「以后谁跟上游」,tsrs 的回答是 Cloudflare、VoidZero 和 Oxc 团队接手,用 agent 每天跟上游同步(和他们维护 Vinext 跟 Next.js 同步的办法一样)。作者在博客里说得直白:他想让项目在「以做 Rust 工具为生的人」手里,而不是「一个有正职的人」手里。
- 背后的人有自己的理由。Go 编成 Wasm 要把垃圾回收一起带上,Rust 不用;Cloudflare 要在 Workers 沙箱和浏览器里跑完整的 TS 工具链,这是它投入的商业动机。HN 上有人看懂了这一点:「它不是要做一个更快的编译器,是要一个能在纯 Wasm 沙箱里跑的编译器。」
所以先后要分清:star 爆发的直接原因是 Cloudflare 的背书和 TS 团队站台,不是代码本身。作者自己发帖 4 分,Cloudflare 发博客当天上 HN 首页,这个对比说明了一切。
有多少人知道
很多。Cloudflare 官方博客首发、HN 437 分、socket.dev 和多家技术博客解读、YouTube 有视频,Theo 那个项目还上了 The Register。前端圈子里关心工具链的人基本都听说了,跟风的移植仓库已经有一串。
如果是你
判断:C。tsrs 的做法很值得学,但再做一个「AI 移植 TypeScript」不划算。它的 star 来自 Cloudflare 接手和 TS 团队站台,这个起点跟进者借不来;这个题目一个月里已经有四五个同类,Cloudflare 还在把 tsrs 和 tsc-rs 合并成一个。
适合谁:手里有大仓库、真被某个工具的速度或内存卡住的工程师;熟某门系统语言、能读懂 profile、愿意把上游测试集跑通的人。
不适合谁:想靠「我也让 AI 移植了一个 XX」拿 star 的人。这个标题现在的默认反应是「又一个 slopfork」,没有测试证明、没人维护,一个月后就没人看。
怎么做,按值得程度排:
- 换一个还没人移植、但确实慢的工具。挑条件:上游有大而全的官方测试集(能当规格)、用户有真实的速度或内存痛点、换语言能带来 Wasm 或嵌入之类的新用法。照 tsrs 的规矩来:钉死上游版本,逐字节比对输出,公开跑分方法,写一道合入门槛。拿到 star 的关键是第一天就把兼容率摆出来(比如「13,462 个用例里差 4 个」)。
- 做 tsrs 周边。它刚起步、PR 不开放,但 issue 开着:各种框架和 monorepo 工具的接入说明、CI 模板、拿你自己的大仓库做的对比跑分、编辑器插件。star 天花板低,但几乎不用赌。
- 把方法本身写成工具或教程。「怎么用 agent 做一次可验证的大规模移植」:测试集当规格、按包并行、逐字节 diff、合入门槛、决策记录防止 agent 重复试同一招。做成一个可复用的模板仓库,比再做一个移植更容易被收藏。已经有人在做类似的移植工具,要做得更具体,别泛泛而谈。
怎么获客:先在自己团队或一家有大仓库的公司里真用起来,拿到「原来 X 秒、现在 Y 秒」的硬数字,写一篇像 Owner 那样有人物、有时间、有数字的工程博客;然后去找对口的组织或上游团队托管或背书,让他们发。tsrs 证明了:同一个项目,作者自己发 4 分,机构发 437 分。没有这层关系,就把 HN 首帖写成一个完整的故事,而不是一行「我移植了 XX」。
什么时候之前:第 1 条越早越好,推断在 2027 年上半年之前。「AI 大规模移植」这个话题还在热,各大工具都还没被移植完;等每个热门工具都有两三个 AI 版本,新的移植就只剩噪音。
什么情况说明看错了:① 如果一个没有机构背书的个人移植,一个月内也拿到上千 star,说明「AI 移植 + 测试证明」本身就能带流量,第 1 条值得更快、更大胆地做;② 如果 tsrs 和 tsc-rs 合并后两三个月内 star 增速重新回到每天几百,说明这个方向的天花板比这里估的高,做周边(第 2 条)的价值也会跟着涨;③ 如果年底前 TS 7.x 官方版在内存上追平 tsrs,说明「换语言重写」的理由在变弱,第 1 条选题时要更挑剔,只选换语言能带来新用法(比如 Wasm)的工具。
数据与出处
GitHub:oxc-project/tsrs 仓库页、README、提交记录、发布记录、每日 star(10-17 到 11-06);同类仓库 star(11-06)。npm 下载统计:tsrs、tsc-rs、@typescript/native-preview(截至 11-05)。博客:building.owner.com/tsrs(10-19)、blog.cloudflare.com/typescript-rust-port(10-20)、blog.cloudflare.com/voidzero-joins-cloudflare(6-04)。HN:「Tsrs: A Port of TypeScript to Rust」(10-20,437 分)及评论,tsc-rs 帖(119 分)。媒体与解读:socket.dev、flaviocopes.com、The Register(10-15)。写「推断」「未核实」的地方是推断和未核实。
研究底稿:竞品表、获客证据、完整研究报告
- 竞品
名字 在哪 上线 规模 它和这家不同在哪 microsoft/typescript-go(TS 7 / tsgo) 开源 2024-09 26k star;@typescript/native-preview 一周 682 万次下载 官方 Go 版;tsrs 照它逐行移植,同配置号称快 8 倍、内存少约 70%,还能编成轻量 Wasm pingdotgg/ts-rust(tsc-rs,Theo Browne) 开源 2026-10-07 1,623 star;npm 一周 20.8 万次;HN 119 分 同样是 AI 写的移植,但只是个人项目、没有机构维护;正在和 tsrs 商量合并 dudykr/stc 开源 2020-12 5.7k star,已停更 手写、从零重新实现,不是忠实移植 kaleidawave/ezno 开源 2023-02 2.7k star 重新设计的检查器,不追求和 tsc 完全一致 tsgo-rs / bun check 开源 2026 未核实 HN 评论里提到的同类,背后没有 Cloudflare / TS 团队的背书 - 用户从哪来
- 查实 大公司官方博客背书:blog.cloudflare.com/typescript-rust-port 2026-10-20,Cloudflare 和 VoidZero 宣布接手,写明和 TS 团队合作
- 查实 HN 首页:item 50165953,437 分、213 评论(10-20);作者 10-01 自己发的首帖只有 4 分
- 查实 作者工程博客讲故事:building.owner.com/tsrs 10-19:'零代码、Opus 一夜移植、99.97% 基线一致'
- 查实 科技媒体 / 二手内容 / YouTube:socket.dev、flaviocopes.com、rustify.rs、YouTube 'TypeScript Got Ported To Rust' 视频
- 推断 Oxc 生态和 X 上的大号转发:oxc-project 3 万+ star,oxlint 每周 4,400 万下载;X 上具体是谁转的,x-radar 没查到
- 查实 借 tsc-rs 的话题:Theo 的 tsc-rs 10-07 先火(HN、The Register),tsrs 的 HN 评论里有人以为它就是 Theo 那个
oxc-project/tsrs 研究报告(2026-11-06)
一句话:tsrs 是 TypeScript 7(微软 Go 版 tsgo)类型检查器和语言服务的 Rust 逐行移植,号称能直接替换。作者 Max Schwenk(Owner.com)在 2026-09-30 一晚上用 Claude Opus 5.5 移植出来,自己一行代码没写;10-20 Cloudflare 和 VoidZero 宣布接手,并入 Oxc 工具链。
1. 数据
- GitHub:2026-10-01 建库(最早在 maschwenk/tsrs,后来转到 oxc-project),到 11-06 有 2,866 star(数据卡),GitHub API 实时 2,933。日增最多的一天是 10-22,+965。往前:10-20 376 → 10-21 686 → 10-22 1,651 → 10-23 1,927,之后每天 +30~150。近 7 天 +284,前 7 天 +655(数据卡 / github 库 repo_day)。
- npm:
tsrs这个包名原来是 JiangWeixian 的,让了出来,现在维护人是 Boshen。近 30 天下载 9,453,716 次。10-22 之后每天 42 万~107 万次,11-05 是 1,071,991 次(npm downloads API)。这比 Theo 的tsc-rs一周 20.8 万次高得多,也已经和微软@typescript/native-preview一周 682 万次是同一个量级。为什么下载这么高还没核实:可能是 CI 里装、各平台二进制重复算、镜像同步。我没找到 oxlint 或 vite-plus 依赖它。 - 版本发得很勤:v0.18.0(10-19)→ v0.20.0(10-26,加了
--fast模式)→ v0.21.0(11-03)→ v0.22.0(11-05)。 - 贡献者:maschwenk 1,321 次提交,Boshen(Oxc 作者)357 次,walkerdb 51 次。PR 不对外开放,README 里写着:"Pull requests remain closed because we don't have the bandwidth"。
2. 竞品
| 项目 | 类型 | 上线 | 规模 | 和 tsrs 的区别 |
|---|---|---|---|---|
| microsoft/typescript-go(TS 7,tsgo) | 官方/开源 | 2024-09 建库,2026 年发 7.0 | 26,095 star;npm native-preview 一周 682 万次 | 官方的 Go 版。tsrs 就是照它逐行移植的,声称同样配置下快 8 倍、内存少约 70%;另外能编成 Wasm,Go 带 GC,编 Wasm 吃亏 |
| pingdotgg/ts-rust(tsc-rs,Theo Browne) | 开源 | 2026-10-07 | 1,623 star;npm 一周 20.8 万次;HN 119 分 | 同样是 AI 写的 Rust 移植(Theo 自己说代码一行没读,The Register 报道花了 2.4 万美元 token),但背后没有机构维护;媒体报的是约 1.9 倍提速。Cloudflare 的博客说正在和 Theo 商量把两者合成一个包 |
| dudykr/stc | 开源 | 2020-12 | 5,695 star | 手写的 Rust 类型检查器,从零重写、不是移植,作者已经停更。路线是重新实现,不是逐行跟官方 |
| kaleidawave/ezno | 开源 | 2023-02 | 2,734 star | 重新设计的检查器,带实验特性,不追求和 tsc 完全一致 |
tsgo-rs、bun check | 开源/工具功能 | 2026 | 规模未核实 | HN 评论里提到的另外两个同类(用户 Leynos 说"So that's three now") |
| 各种 AI 移植小仓库(ferrotype/tsr、Zapdev-labs 等) | 开源 | 2026-09~10 | 个位数 star | Cloudflare 的博客叫它们 slopforks;r/typescript 有专帖吐槽这一波 vibecoded 移植 |
结论:一个月里冒出了好几个"AI 把 TS 移植到 Rust"的项目,tsrs 不是最早的。Theo 的 tsc-rs 名气起得更早(10-07),但 star 被 tsrs 反超了。
3. 增长:用户从哪来
- 10-19 Owner.com 工程博客 "tsrs"(building.owner.com/tsrs):作者讲了自己的痛点——3.7 万个文件的单体仓库,TS 7 检查一遍要 19 GiB 内存、80 秒,几个 agent 一起跑会把 36G 的 Mac 卡死。还讲了"Opus 5.5 一夜移植,零代码,第一次跑 99.97% 的基线逐字节一致"的经过,话题性很强。
- 10-20 Cloudflare 官方博客 "Introducing tsrs"(blog.cloudflare.com/typescript-rust-port):联名的是 Cloudflare 和 VoidZero(Vite / Oxc 团队,2026-06-04 被 Cloudflare 收购),写明"in close collaboration with the TypeScript team",并给出"8 倍、内存少 70%"的标题数字。这是最主要的放大器。
- HN 首页:10-20 13:18 的帖子 "Tsrs: A Port of TypeScript to Rust",437 分、213 条评论(HN API)。同一天还有 Oxc 自己发的帖(5 分)。10-01 作者发的首帖只有 4 分,当时没人注意。
- Reddit:r/javascript 有转帖;r/typescript、r/theprimeagen 在讨论这一波 AI 移植。
- 科技媒体和二手内容:socket.dev 写了报道,Flavio Copes 做了深度解读,rustify.rs、flowtivity.ai 等 SEO 站跟着写,YouTube 也有"TypeScript Got Ported To Rust... 3x Faster Than Go"这类视频(和 tsc-rs 混在一起讲)。
- Oxc 组织本身的分发:oxc-project 名下一共 3 万+ star,oxlint 每周 npm 下载 4,429 万次,Boshen 和 VoidZero 在 X 上本来就有受众。X 上具体是谁转的,x-radar 本地语料里没查到(返回 0 条),未核实。
star 曲线:10-20 博客和 HN 当天只涨了几十到几百,10-21~10-22 才集中爆发(+310、+965)。估计是二次传播(X、Reddit、newsletter、视频)加上快照时差,没定位到具体是哪个帖子。
4. 它凭什么起来
- 痛点真实,时机正好:TS 7 的 Go 版已经快了 10 倍,但大仓库的内存还是瓶颈;AI agent 要在本机并行跑 typecheck,问题被放大了。Owner 的博客把这个痛点讲得很具体(19 GiB、50 GiB)。
- "AI 一夜移植编译器"的故事:正赶上 Opus 5.5 发布、Bun 从 Zig 移植到 Rust 之后,"AI 能做大规模移植"本身就是热门话题。Theo 的 tsc-rs 先在 10-07 把话题点燃,tsrs 等于接着这波热度上场。
- 背书拉开了差距:同样是 AI 移植,tsrs 有 Cloudflare 加 VoidZero 接手维护、和 TS 团队合作、部分优化已经回馈进 TS 7.1(博客说 7.1 beta 快了 2.5 倍,一部分来自 tsrs)。这正好回答了大家对 slopfork 最大的质疑:"以后谁来维护"。
- 跑分讲究:和 TS 团队一起定了同配置对比,还放了 benchmark 方法和兼容性文档。Cloudflare 的博客专门点了别家"用更大的机器、不同参数刷分"。
- 能直接用:
pnpm add -D tsrs就能替换,有在线 playground,还有 Wasm 包(@tsrs/wasm),版本一周发两次。
5. 差异化
同类项目都在比"谁更快"。tsrs 的不同是忠实移植加机构维护:钉死上游某一次提交,算法、诊断都和上游一样;维护交给 Cloudflare、VoidZero 和 Oxc;拿 15,197 个 conformance 用例当规格;用 agent 每天跟上游同步(沿用 Vinext 跟 Next.js 同步的办法)。另外 Rust 能编成 Wasm,可以在浏览器、Workers 沙箱里跑完整的 TS 工具链,这是 Go 版不好做的,也是 Cloudflare 的商业动机。 这个差异化正是它跑出来的原因:在这一波 AI 移植里,单论技术谁都能做出来,真正稀缺的是"可信、有人长期维护"。star 爆点和 Cloudflare 宣布接手完全同步,作者自己发的首帖才 4 分,可见靠的是背书,不是代码本身。
6. 能见度与跟风
- 能见度:已经被广泛讨论。Cloudflare 官方博客、HN 437 分、socket.dev、The Register(报的是 Theo 那个)、YouTube 都写过。不是小众项目。
- 跟风:已经有一串 AI 移植仓库(tsc-rs、tsgo-rs、ferrotype/tsr、Zapdev-labs 的几个用 GLM/SWE 模型做的移植),还有 ArchAstro/rustify 这种"教你做 TS→Rust 模块级移植"的工具。
7. 能借鉴的
- 做"AI 大规模移植"时,把上游的测试集当规格(conformance 用例),钉死一个上游版本、逐字节比对输出,质量就可以证明。
- 立一道定量的合入门槛(指令数降 1%、耗时降 2%、内存降 5%,而且输出逐字节一致),防止 agent 无休止地做微优化。
- 个人做出的原型交给有分量的机构托管,再由机构官方博客首发,传播效果远超作者自己发 HN(4 分对 437 分)。
- 包名可以找原主人转让(tsrs 包名就是转来的)。
8. 还不确定的
- npm 每天百万级下载的真实构成(CI、镜像、平台二进制)没核实,不能当成真实用户数。
- 10-22 爆点具体是哪条 X 帖或哪个视频带起来的,没定位到。
- 和 tsc-rs 合并的进展,以及微软 TS 团队对 Rust 版的长期态度。
- 准确性:默认模式下诊断的顺序等和上游还有差异;离 1.0 稳定版还有距离。
出处
- github.com/oxc-project/tsrs (README、contributors、releases,GitHub API 2026-11-06)
- blog.cloudflare.com/typescript-rust-port/ (2026-10-20)
- building.owner.com/tsrs (2026-10-19)
- news.ycombinator.com/item?id=50165953 (437 分 / 213 评论);news.ycombinator.com/item?id=50000676 (tsc-rs,119 分)
- www.reddit.com/r/javascript/comments/1xas5pu/ ;www.reddit.com/r/typescript/comments/1x0glk8/
- socket.dev/blog/cloudflare-typescript-rust ;flaviocopes.com/tsrs/ ;www.theregister.com/devops/2026/10/15/24000-ai-experiment-po…
- blog.cloudflare.com/voidzero-joins-cloudflare (2026-06-04 收购)
- npm downloads API(tsrs、tsc-rs、@typescript/native-preview、oxlint,截至 2026-11-05)
- 内部 github 库 repo_day(2026-10-28 / 11-05 的 star)