The ts-rs project is an experimental Rust port of Microsoft's TypeScript 7 compiler (tsc) initiated by developer pingdotgg. Early attempts used OpenAI's GPT-5.6 Sol and GPT 6 Astra models, consuming over $400,000 in API tokens and producing more than 1.3 million lines of Rust code without surpassing roughly 84% compatibility. Switching to Anthropic's Claude Opus 5.5 yielded a working version in about ten hours, and the full port was completed with a total token expenditure of approximately $24,047 over two weeks, according to the project's README.

GitHub repository preview showing pingdotgg/ts-rust with rust language logo
Screenshot of the ts-rs GitHub repository pagegithub.com

Illustrates the ts-rs project repository referenced in the article about the Rust port of TypeScript 7 compiler.

ts-rs maintains the original Go-based compiler's algorithms and behavior, providing the same command‑line interface (tsc), language server, and API as the standard TypeScript compiler. It is pinned to a specific upstream revision of Microsoft's TypeScript repository (commit 673a5f17d713, corresponding to TypeScript 7.1.0‑dev of September 29, 2026). All 181,711 ported Go tests pass, and language‑server and API responses match the Go‑based oracle test sets, with the author reporting 100% compatibility across the real‑world projects tested.

Performance benchmarks show that ts-rs type checking takes about half the time of the Go‑based compiler on sixty open‑source projects (geometric mean). In the T3 Code benchmark, ts-rs runs 2.22× faster than tsc 7 and 8.6× faster than tsc 6 without Effect diagnostics, and 1.89× faster than tsc 7 with Effect diagnostics compared to 12.5× faster than tsc 6. Real‑world testing on six major open‑source applications (VS Code, Sentry, Playwright, Excalidraw, TypeORM, tRPC) showed geometric mean speedups of 11.4× over tsc 6 and 1.61× over tsc 7. The project currently provides static Linux x64 and macOS arm64 binaries, while Windows and Linux arm64 support are pending, and known issues include monorepo file‑output differences and incremental memory growth patterns that differ from the original compiler.