TypeScriptコンパイラーがGoに移植へ ビルドが10倍高速に

2025年3月12日、MicrosoftはTypeScriptをGo言語によるネイティブ実装に移植すると発表しました。TypeScriptはこれまでTypeScript自身で実装されてきましたが、速度やメモリー使用量の面で課題がありました。
TypeScriptをGo言語に移植することでビルドが10倍高速になり、メモリー使用量が大幅に削減される見込みです。Goベースの新しいTypeScriptは、2025年半ばまでに型チェックが可能になり、年末までにビルドや言語サービスなどの機能が利用できるようになる予定です。
TypeScriptがGoに移植へ
2025年3月12日、MicrosoftはTypeScriptをGo言語によるネイティブ実装に移植すると発表しました。TypeScriptはJavaScriptに型関連の機能を追加したスーパーセットです。
TypeScriptはこれまでTypeScript自身で実装されてきましたが、速度やメモリー使用量の面で課題がありました。TypeScript(JavaScript)は、プログラミング言語の中では比較的高速ですが、ネイティブ実装と比べると遅く、とくに大規模なソフトウェアでは差が顕著になります。
TypeScriptをGo言語に移植することで、エディターの起動速度が大幅に改善され、ほとんどのビルド時間が10分の1になるとのことです。また、メモリー使用量も大幅に削減される見込みです。
Microsoftは、2025年半ばまでにコマンドラインで型チェック可能なtsc
コマンドのネイティブ実装をプレビュー公開し、年末までにはプロジェクトビルドと言語サービスを含む機能を公開する予定です。
TypeScriptを利用する既存のプロジェクトを破壊せず、また従来の実装と新しい実装の両方を維持しやすくするために、Goへの移行は「書き換え」ではなく「移植」として実施されます。Go言語は、型チェックアルゴリズムやグラフ処理、ASTの扱いなどにおいてTypeScriptと類似した設計パターンを持ち、効率的にメモリーを管理できるという理由で選択されたようです。
なお、新しいTypeScriptは現在のものと同じApache-2.0ライセンスで公開されています。
プロジェクトのロードが10倍高速に
Go言語ベースのTypeScriptは、すでにTypeScriptコンパイラー自身を含む多くの一般的なTypeScriptプロジェクトを読み込めるとのことです。公式ブログによると、いくつかの一般的なプロジェクトでtsc
コマンドを実行した際の結果は、次のとおりです。
コードベース | サイズ(LOC) | 現在 | ネイティブ | 速度改善 |
---|---|---|---|---|
VS Code | 1,505,000 | 77.8秒 | 7.5秒 | 10.4倍 |
Playwright | 356,000 | 11.1秒 | 1.1秒 | 10.1倍 |
TypeORM | 270,000 | 17.5秒 | 1.3秒 | 13.5倍 |
date-fns | 104,000 | 6.5秒 | 0.7秒 | 9.5倍 |
tRPC (server + client) | 18,000 | 5.5秒 | 0.6秒 | 9.1倍 |
rxjs (observable) | 2,100 | 1.1秒 | 0.1秒 | 11.0倍 |
TypeScriptのネイティブ実装は、まだ完全に機能するわけではないものの、かなりの速度向上が見込まれます。これにより、従来の実装では困難だったプロジェクト全体にわたるエラーリストの瞬時の提供や、高度なリファクタリング機能、計算コストの高い深い洞察の提供が可能になるとしています。
高速なコンピューターでVisual Studio Codeのコードベースをエディターにロードするのにかかる時間は現在の約9.6秒から、8倍高速な約1.2秒に短縮されたとのことです。さらに、メモリー使用量はまだ積極的に最適化していないにもかかわらず、現在の実装の約半分に削減されているとのことです。
実行速度の向上とメモリー使用量の削減により、補完リストやクイックインフォメーション、定義への移動、すべての参照の検索などの言語サービス操作に対するエディターの応答性も大幅に向上する予定です。さらに、ほかの言語の実装に一致させるために言語サーバープロトコル(Language Server Protocol:LSP)に移行する予定です。
今後のリリース予定

現在、TypeScriptの最新のバージョンはTypeScript 5.8で、TypeScript 5.9が間もなくリリースされる予定です。TypeScript 6.0では、現在のTypeScript(JavaScript)ベースの実装が継続されますが、今後のネイティブ実装に備えていくつかの機能を非推奨にし、破壊的な変更を導入する予定です。
ネイティブ実装が現在のTypeScriptと十分同等になり次第、TypeScript 7.0としてリリースされる予定です。ただし、TypeScript 7.0はまだ開発中のため、詳細は今後発表されます。
当面は、従来の実装をTypeScript 6(JS)、新しいGoベースの実装をTypeScript 7(native)と呼ぶとのことです。また、Microsoft社内やコードコメントでは、それぞれのコードネームのStradaとCorsaと呼ばれることもあるようです。
TypeScript 7以上が成熟するまでは、従来の実装によるTypeScript 6も継続してサポートされます。そのため、一部のプロジェクトはリリース時にTypeScript 7に移行できますが、TypeScript 6の機能に依存している場合、当面の間は利用を継続できます。
Microsoftの長期的な目標は、要件を満たしたらすぐにTypeScript 7に移行したり、必要に応じてTypeScript 6に戻したりできるようにすること、とのことです。
Microsoftは、今後数か月でパフォーマンス、新しいコンパイラーAPI、LSPなどの取り組みについて発表する予定としています。