概要
CloudflareとVoidZeroがMax Schwenk(Owner.com)と協力し、TypeScriptコンパイラのRust移植版「tsrs」を開発中。 TypeScriptチームと密に連携し、Oxc JavaScriptコンパイラツールチェーンの一部としてインキュベート。 Rust移植により、最大8倍の高速化と約70%のメモリ削減を実現。 TypeScript言語仕様の完全な互換性維持を重視し、フォークではなく忠実な移植を目指す。 今後もTypeScriptチームと協力し、パフォーマンス改善や機能追加に取り組む方針。
Cloudflare・VoidZero・Max Schwenkによるtsrs(TypeScript Rust移植)の取り組み
- CloudflareとVoidZeroがMax Schwenk(Owner.com)と共同で TypeScriptコンパイラのRust移植版「tsrs」 を開発
- Oxc JavaScriptコンパイラツールチェーンの一部としてインキュベーション
- TypeScriptチームと密接に連携 し、言語設計や方向性をTypeScript本家に完全に委ねる方針
- tsrsは TypeScriptのフォークではなく、忠実な移植 を目指す
- 言語仕様や実装方針はTypeScript本家に厳密に従う
- TypeScriptチームが長期的なビジョンを持ち、慎重に機能追加や実装選定を行う 点を尊重
- Rust移植が本家の決定から逸脱しないよう管理し、互換性維持を最重視
パフォーマンスとメモリ効率の改善
- Rust移植版tsrsの初期ベンチマークで、 従来のTypeScript 7.0に比べ最大8倍高速・約70%のメモリ削減 を実現
- TypeScript 7.1 betaでも2.5倍の高速化(tsrs由来の最適化を一部本家にも反映)
- ベンチマークはTypeScriptチームと協力し、同一設定での比較を実施
- tsrsは マシンタイプに応じたアダプティブな設定 をデフォルトで採用し、さらに高速化も可能
tsrsの利用方法と開発背景
- npm経由でtsrsの実験的リリースを体験可能
npm install tsrsnpx tsrs
- 過去にもTypeScriptの他言語移植の試みがあったが、 本格的に成功したのはGo移植のみ
- AIによる大規模な自動移植が容易になった昨今、RustやC++による移植も登場
- より高速なTypeScriptへの需要が高まっている現状
Rust選定の理由とWebAssembly(Wasm)連携
- Go移植でも10倍の高速化とメモリ効率向上を実現したが、Rustにはさらなる利点
- RustはWebAssemblyとの親和性が高く、ガーベジコレクタ不要で効率的なメモリ管理が可能
- Cloudflare Workersは Wasmを長年サポート、最近はRustのネイティブサポートも開始
- 小さなメモリフットプリントで、完全な開発環境をクラウドやブラウザ、IoTデバイス上で実現可能
tsrsの保守と運用体制
- Theo Browneと協力し、 tsc-rsとtsrsを統合し、LSPやContent Mapperもサポート
- VinextとNext.jsの運用手法を応用 し、毎日エージェントが差分を確認・互換性マトリクスを自動生成
- 問題発生時は再現・修正提案までエージェントが担当
- TypeScript本家との動作差異(診断順序など)も、安定版リリースまでに最小化を目指す
- パフォーマンス改善は本家Goコードベースにも還元予定
今後の展望
- Cloudflareは Vite・Rolldown・Oxlint・OxfmtなどRust製OSSツールを多数運営
- 1,000万以上の開発者のため、 開発ツールチェーンの高速化・可搬性・運用容易化を重視
- tsrsのさらなる統合や型対応リント(Oxlint)など、Cloudflareスタックへの適用を推進
- TypeScript本家・JavaScriptコミュニティと連携し、最速・最良のTypeScript実装を共同で開発する方針
voidzeroによると、このポートはTS 7.0よりも最大8倍速く、メモリ使用量は約70%少ないらしい。Microsoftは今こそTypeScriptをRustに移植することを真剣に考えるべきだね。