什么值得做
oxc-project/tsrs · oxc-project

凌晨 1:30 交给 AI,醒来一个 Rust 版 TypeScript:tsrs 的 2,900 star 是 Cloudflare 给的

它是什么 把微软 Go 版 TypeScript 7 的类型检查器逐行移植成 Rust 的开源项目,装上就能替换,更快、更省内存,还能在浏览器里跑。

为什么火了 大仓库跑类型检查动辄几十 GB 内存的痛点是真的;但真正让它爆的是 Cloudflare 和 VoidZero 官方博客宣布接手、TypeScript 团队公开站台,上了 HN 首页。

C你可以怎么跟 别再移植 TypeScript;学它的方法——拿上游测试集当规格、逐字节比对输出——去移植另一个还没人做、确实慢的工具,拿到真实跑分后找对口的机构或上游背书首发。

C 级:方法很值得学,但 star 来自 Cloudflare 接手和 TS 团队背书,跟进者借不来;同题目一个月已有四五个同类、已被广泛报道,正面跟进不划算。 已公开 / 被广泛讨论
数据(每天更新) · 建库 2026-10-01 · 2,990 星 · 7 天 +332
GitHub · 星数
01k2k3k10-0910-1710-2410-3111-083k
数据 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-17147—
10-20376+58
10-21686+310
10-221,651+965
10-231,927+276
10-24 到 11-052,065 → 2,773每天 +30~150
11-062,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-092.6 万 star官方 Go 版,tsrs 就是照它移植的
pingdotgg/ts-rust(tsc-rs,Theo Browne)2026-101,623 star,npm 一周 20.8 万次,HN 119 分同样是 AI 写的 Rust 移植,比 tsrs 先出名;个人项目,The Register 报道花了约 2.4 万美元 token。Cloudflare 说正在和 Theo 商量合并
tsgo-rs、bun check2026未核实HN 评论原话:「So that's three now」
dudykr/stc2020-125,695 star,已停更手写、从零重写,不是逐行跟上游
kaleidawave/ezno2023-022,734 star重新设计的检查器,不追求和 tsc 一致
一堆 AI 移植小仓库2026-09~10个位数 starCloudflare 博客管这类叫 slopfork;r/typescript 有专帖吐槽

HN 上也有人直接说「你们都在做同一个东西」。技术上,「用前沿模型几天移植一个编译器」已经不稀奇,Cloudflare 的博客自己也这么写。

凭什么是它

同样是 AI 移植,tsrs 和别家的差别不在代码,在三件事:

  1. 忠实,而且能证明。钉死上游提交、拿官方测试集当规格、逐字节比对输出、CI 里有确定性检查和故障注入。别家比的是「谁更快」,它先回答「会不会悄悄漏报错」。
  2. 有人长期维护。大家对 slopfork 最大的疑问是「以后谁跟上游」,tsrs 的回答是 Cloudflare、VoidZero 和 Oxc 团队接手,用 agent 每天跟上游同步(和他们维护 Vinext 跟 Next.js 同步的办法一样)。作者在博客里说得直白:他想让项目在「以做 Rust 工具为生的人」手里,而不是「一个有正职的人」手里。
  3. 背后的人有自己的理由。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」,没有测试证明、没人维护,一个月后就没人看。

怎么做,按值得程度排:

  1. 换一个还没人移植、但确实慢的工具。挑条件:上游有大而全的官方测试集(能当规格)、用户有真实的速度或内存痛点、换语言能带来 Wasm 或嵌入之类的新用法。照 tsrs 的规矩来:钉死上游版本,逐字节比对输出,公开跑分方法,写一道合入门槛。拿到 star 的关键是第一天就把兼容率摆出来(比如「13,462 个用例里差 4 个」)。
  2. 做 tsrs 周边。它刚起步、PR 不开放,但 issue 开着:各种框架和 monorepo 工具的接入说明、CI 模板、拿你自己的大仓库做的对比跑分、编辑器插件。star 天花板低,但几乎不用赌。
  3. 把方法本身写成工具或教程。「怎么用 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)。写「推断」「未核实」的地方是推断和未核实。

GitHub 仓库 ↗

研究底稿:竞品表、获客证据、完整研究报告
竞品
名字在哪上线规模它和这家不同在哪
microsoft/typescript-go(TS 7 / tsgo)开源2024-0926k star;@typescript/native-preview 一周 682 万次下载官方 Go 版;tsrs 照它逐行移植,同配置号称快 8 倍、内存少约 70%,还能编成轻量 Wasm
pingdotgg/ts-rust(tsc-rs,Theo Browne)开源2026-10-071,623 star;npm 一周 20.8 万次;HN 119 分同样是 AI 写的移植,但只是个人项目、没有机构维护;正在和 tsrs 商量合并
dudykr/stc开源2020-125.7k star,已停更手写、从零重新实现,不是忠实移植
kaleidawave/ezno开源2023-022.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.026,095 star;npm native-preview 一周 682 万次官方的 Go 版。tsrs 就是照它逐行移植的,声称同样配置下快 8 倍、内存少约 70%;另外能编成 Wasm,Go 带 GC,编 Wasm 吃亏
pingdotgg/ts-rust(tsc-rs,Theo Browne)开源2026-10-071,623 star;npm 一周 20.8 万次;HN 119 分同样是 AI 写的 Rust 移植(Theo 自己说代码一行没读,The Register 报道花了 2.4 万美元 token),但背后没有机构维护;媒体报的是约 1.9 倍提速。Cloudflare 的博客说正在和 Theo 商量把两者合成一个包
dudykr/stc开源2020-125,695 star手写的 Rust 类型检查器,从零重写、不是移植,作者已经停更。路线是重新实现,不是逐行跟官方
kaleidawave/ezno开源2023-022,734 star重新设计的检查器,带实验特性,不追求和 tsc 完全一致
tsgo-rs、bun check开源/工具功能2026规模未核实HN 评论里提到的另外两个同类(用户 Leynos 说"So that's three now")
各种 AI 移植小仓库(ferrotype/tsr、Zapdev-labs 等)开源2026-09~10个位数 starCloudflare 的博客叫它们 slopforks;r/typescript 有专帖吐槽这一波 vibecoded 移植

结论:一个月里冒出了好几个"AI 把 TS 移植到 Rust"的项目,tsrs 不是最早的。Theo 的 tsc-rs 名气起得更早(10-07),但 star 被 tsrs 反超了。

3. 增长:用户从哪来

  1. 10-19 Owner.com 工程博客 "tsrs"(building.owner.com/tsrs):作者讲了自己的痛点——3.7 万个文件的单体仓库,TS 7 检查一遍要 19 GiB 内存、80 秒,几个 agent 一起跑会把 36G 的 Mac 卡死。还讲了"Opus 5.5 一夜移植,零代码,第一次跑 99.97% 的基线逐字节一致"的经过,话题性很强。
  2. 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%"的标题数字。这是最主要的放大器。
  3. HN 首页:10-20 13:18 的帖子 "Tsrs: A Port of TypeScript to Rust",437 分、213 条评论(HN API)。同一天还有 Oxc 自己发的帖(5 分)。10-01 作者发的首帖只有 4 分,当时没人注意。
  4. Reddit:r/javascript 有转帖;r/typescript、r/theprimeagen 在讨论这一波 AI 移植。
  5. 科技媒体和二手内容:socket.dev 写了报道,Flavio Copes 做了深度解读,rustify.rs、flowtivity.ai 等 SEO 站跟着写,YouTube 也有"TypeScript Got Ported To Rust... 3x Faster Than Go"这类视频(和 tsc-rs 混在一起讲)。
  6. 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 稳定版还有距离。

出处

文章由 AI 根据公开数据和我们每天采集的数据写成,数字带出处,推断已标明