概要
JavaScript/TypeScriptランタイムBunの開発チームは7月8日、もともとZigで書かれていたランタイム本体、約53万5000行のコードをRustへ全面移植したと発表した。Anthropicに買収されたBunチームの一員であるJarred Sumner氏によるブログ記事で明らかにされたもので、作業には最大64個のClaude Fable 5インスタンスを同時稼働させるClaude Codeの動的ワークフローが用いられ、2026年5月3日から14日までのわずか11日間で完了したという。コミット数は6,502件、追加行数は約100万行に達した。この事例は、AIエージェントを並列活用することで大規模コードベースの全面書き換えという従来避けられてきた手法が現実的になった例として、Simon Willison氏など複数のメディアが取り上げ注目を集めている。
移植の背景
BunはこれまでZigの手動メモリ管理とJavaScriptCoreのガベージコレクターを組み合わせて実装されていたが、この構成がuse-after-free、double-free、エラーパスでの解放漏れといったメモリ安全性のバグを継続的に生む原因となっていた。Rustのボローチェッカーはこれらの問題の多くをコンパイル時エラーとして検出できるため、安定性向上を狙って全面的な言語移行が選択された。Simon Willison氏は、従来のソフトウェア開発では大規模な完全書き直しはリスクが高く避けるべきとされてきたが、現代のAIモデルの能力がこの前提を変えつつあると指摘している。
実装プロセス
移植は単発のプロンプトでコードを変換するのではなく、体系的なパイプラインとして構築された。まずPORTING.md(ZigからRustへのパターン対応表)とLIFETIMES.tsv(複雑な構造体のライフタイム分析)を準備し、全1,448個の.zigファイルを機械的に.rsへ変換。その後発生した約1万6000件のコンパイルエラーを段階的に修正し、テストをローカルからCIへと順次拡大しながら検証した。品質保証の要となったのは、実装を担当したエージェントとは別のコンテキストで動作する2つのClaudeによる「敵対的レビュー」と、TypeScriptで書かれた既存テストスイートを言語非依存の適合性検証スイートとして活用した点である。全体では約50の動的ワークフローが連続して実行され、入力トークンは59億、出力トークンは6.9億に上り、API利用コストは推定16万5000ドルと見積もられている(Anthropic社員という立場からトークン費用は実質負担していないという)。
成果と今後の展望
移植の結果、バイナリサイズはLinuxで20%、Windowsで19%削減(Linux版は88MBから70MBへ、Windows版は94MBから76MBへ)されたほか、HTTPスループットが2.8〜4.8%、TypeScriptコンパイルが4.7%向上するなど性能面でも改善が見られた。メモリ使用量では、2,000回の反復ビルドテストにおいてZig版が6.7GBを消費していたのに対し、Rust版は609MBにまで抑えられたという。移行後に発覚した回帰は19件のみで、HMR破損やUTF-16処理の差異など軽微なものにとどまり、いずれも迅速に修正された。128件のバグ修正やメモリリーク問題の根本的解消も報告されている。今回Rustで書き直されたコードは「Bun v1.4.0」として最初にリリースされる予定で、今後はパーサーの24時間体制でのファジングや、現在4%残るunsafeコードの段階的削減が継続される見込みだ。