10月27日、Daniel Curtisが「Cloudflare and VoidZero Introduce tsrs: An AI-Generated Rust Port of TypeScript」と題した記事を公開した。CloudflareとVoidZeroがAIエージェントを使ってTypeScriptコンパイラをRustに移植した「tsrs」について詳しく紹介している。
コードをほぼ書かずにコンパイラを移植
今回の話で最も面白いのは、パフォーマンスの数字ではなく開発プロセスだ。
Owner.comのMax Schwenkは、詳細なブログ記事の中で、自分が書いたコードは「ゼロ」だと述べている。代わりにClaude Opus 5.5を筆頭とするAIエージェントに指示を出し、TypeScript自身が持つ15,197件の適合性テストケースを仕様として使わせ、忠実な移植を実現させた。
MicrosoftがTypeScriptコンパイラをGoで書き直すのにチームと2年を要したのに対し、AIエージェントに任せたら数週間で完成した――という対比は、エンジニアコミュニティで大きな反響を呼んでいる。X上でPeter Steinbergerは次のように投稿した:
Moved to tsrs over the weekend. Drop-in replacement. Around 5x faster for OC.
Kind of amazing that it took Microsoft a team and two years to rewrite the TS compiler in go, and now you can just let an agent rip and get sth significantly better within weeks.
型チェックが最大8倍高速、メモリ使用量は70%削減
tsrsは、CloudflareがVoidZeroおよびMax Schwenkと共同で開発し、RustベースのツールチェーンOxc内でインキュベートしているプロジェクトだ。TypeScriptチームと密接に連携しており、Cloudflareは「フォークではない」と強調している。TypeScript言語の設計上の主導権は引き続きMicrosoftのTypeScriptチームが持つ。
公式ベンチマークによると、同数のチェッカーワーカーで比較した場合、TypeScript 7.0に対して最大8倍の型チェック高速化と約70%のメモリ削減を達成している。Owner.comの37,000ファイルからなるモノリポでは、TypeScript 7.0で19 GiB・80秒かかっていた型チェックが、tsrsで7秒に短縮された。
なお、TypeScriptのバージョン系譜を補足しておくと、TypeScript 5・6系が現行の安定リリース世代であり、TypeScript 7.0はMicrosoftがGoネイティブポートとして開発中の次世代コンパイラに対応するバージョンだ。tsrsはこのTypeScript 7系をベースにしている。

ただし「8倍」の数字には注意が必要だ。あるエンジニアが自分で計測したところ5.3倍・72%削減という結果になり、より新しいTypeScript 7.1ベータを比較対象にしたImportStaticの検証では2.7倍にとどまっている。8倍という数字はあくまでTypeScript 7.0との比較であり、ベースラインによって変わる。
Rustを使うことでWebAssembly(@tsrs/wasm)へのコンパイルも可能になり、ブラウザやCloudflare Workers上で型チェックを実行できる。GoバイナリのようにGCをバンドルに持ち込まずに済むのもRust選択の利点だ。
導入は既存のtsconfig.jsonをそのまま使うだけ
npm install -D tsrs
npx tsrs -p . --noEmit
既存のtsconfig.jsonを指定するだけで動作する。なお、tsrsはTypeScript 7系をベースにしているため、TypeScript 5・6系を使っているチームはまずMicrosoftのGoネイティブポート(tsgo)に移行してからtsrsに切り替えることが推奨されている。
現時点での制限と懸念点
リリースは実験的段階であり、以下の制限がある:
- ウォッチモードと言語サーバーは未実装
--init・--showConfigオプション未対応- 診断メッセージの出力順が異なる場合がある
- **型エラー時の終了コードがtscの
1に対してtsrsは2**を返すため、CIスクリプトが静かに壊れる可能性がある
技術面での懸念もある。Hacker News上では、tsrsが採用している「アリーナ方式(確保したメモリを明示的に解放しない)」のメモリモデルの健全性を疑問視する声が上がっている。
TypeScriptのDaniel Rosenwasserは「速度向上の要因は言語選択だけではない」とHacker News上でコメントしており、tsrsで発見された一部の最適化がTypeScript 7.1にフィードバックされているという。
MicrosoftのGoポートおよびtsc-rsとの関係
tsrsは、Microsoftが開発中のGoベースコンパイラ「tsgo」や、Theo Browneによる別のコミュニティ主導のRustポート「tsc-rs」と並立する形で存在している。tsc-rsはtsgoが公開する以前から独立して進められてきたRust移植プロジェクトだ。Cloudflareはこのtsc-rsとtsrsを1つのパッケージに統合する方針で、言語サーバーおよびソースマップのサポートも追加する予定だ。
tsrsはApache-2.0ライセンスのオープンソースとしてGitHubで公開されている。
詳細はCloudflare and VoidZero Introduce tsrs: An AI-Generated Rust Port of TypeScriptを参照していただきたい。




