GitHub上の「ts-rust」というプロジェクトが、ここ数日開発者の間で話題になっている。米マイクロソフトがGoで書き直したTypeScriptコンパイラを、型チェッカーや言語サーバー(LSP)ごとそのままRustに移植したもので、コマンドラインツールは「tsc-rs」と名付けられている。開発元のpingdotggは説明文書でこう率直に述べている。実装コードはすべて大規模言語モデルが生成したもので、自分では1行も読んでいない、と。
プロジェクトはmicrosoft/typescript-goの特定の上流バージョン、TypeScript 7.1.0-dev相当に固定されている。説明文書によると、Go版から移植した18万1711件のテストはすべて合格し、作者が検証した実際のプロジェクトでは互換率100%を記録した。リポジトリはMITライセンスで公開されつつ、TypeScript本体のApache-2.0表示とGo標準ライブラリのBSD-3-Clause表示も維持しており、現時点でスター数は600を超えている。
2つのモデルで試した道筋
作者はまずOpenAIのGPT-5.6 SolとGPT-6 Astraで一度試みた。このときのAPI費用は40万ドルを超え、約130万行のRustコードを生成したものの、互換率は84%で頭打ちになった。そこでClaude Opus 5.5に切り替えてゼロからやり直したところ、10時間で動作するv0ができあがり、2週間の総費用は約2万4047ドルにとどまった。
I've never read a line of this code.
性能面では、作者が自身のT3 Codeプロジェクトを使って計測した結果、tsc-rsによる型チェックの完了に7.25秒かかったのに対し、Go版のtsc 7は16.10秒で、2.22倍の速さだった。JavaScript版のtsc 6を基準にすると、tsc 7は7.1倍、tsc-rsは11.4倍という計算になる。これらの数値はすべて作者自身の計測によるもので、第三者による再現はまだなく、OpenAIとAnthropicのいずれもこの比較について公式な見解を示していない。
同種のプロジェクトの中で見ると
大規模言語モデルによる大規模なコード移行は、今年すでに複数の公開例がある。GitHubは以前、Copilotを使って自社のランタイムの一つを83万行のRustに書き直したことを明らかにしており、Mistralはエージェントを使ってFortran 77の4万行をC++に移行させている。これらのプロジェクトに共通するのは、既存のカバー範囲が広いテストセットが審判役を果たしている点だ。
ts-rustも同じパターンだ。マイクロソフトのGo版移植自体がファイル単位の「そのまま書き写す」式の書き直しであり、テストケースもそのまま一緒に移された。これにより、モデルにはほぼ完全に決定論的な目標が与えられる。十数万件のテストがあり、通れば通ったことになる、というわけだ。目標が明確でフィードバックが即時なタスクでは、2つのモデルの差が大きく拡大される。要件が曖昧でテストによる安全網がない業務コードに持ち込んだ場合、この比較が成り立つかどうかはまだわからない。
判明している課題
説明文書は4つの制約を挙げている。モノレポ内で同一ファイルが複数のパスから参照できる場合、出力ファイルがtscより多くなる可能性がある。tsc -bによる増分ビルドでは、古いまたは欠落した生成物を読み込んでしまう場合がある。長時間の編集セッションではメモリが緩やかに増加し、編集1000回あたり約20MB増える。表示されるバージョン番号は移植時点の7.1.0-devのままで、npm上のバージョンではない。
作者はこれを初期版だと位置づけている。試してみたいチームには、CI上でtsc-rsと公式のtscを並行して走らせ、診断結果を比較する方法が無難だとしている。コードを誰もレビューしていない状態で本番のビルドチェーンにそのまま置き換えるかどうかは、各チームがリスクを見極める必要がある。
参考資料:ts-rustプロジェクトの説明文書、CocoLoop、Hacker Newsでの議論。テスト件数、API費用、T3 Codeベンチマークの時間と倍率はプロジェクトの説明文書で確認した。