AI News HubLIVE
サイト内リライト2 分で読了

AIの速度でマージされる

BunがAIを使って中核コードをZigからRustに書き換えたことは、AI生成コード、メモリ安全性、テストの信頼性をめぐる議論を引き起こした。この記事は3つの異なる視点からの論争を分析し、テスト合格は検証と等しくないことを指摘し、より強力な検証基準の重要性を強調している。

ソースHacker News AI著者: taubek

2026年5月、Claude Codeに組み込まれているJavaScriptランタイムBunは、その中核コードをZigからRustに書き換えた。約100万行、6502件のコミットからなるブランチ「claude/phase-a-port」が5月14日にマージされた。Bunの創設者Jarred Sumnerは「私たちはもう何ヶ月も自分たちでコードを書いていない」と認め、メディアは「AIの速度でマージ」と報じた。2ヶ月の沈黙を経て、Bunは7月8日にフォローアップ記事を公開。翌日、Zigの創設者Andrew Kelleyが率直すぎて「メルトダウン」と呼ばれる反論を発表。さらに7月12日にはレガシーコードのベテランRay Myersが全体のスペクタクルを批判した。一見対立するように見えるが、毒を抜けば、3人とも同じ議論をしている。

Bunの主張はメモリ安全性だ。記事はバグ修正リストから始まり、ZigとガベージコレクションのあるJavaScriptエンジンを混在させることで生じるuse-after-freeやダブルフリーなどの問題を挙げている。Rustのコンパイラはそれらをコンパイルエラーに変える。Kelleyの主張は、問題は言語ではなく、BunのZigコードは「ハックの積み重ね」であり、関係はすでに破綻していたというものだ。Myersは、この決断はマーケティングであり、AIの力を示すために選ばれたと指摘。そのAIがuse-after-freeをキャッチできないにもかかわらず、だ。

三者が一致する点は、グリーンなテストスイートは検証ではないということだ。Bunは重写道中、6万件のテスト(138万アサーション)をパスしたが、それでも19の既知のリグレッションが残った。それぞれは忠実な翻訳だが、新しい言語で異なる意味を持つものだった。例えば、Zigのassertは関数で引数が常に実行されるが、Rustのdebug_assert!はリリースビルドで式全体を消去する。その結果、ホットモジュールリロードがリリースビルドでのみ壊れた。

Bunは検証に16万5000ドルを費やし、64のClaudeを並列実行して11日間かけた。それでもこのレベルのバグを見逃した。一方、Ladybirdブラウザは2月にC++からRustへの移植をAIで行った際、バイト単位の出力一致基準を採用した。新旧のパイプラインがすべてのJavaScriptに対して同一の出力を生成することを要求し、52,898のtest262テストと12,461のリグレッションテストでゼロデルタを達成。19のリグレッションはまさにこのより強い基準で捕捉できるバグだった。

このエピソードから学ぶべきは、生成コストは急落したが、検証のギャップがほぼ全作業になったということだ。組織がエージェントに重要なシステムを書き換えさせる場合、以下の基準を採用すべきだ:移植前に「同一の振る舞い」を定義して実行可能にすること、新旧を実際のトラフィックに対して並行実行して出力を差分すること、テストスイートを最低基準と見なすこと、そして人間をマージの責任者として残すこと。Bunがそれをやったのは良い例だが、そのギャップは依然として19のバグをすり抜けさせた。