Microsoftはこのほど、「A 10x Faster TypeScript - TypeScript」において、同社が開発しているプログラミング言語「TypeScript」が10倍高速になると発表した。
従来のJavaScriptをコードベースとする実装は、大規模開発においてパフォーマンスを著しく低下させる問題があり利用には限界があったという。この問題を改善するため、コンパイラー、ツール、コードベースをGoogleの「Go言語」に移植し、大幅な高速化とメモリ消費量の削減を実現したと明らかにした。
パフォーマンスの向上
Microsoftはまだ開発中としつつ、現時点におけるパフォーマンス向上の度合いを次のとおり公開した。ほとんどのプロジェクトにおいて、ビルド時間が約10分の1に短縮されている。
プロジェクト | サイズ(行数) | 現在(JS) | ネイティブ(Go) | 高速化の度合い |
---|---|---|---|---|
VS Code | 1,505,000 | 77.8s | 7.5s | 10.4倍 |
Playwright | 356,000 | 11.1s | 1.1s | 10.1倍 |
TypeORM | 270,000 | 17.5s | 1.3s | 13.5倍 |
date-fns | 104,000 | 6.5s | 0.7s | 9.5倍 |
tRPC (server + client) | 18,000 | 5.5s | 0.6s | 9.1倍 |
rxjs (observable) | 2,100 | 1.1s | 0.1s | 11.0倍 |
この高速化によりエディタの動作が大幅に改善され、瞬時にエラーリストを表示したり、高度なリファクタリングをサポートしたりすることが可能になるという。
ロードマップ
Microsoftは2025年半ばまでにタイプチェックが可能な新しいコマンドライン実装(tsc)をプレビューし、年末までにプロジェクトビルドと言語サービスを備えた完全なソリューションをリリースする予定。
現行のJavaScriptベースの実装はTypeScript 6.x系として開発を継続し、Go言語ベースの新しいネイティブ実装はTypeScript 7.x系としてリリースが予定されている。また、これらの識別を容易にするために今後はTypeScript 6(JS)およびTypeScript 7(native)と呼称することも発表された。
TypeScript 7(native)リリース後、ユーザーはプロジェクトの切り替えが可能とされる。ただし、特定のAPI、レガシー構成、TypeScript 6に依存するプロジェクトは切り替えできない可能性があるという。そのため、TypeScript 7(native)が成熟するまでの間、TypeScript 6(JS)の開発も平行して維持される。
Microsoftは、新しいTypeScript 7(native)についてユーザーが抱くであろう疑問に回答したFAQを「microsoft/typescript-go Faqs · Discussions · GitHub」にて公開している。Go言語の採用はGo言語への変換を意味せず、TypeScriptは従来どおりJavaScriptへの変換をサポートすることなどが解説されている。