見出しは「高速」――しかし注意書きも重要です
Rustによる独立したTypeScript移植版は、テスト実行を約0.2~0.5秒で完了しました。これはGoの0.6~2.2秒、JavaScriptの6.6~13秒を大きく上回る改善です。Goと比べて平均2.5倍から3倍、連鎖的なエラーが発生するシナリオでは最大4.4倍の高速化に相当します。
重要な点として、この性能向上は独立したRust移植版によるものであり、Microsoft公式のコンパイラ開発によるものではありません。7月にMicrosoftはTypeScriptコンパイラをGoに移植し、元のJavaScript版に比べて約10倍の高速化を実現しました。AIエージェントを活用することが多いRust移植版は、Go版の上に構築されたコミュニティ主導の取り組みであり、Microsoftによる置き換えではありません。
この区別は重要です。Rustコンパイラは印象的な非公式の開発成果です。多くの場合AIの支援を受けながら、性能を重視してコードベースを再設計した場合に何が可能になるかを示しています。
TypeScriptプロジェクト自体のような、大規模ではあるものの単一のリポジトリで目を引く高速化が得られたことは、強いシグナルです。しかし、すべてのTypeScriptプロジェクトで同様の劇的な向上が自動的に得られることを決定的に証明するものではありません。中心的な論点は、これらの初期ベンチマークが、多様な種類や複雑さのプロジェクトにも一般化できるかどうかです。
4つのテスト、顕著な性能差
性能テストには、GitHubの公式TypeScriptリポジトリ(793ファイル、約380,000行のコード)を使用しました。この堅牢なテスト環境により、次の4つの異なるシナリオで包括的な比較ができました。- すべての型が有効 - 単純な型エラーが1件 - 連鎖的なエラーを伴うコア型の破損 - 深い再帰型
結果は際立っていました。有効な型の場合、JavaScriptは約7秒、Goは0.7秒、Rustはわずか0.3秒で完了しました。コア型が壊れて連鎖的なエラーが発生した場合、JavaScriptは13秒、Goは2.2秒、Rustはわずか0.5秒で終了しました。これらの数値は、一貫した大きな性能差を示しています。
全体として、動画ではGoがJavaScriptの約9~10倍高速と報告されています。Rustはさらに、JavaScriptの約24倍、Goの3倍近い速度でした。丸められた計測時間と単一のコードベースであることから絶対的な精度には限界がありますが、性能の序列は明白です。
MicrosoftによるTypeScriptの7月のGo移植は、大幅な向上をもたらしました。しかし、その後のRust実装は、特に複雑なエラー処理のシナリオで、さらに大きな飛躍を示しています。このデータは、新たな性能の基準を明確に示しています。
Rustの結果を詳しく検討すべき理由
コンパイラのワークロードは、GoやRustであっても、あらゆる言語にとって負荷の高いテストです。型チェックでは、複雑な再帰的関係の処理、大規模な依存グラフの構築、そしてコア型が壊れた場合に指数関数的に増え得る診断の生成が行われます。この複雑さが、「コア型の破損」シナリオでJavaScriptコンパイラが最大13秒かかった理由を説明しています。
RustがGoに対して平均2.5倍から3倍高速という優位性は、メモリ管理とランタイムのオーバーヘッドにおける根本的な違いに起因すると考えられます。Rustのゼロコスト抽象化、明示的なメモリレイアウト、ガベージコレクタがないことにより、メモリ割り当ての挙動を最小限に抑え、キャッシュミスを減らせる可能性があり、コンパイルのようなCPU依存のタスクで確かな優位性をもたらします。
AI支援開発によって実現したTypeScriptのRust移植版の登場は、重要な傾向を示しています。GitHub上のTypeScriptリポジトリのように、豊富なテストスイートを備えた大規模な既存コードベースは、コーディングエージェントによる反復的な変換に最適な対象です。この手法は、tsrsなどのプロジェクトに見られるように、動作する移植版を短期間で生成できます。詳しくは Introducing tsrs: a Port of TypeScript to Rust をご覧ください。
ただし、既存のテストに合格したからといって、完全な互換性が自動的に保証されるわけではなく、細かな挙動の違いが見つかるとも限りません。AI主導の移植は強力ですが、機能的な同等性を確保し、元の実装の完全性を維持するには、人間による厳密な検証が引き続き不可欠です。速度は疑いようがありませんが、長期的な安定性には慎重な精査が必要です。
この記事が気に入ったら、毎朝同じようなものをメールで受け取れます。
1日1通 · 2クリックで解除 · サードパーティのトラッキングなし
ベンチマークでの優位性は、そのまま置き換えられることを意味しません
ベンチマークでの優位性は、そのまま置き換えられることを意味しません。Rust移植版を採用する前に、開発者はいくつかの重要な要素を確認する必要があります。特に、公式のTypeScript実装との言語およびコンパイラAPIの同等性を評価し、既存のエディタツール、ビルドシステム、診断出力とシームレスに統合できることを確認してください。ご自身のプロジェクトでの挙動が最終的な判断材料です。
公式版とRust版の両方で同一のコンパイラオプションを使い、公平なローカル検証を行ってください。クリーンビルドとインクリメンタルビルドの両方を実行し、メモリ使用量を監視し、数回の計測実行だけでなく、代表的なCIワークロードでパフォーマンスを評価します。この包括的な手法により、本番環境での実用性が明らかになります。
このRust移植版の印象的な結果、特にGoに対する3倍の高速化は、コンパイラ性能の基準を引き上げるものです。こうした代替実装はエコシステム全体にイノベーションを促し、最適化されたネイティブコードが開発者体験を大きく改善できることを示しています。数字は説得力がありますが、本番環境での実用性は、信頼性と完全な互換性にかかっています。
当面の安定性と、Microsoft公式のTypeScriptコンパイラとの完全な機能同等性を最優先する場合は、このRust移植版は見送ってください。包括的な統合とエコシステムのサポートが成熟するまで、ベンチマークで優位に立つこのRust版は、ほとんどの本番環境では置き換えとして使えるものではなく、有望な概念実証にとどまります。
よくある質問
MicrosoftのTypeScriptコンパイラは現在Rustで書かれているのですか?
いいえ。この動画では、独立したRust移植版を、既存のJavaScriptコンパイラおよびMicrosoftのGo実装と比較しています。
動画のテストでは、Rust移植版はどのくらい高速でしたか?
テスト対象のTypeScriptリポジトリでは、平均でGoの約3倍、JavaScriptの約24倍高速でした。
このベンチマークでは何をテストしましたか?
TypeScriptリポジトリで4つのケースを測定しました。有効な型、単純な型エラー、コア型に起因する連鎖的なエラー、深い再帰型です。
チームはTypeScriptコンパイラをRust移植版に置き換えるべきですか?
これらの結果だけでは判断できません。切り替える前に、チームは自社のプロジェクトで互換性、ツールのサポート、パフォーマンスを検証する必要があります。

