Cloudflare、VoidZero、Owner.comのマックス・シュウェンク氏は、TypeScriptコンパイラーの実験的なRust移植版であるtsrsを発表した。TypeScriptチームと協力して開発され、JavaScriptツールチェーンのOxc内で育成されている。Cloudflareは10月20日に協力体制を発表し、このプロジェクトを新しい言語の派生版ではなく、性能と移植性の向上を目指す取り組みと位置付けた。
Cloudflareが報告した初期のテストでは、型チェック用ワーカー数をそろえた場合、tsrsはTypeScript 7.0と比べて最大8倍高速で、メモリ使用量は約70%少なかった。これらはプロジェクト側のベンチマークであり、独立した測定結果ではない。同社は、比較条件の設定にはTypeScriptチームの意見を取り入れたと説明し、TypeScript 7.1のベータ版自体も7.0より最大2.5倍高速になり得ると付け加えた。
協力する各者は、言語の設計と方向性については引き続きTypeScriptの保守担当者が責任を持つとしている。言語の挙動に差が生じれば長期的に互換性を損なうため、tsrsは既存の実装に忠実に従うことを目指す。Cloudflareによると、Rust版で行った性能改善の一部はすでに上流プロジェクトに還元されており、可能な範囲でTypeScriptのGoコードベースにも追加の改善を提供する計画だ。
Rustの採用は、WebAssembly環境への展開にも道を開く。Cloudflareは、Goのビルドにはガベージコレクターを含める必要があるため、Rustのメモリモデルの方が小規模なWasm配備に適していると主張する。コンパイラーが小さく効率的になれば、ブラウザー、組み込みハードウェア、サンドボックス化されたクラウド環境の内部で、完全な開発システムを動かしやすくなる可能性がある。これは、厳しいメモリ制限の下でビルド、チェック、デプロイを繰り返すツールにとって重要だ。
現時点でtsrsは、完成した代替製品として提示されているわけではない。Cloudflareは、診断メッセージの表示順序など、上流のTypeScriptとの違いを認め、安定版の公開前に差を最小限にする方針を示した。また、このグループは開発者のセオ・ブラウン氏と協力し、tsc-rsとtsrsを1つのパッケージに統合する作業を進めている。このパッケージは、Language Server Protocolやコンテンツマッパーなど、TypeScriptの機能への対応を目指す。
開発者はnpmのtsrsパッケージから実験版を試せる。適応的な既定設定では、実行するマシンに応じて、速度を優先する代わりにメモリを多く使う場合があるため、結果はワーカー数を固定したベンチマークと異なり得る。評価するチームは、注目を集める数値をあらゆる環境に当てはまる結果とみなすのではなく、自分たちのプロジェクトで互換性とリソース使用量の両方を確認すべきだ。
Cloudflareにとって、このプロジェクトはVite、Rolldown、Oxlint、Oxfmtなど、RustベースのJavaScript開発ツールへの幅広い投資の一環だ。同社は、将来の統合候補の1つとして、Oxlintの型情報を利用するリンティングを挙げた。ただしtsrsの当面の試金石は、TypeScriptの挙動を維持しつつ、有望な初期性能を、保守可能で安定したコンパイラーへとつなげられるかどうかにある。



