GitHubは、Copilotのコマンドラインツール、デスクトップアプリ、SDKの中核部分をTypeScript/Node.jsからRustへ移行した。書き換えた本番コードは約80万行に上り、AI生成コードも活用した。実行基盤を同じプロセス内で動かす場合、Copilotクライアントの起動時間は5.25秒から292ミリ秒に短縮された。
移行の進め方
GitHubは段階的な手法を採用した。TypeScriptの小さな部分をRust版に置き換えながら、一時的な互換レイヤーを使って2つの言語を連携させた。これにより、14.5週間にわたる作業中も既存のテストスイートを継続して実行できた。移行期間中には、プルリクエスト128件とリリース135件(安定版35件、プレリリース100件)を公開した。
開発者への影響
新しいRust実行基盤はC ABIを介してホストアプリに直接組み込めるため、別のNode.jsプロセスと、それに伴う約100MBのメモリー使用量が不要になる。分離が必要な場合に備え、プロセスを分けて実行するモードも引き続き利用できる。Copilot SDKは引き続きTypeScript、Python、Go、.NET、Javaをサポートし、新たにRustにも対応した。
なぜ重要か
Copilotを使う開発者にとって、起動が速くなることで待ち時間が減り、作業がよりスムーズになる。メモリー使用量が減るため、リソースの限られたマシンやCIパイプラインにも適しやすくなる。また、実行基盤を直接組み込めることで、独自のIDE拡張機能との連携をより密にできる。