Stringers
oxc-project/tsrs · oxc-project

Handed to AI at 1:30 a.m., woke up to a Rust TypeScript: tsrs's 2,900 stars came from Cloudflare

What it is An open-source project that ports Microsoft's Go-based TypeScript 7 type checker to Rust line by line. It drops in as a replacement, runs faster with less memory, and can run in the browser.

Why it took off The pain of large repos needing tens of GB of memory for type checking is real. But what really blew it up was the official Cloudflare and VoidZero blog posts announcing they were taking it over, with the TypeScript team publicly backing it, and it hit the HN front page.

CHow you can follow Stop porting TypeScript. Take the method, using the upstream test suite as the spec and byte-comparing outputs, and apply it to another slow tool nobody has ported yet. Get real benchmarks, then find a fitting organization or upstream backer for the launch.

C-grade: the method is worth learning, but the stars came from Cloudflare's takeover and the TS team's backing, which followers can't borrow. Within a month there were already four or five similar projects, widely covered, so head-on imitation isn't worth it. Public / widely discussed
Data (updated daily) · Repo created 2026-10-01 · 2,990 stars · 7 days +332
GitHub · stars
01k2k3k10-0910-1710-2410-3111-083k
Data 2026-10-09 → 2026-11-08 (31 days, 31 observations). Points before 10-28 come from deeply / archive backfill, not every day has one

Max Schwenk. One night in Sep 30, he had Claude Opus 5.5 port Microsoft's Go version of TypeScript to Rust line by line, writing none of the code himself. In Oct 1, his own HN post got only 4 points. Three weeks later Cloudflare and VoidZero announced they were taking it over, and the project gained 1,300 stars in two days. The same month, several other "AI ports TS to Rust" projects appeared, and only this one took off. Below: why it caught on, where the stars came from, which moves are worth learning, and why making another copy of the same thing isn't recommended.

A 19 GiB type check

Max works at Owner.com, a restaurant SaaS company. Their backend monorepo, Olympus, has about 37k TypeScript files. A single-threaded type check with TypeScript 7.0 (the Go rewrite Microsoft shipped last year, also called tsgo) takes 19 GiB of memory and 80 seconds. Adding lint and the language service pushes it past 50 GiB. In their engineering blog 10-19, they wrote that even on a $3,000 MacBook with 36 GiB of memory, engineers don't dare run several agents at once or the machine locks up. They tried having agents "take turns," written into the rules file, but "the agents don't always listen."

In Sep 30, he came up with an idea:

"I wonder if Opus 5.5 can port the TypeScript compiler to Rust in one go."

His rules were strict: algorithms, function structure, evaluation order, and error messages all match upstream; pin to one specific upstream commit; no redesigning; one Go package maps to one Rust crate; use TypeScript's own 15,197 conformance cases as the spec. Around 1:30 a.m., he set 20 sub-agents running in parallel all night. The next morning, the first end-to-end run had 78% of the error baseline byte-identical. After adding type printing, only 4 of 13,462 differed, with 99.97% consistency.

Then came weeks of "hill climbing": change one thing at a time, compare output against the Go version, benchmark, and throw away anything that doesn't meet the bar. The repo spells out a merge gate: cut single-thread instruction count by 1%, or wall time by 2%, or peak memory by 5%, and the output must match byte for byte, or the change isn't accepted. On Olympus, with 8 check threads, tsrs takes 5.8 seconds and 7.5 GiB, while tsgo takes 7.0 seconds and 56.6 GiB (49.8 GiB). Owner's blog, author's own measurements.

What it is

tsrs is a Rust port of the TypeScript 7 type checker and language service. pnpm add -D tsrs installs it as a drop-in replacement for tsc / tsgo for --noEmit checks. It also ships a Wasm package that runs in the browser and an online playground. The repo was created 10-01 under the author's personal account and has since moved to oxc-project (the org behind oxlint and Rolldown), Apache-2.0. In the commit history, the author has 1,321 commits and Oxc's Boshen has 357. PRs are closed to outside contributors, and the README says the maintainers "don't have the bandwidth." Releases have been frequent: v0.18 (10-19) through v0.22 (11-05), with a --fast mode added along the way.

Which two days the stars came in

DatestarAdded that day
10-17147—
10-20376+58
10-21686+310
10-221,651+965
10-231,927+276
10-24 to 11-052,065 → 2,773Daily +30~150
11-062,866+93

(GitHub daily stars; 11-06 repo page live 2,933)

10-01 The author posted it on HN himself: 4 points, no one paid attention. The turn came from two blog posts:

  • 10-19, Owner engineering blog: the full story behind the "19 GiB, handed to AI overnight, woke up 99.97% done" line above. Strong narrative, but it's one company's engineering blog, so its spread is limited.
  • 10-20, Cloudflare's official blog "Introducing tsrs": Cloudflare and VoidZero (the company behind Vite / Oxc, which Cloudflare acquired) co-published it, stating "we work closely with the TypeScript team" and "we are not forking TypeScript". The headline numbers were "up to 8x faster, about 70% less memory". It hit the HN front page the same day, with 437 points and 213 comments.

The most weighty comment in the HN thread came from Daniel Rosenwasser of the TypeScript team: he said they were studying with the tsrs maintainers why it's fast, that part of TS 7.1's speed and memory gains "actually came from tsrs", and congratulated "the tsrs team for turning this into a formal project". When the official team backs you in public, for an AI-written port that does more than any benchmark.

Stars really took off on 10-21 and 10-22, a day or two after the blog and HN. My inference is secondary spread on X, Reddit, newsletters and YouTube (socket.dev and Flavio Copes wrote explainers, and there are YouTube videos like "TypeScript Got Ported To Rust"), but I didn't pin down which one pushed it. Heat has since cooled: +284 in the last 7 days, +655 over the first 7 days.

On npm, tsrs got about 9.45M downloads in the last 30 days, and since 10-22 it has run 420k to 1.07M per day (npm download stats, as of 11-05). That's already the same order of magnitude as Microsoft's official @typescript/native-preview, at 6.82M a week. How much of that is CI, mirrors and per-platform binaries counted repeatedly, you can't tell from outside, so don't read it as a user count.

In the same month, several people were doing the same thing

ProjectLaunchedScale (11-06)How tsrs differs
microsoft/typescript-go(TS 7)2024-0926k starsThe official Go version, which tsrs ported line by line
pingdotgg/ts-rust(tsc-rs,Theo Browne)2026-101,623 stars, 208k npm downloads a week, 119 points on HNAlso an AI-written Rust port, and it got famous before tsrs. A personal project; The Register reported it cost about $24k in tokens. Cloudflare says it's in talks with Theo about merging
tsgo-rs, bun check2026Not verifiedDirect HN comment: "So that's three now"
dudykr/stc2020-125,695 stars, no longer updatedHand-written, rewritten from scratch, not tracking upstream line by line
kaleidawave/ezno2023-022,734 starRedesigned checker that doesn't aim to match tsc
A pile of small AI port repos2026-09~10Single-digit starsCloudflare's blog calls this kind a slopfork; r/typescript has dedicated threads roasting it

Some on HN also said outright, "you're all building the same thing." Technically, "porting a compiler in a few days with a frontier model" is no longer rare, as Cloudflare's own blog says.

Why this one

AI ports aren't all alike. tsrs differs from the others not in the code, but in three things:

  1. Faithful, and provably so. It pins the upstream commit, uses the official test suite as the spec, compares output byte for byte, and has deterministic checks and fault injection in CI. Others compete on "who's faster"; tsrs first answers "will it quietly miss errors".
  2. Someone maintains it long-term. The biggest doubt about slopforks is "who keeps up with upstream later". tsrs's answer: Cloudflare, VoidZero and the Oxc team take it over, syncing with upstream daily using agents (the same approach they use to keep Vinext in sync with Next.js). The author says it plainly in the blog: he wants the project in the hands of "people who make a living building Rust tools", not "someone with a day job".
  3. The people behind it have their own reasons. Compiling Go to Wasm drags the garbage collector along; Rust doesn't. Cloudflare wants the full TS toolchain running inside Workers sandboxes and browsers, and that's the commercial motive for its investment. Someone on HN got this: "It's not about making a faster compiler; it's about a compiler that can run in a pure Wasm sandbox."

So be clear on the order: the direct cause of the star surge was Cloudflare's backing and the TS team's endorsement, not the code itself. The author's own HN post got 4 points, while Cloudflare's blog reached the HN front page the same day. That contrast says it all.

How many people know about it

Plenty. Cloudflare's official blog broke it, HN hit 437 points, socket.dev and several tech blogs explained it, there are YouTube videos, and Theo's project even got covered by The Register. Anyone in front-end circles who cares about toolchains has basically heard of it, and a string of copycat port repos has followed.

If it were you

Verdict: C. tsrs's approach is worth learning from, but building another "AI-ported TypeScript" isn't worth it. Its stars came from Cloudflare taking it over and the TS team's endorsement, a starting point latecomers can't borrow. Within a month this topic already has four or five peers, and Cloudflare is merging tsrs and tsc-rs into one.

Who it suits: engineers with a big codebase who are genuinely held back by a tool's speed or memory; people fluent in a systems language who can read a profile and are willing to get the upstream test suite running.

Who it doesn't suit: people hoping to get stars with "I also had AI port XX". The default reaction to that headline now is "another slopfork": no test proof, no maintainer, and nobody looks at it a month later.

How to do it, ranked by how worthwhile:

  1. Pick a slow tool nobody has ported yet. Criteria: upstream has a large, comprehensive official test suite (usable as the spec), users have real speed or memory pain, and a language switch enables something new like Wasm or embedding. Follow tsrs's rules: pin the upstream version, compare output byte for byte, publish the benchmark method, and write a merge gate. What gets stars is showing the compatibility rate on day one (e.g. "4 of 13,462 cases differ").
  2. Build around tsrs. It's just starting and PRs aren't open, but issues are: integration guides for various frameworks and monorepo tools, CI templates, benchmarks on your own big repos, editor plugins. The star ceiling is low, but there's almost no bet involved.
  3. Write the method up as a tool or tutorial. "How to run a verifiable large-scale port with an agent": test suite as spec, parallel by package, byte-level diff, merge gate, decision log to stop the agent retrying the same dead end. Make it a reusable template repo; that's easier to bookmark than another port. Others are already building similar port tools, so get specific rather than generic.

How to get users: first use it for real on your own team or at a company with a big warehouse, and get hard numbers like "was X seconds, now Y seconds." Then write an engineering blog post like Owner's, with people, timeline and numbers. Next, find a relevant org or upstream team to host or back it, and have them post it. tsrs proves the point: the same project got 4 points posted by its author and 437 points posted by an org. Without that backing, write your HN launch post as a full story, not a one-liner like "I ported XX."

Ship before when: the earlier the better for item #1, estimated before the first half of 2027. The "AI migration" trend is still hot and most tools haven't been ported yet. Once every popular tool has two or three AI versions, new ports are just noise.

What would show I'm wrong: ① If an unbacked personal port also reaches a thousand stars within a month, it means "AI port + test proof" alone draws traffic, and entry 1 is worth doing sooner and bolder; ② If star growth for tsrs and tsc-rs after the merge climbs back to several hundred a day within two to three months, the ceiling for this direction is higher than estimated here, and the value of building around it (entry 2) rises too; ③ If the official TS 7.x matches tsrs on memory before year-end, the case for "rewrite in another language" is weakening, and entry 1 needs more selectivity, picking only tools where a language switch brings something new (like Wasm).

Data and sources

GitHub: the oxc-project/tsrs repo page, README, commit history, release history, daily stars (10-17 to 11-06); peer repo stars (11-06). npm download stats: tsrs, tsc-rs, @typescript/native-preview (as of 11-05). Blogs: 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 points) and comments, tsc-rs thread (119 points). Media and explainers: socket.dev, flaviocopes.com, The Register (10-15). Where it says "inference" or "unverified", that's inference or unverified.

GitHub repo ↗

Research notes: competitor table, acquisition evidence, full research report
Competitors
NameWhereLaunchedScaleHow it differs from this one
microsoft/typescript-go(TS 7 / tsgo)Open source2024-0926k stars; @typescript/native-preview 6.82M downloads a weekThe official Go version; tsrs ports it line by line, claiming 8x faster and about 70% less memory on the same config, and can be compiled to lightweight Wasm
pingdotgg/ts-rust(tsc-rs,Theo Browne)Open source2026-10-071,623 stars; 208k npm downloads a week; 119 points on HNAlso an AI-written port, but a personal project with no institutional maintainer; reportedly in talks to merge with tsrs
dudykr/stcOpen source2020-125.7k stars, no longer updatedHand-written, reimplemented from scratch, not a faithful port
kaleidawave/eznoOpen source2023-022.7k starRedesigned checker that doesn't aim for full compatibility with tsc
tsgo-rs / bun checkOpen source2026Not verifiedPeers mentioned in HN comments, with no Cloudflare / TS team backing
Where users come from
  • Verified Big-company official blog backing: blog.cloudflare.com/typescript-rust-port 2026-10-20, Cloudflare and VoidZero announced the takeover and stated cooperation with the TS team
  • Verified HN front page: item 50165953,437 with 213 points and 10-20 comments; the author's own first post only got 10-01 points, 4
  • Verified Author's engineering blog tells the story: building.owner.com/tsrs 10-19: 'zero hand-written code, Opus ported it overnight, 99.97% baseline match'
  • Verified Tech media / secondary content / YouTube: socket.dev, flaviocopes.com, rustify.rs, YouTube 'TypeScript Got Ported To Rust' video
  • Inference Oxc ecosystem and big X accounts reposting: oxc-project 30k+ stars, oxlint 44M downloads a week; I didn't find which X accounts reposted it
  • Verified Rode on the tsc-rs buzz: Theo's tsc-rs 10-07 went viral first (HN, The Register), and some HN commenters on tsrs thought it was Theo's project

oxc-project/tsrs research report (2026-11-06)

In one line: tsrs is a Rust line-by-line port of the TypeScript 7 (Microsoft's Go-based tsgo) type checker and language service, claimed to be a drop-in replacement. The author, Max Schwenk (Owner.com), ported it in 2026-09-30 one night using Claude Opus 5.5, writing none of the code himself. 10-20 Cloudflare and VoidZero announced they would take it over and merge it into the Oxc toolchain.

1. Data

  • GitHub: 2026-10-01 repo created (originally maschwenk/tsrs, later moved to oxc-project); by 11-06 it had 2,866 stars (data card), live from the GitHub API 2,933. The biggest single-day gain was 10-22, +965. Before that: 10-20 376 → 10-21 686 → 10-22 1,651 → 10-23 1,927, then roughly +30~150 per day. Last 7 days +284, first 7 days +655 (data card / github repo_day).
  • npm:tsrs The package name used to belong to JiangWeixian; they handed it over, and the maintainer is now Boshen. ~30 days of downloads: 9,453,716 times. Since 10-22, 420k–1.07M per day, and 11-05 was 1,071,991 times (npm downloads API). That's far above Theo's tsc-rs at ~208k a week, and in the same range as Microsoft's @typescript/native-preview at ~6.82M a week. Why downloads are this high is unverified: it could be CI installs, per-platform binaries counted separately, or mirror syncing. I haven't found oxlint or vite-plus depending on it.
  • Releases come fast: v0.18.0 (10-19) → v0.20.0 (10-26, adds --fast mode) → v0.21.0 (11-03) → v0.22.0 (11-05).
  • Contributors: maschwenk with 1,321 commits, Boshen (Oxc author) 357, walkerdb 51. PRs are closed to outsiders; the README says "Pull requests remain closed because we don't have the bandwidth".

2. Competitors

ProjectTypeLaunchedScaleHow tsrs differs
microsoft/typescript-go(TS 7,tsgo)Official / open sourceFounded 2024-09, released 7.0 in 202626,095 stars; npm native-preview 6.82M a weekThe official Go version. tsrs is a line-by-line port of it, claiming 8× faster and about 70% less memory under the same config. It can also compile to Wasm; Go has a GC, which is a disadvantage for Wasm
pingdotgg/ts-rust(tsc-rs,Theo Browne)Open source2026-10-071,623 stars; 208k npm downloads a week; 119 points on HNAlso an AI-written Rust port (Theo says he didn't read a line of the code; The Register reported 24k USD in tokens), but no organization maintains it. Media reported roughly 1.9× speedup. Cloudflare's blog says they're discussing with Theo merging the two into one package
dudykr/stcOpen source2020-125,695 starA hand-written Rust type checker, rewritten from scratch rather than ported; the author has stopped updating it. Its approach is reimplementation, not line-by-line fidelity to the official compiler
kaleidawave/eznoOpen source2023-022,734 starA redesigned checker with experimental features, not aiming for full parity with tsc
tsgo-rs, bun checkOpen source / tooling2026Scale unverifiedTwo other similar projects mentioned in the HN comments (user Leynos: "So that's three now")
Assorted AI-port small repos (ferrotype/tsr, Zapdev-labs, etc.)Open source2026-09~10Single-digit starsCloudflare's blog calls them slopforks; r/typescript has a dedicated thread complaining about this wave of vibecoded ports

Takeaway: several "AI ports TypeScript to Rust" projects appeared within a month, and tsrs isn't the first. Theo's tsc-rs got attention earlier (10-07), but tsrs has overtaken it on stars.

3. Growth: where users came from

  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's official blog "Introducing tsrs" (blog.cloudflare.com/typescript-rust-port): co-authored by Cloudflare and VoidZero (the Vite / Oxc team, acquired by Cloudflare 2026-06-04), stating "in close collaboration with the TypeScript team", and headlining the numbers "8x faster, 70% less memory". This is the main amplifier.
  3. HN front page: a post titled "Tsrs: A Port of TypeScript to Rust" by 10-20, dated 13:18, with 437 points and 213 comments (HN API). The same day, Oxc posted its own piece, which got 5 points. 10-01 The author's first post got only 4 points back then, and nobody paid attention.
  4. Reddit: reposts on r/javascript; r/typescript and r/theprimeagen are discussing this wave of AI ports.
  5. Tech media and secondary content: socket.dev wrote a piece, Flavio Copes did a deep-dive, SEO sites like rustify.rs and flowtivity.ai followed, and YouTube has videos titled like "TypeScript Got Ported To Rust... 3x Faster Than Go" (mixed in with tsc-rs coverage).
  6. Distribution through the Oxc org: the oxc-project org has 30k+ stars in total, oxlint gets 44.3M npm downloads a week, and Boshen and VoidZero already have audiences on X. Who specifically reposted on X wasn't found in the x-radar local corpus (returned 0 results), unverified.

Star curve: 10-20 blog and HN only added tens to hundreds of stars that day, then 10-21~10-22 is when the real spike hit (+310, +965). Likely a second wave of spread (X, Reddit, newsletters, videos) plus snapshot timing lag. Couldn't pin down which specific post drove it.

4. Why it took off

  • Real pain point, right timing: TS 7's Go port is already 10 times faster, but memory is still the bottleneck on big repos, and AI agents running typechecks in parallel on a local machine make it worse. The owner's blog spells out the pain in concrete numbers (19 GiB, 50 GiB).
  • The "AI ported a compiler overnight" story: it landed right after Opus 5.5 launched and Bun was ported from Zig to Rust, so "AI can do large-scale ports" was already a hot topic. Theo's tsc-rs lit the fuse on 10-07, and tsrs rode that wave.
  • Backing made the difference: both are AI-assisted ports, but tsrs has Cloudflare, VoidZero taking over maintenance, a working partnership with the TS team, and some optimizations already upstreamed into TS 7.1 (the blog says the 7.1 beta got 2.5x faster, partly thanks to tsrs). That directly answers the biggest doubt about slopfork: "who maintains it going forward?"
  • Careful benchmarking: they agreed on a same-config comparison with the TS team and published the benchmark method and compatibility docs. Cloudflare's blog specifically calls out rivals who "use bigger machines and different flags to pad the numbers".
  • Usable right away: pnpm add -D tsrs is a drop-in replacement, there's an online playground and a Wasm package (@tsrs/wasm), and releases ship about twice a week.

5. Differentiation

Similar projects are all competing on "who's faster". tsrs differs with faithful porting plus organizational maintenance: it pins an upstream commit, with algorithms and diagnostics matching upstream; maintenance is handed to Cloudflare, VoidZero and Oxc; it uses 15,197 conformance tests as the spec; and agents sync with upstream daily (the same approach Vinext uses to track Next.js). Also, Rust compiles to Wasm, so the full TS toolchain can run in browsers and Workers sandboxes, which is hard with the Go version, and is Cloudflare's commercial motive. This differentiation is exactly why it took off: in this wave of AI ports, anyone can build the code, what's scarce is "trusted, with someone maintaining it long-term". The star spike and Cloudflare's announcement of takeover were the trigger; the author's own first post got only 4 points, so it was endorsement, not the code itself, that did the work.

6. Visibility and copycats

  • Visibility: widely discussed. Cloudflare's official blog, HN with 437 points, socket.dev, The Register (covering Theo's project), and YouTube have all written about it. It's not a niche project.
  • Copycats: there's already a string of AI port repos (tsc-rs, tsgo-rs, ferrotype/tsr, and several Zapdev-labs ports built with GLM/SWE models), plus tools like ArchAstro/rustify that teach module-level TS→Rust porting.

7. What to borrow

  • When doing a large-scale AI port, use the upstream test suite as the spec (conformance cases), pin one upstream version, and diff output byte-for-byte; then quality can be demonstrated.
  • Set a quantitative merge bar (instruction count down 1%, time down 2%, memory down 5%, with byte-identical output) to keep agents from endless micro-optimizing.
  • Have a solo-built prototype hosted by a credible organization, then get it launched on that organization's official blog. The reach far exceeds the author posting on HN alone (4 points vs. 437 points).
  • Package names can be requested from the original owner (the tsrs name was transferred that way).

8. Still unclear

  • The real makeup of npm's millions of daily downloads (CI, mirrors, platform binaries) is unverified and shouldn't be treated as real user counts.
  • Which X post or video specifically drove the 10-22 spike hasn't been pinned down.
  • Progress on merging with tsc-rs, and the Microsoft TS team's long-term stance on the Rust version.
  • Accuracy: in default mode, diagnostic ordering and similar details still differ from upstream; there's still a gap before 1.0 stable.

Sources

This article was written by AI from public data and the data we collect daily. Numbers are sourced, and inferences are labeled.