BunのRust移行に暗雲?Miriチェック失敗で未定義動作(UB)が露呈
📰 ニュース概要
- Miriチェックの失敗: BunのRust書き換え版コードベースにおいて、Rustのメモリ安全性検証ツール「Miri」が未定義動作(Undefined Behavior)を検出した。
- 致命的なメモリバグ:
src/main.rs内で、有効なポインタの由来(Provenance)を持たない「宙ぶらりんな参照(dangling reference)」の構築が確認された。 - AIコーディングへの警鐘: 報告者は「AIはRustを書くのが得意ではない」とし、AI任せの「バイブス・コーディング」を止め、本職のRustエンジニアを雇うべきだと指摘している。
💡 重要なポイント
core::slice::from_raw_partsを使用したunsafeブロック内での実装ミスが、セーフなRustコード上でも未定義動作を引き起こす要因となっている。Box化されたデータをドロップした後にそのスライスを参照しようとする、典型的な「Use-after-free」に近い挙動がコード例で示された。
🦈 サメの眼(キュレーターの視点)
これは衝撃のニュースだサメ!Rustに移行すれば魔法のように安全になるわけじゃない、という現実を突きつけられた形だサメ。特に今回のバグは、Rustが最も厳格に管理する「Provenance(ポインタの正当な由来)」を無視した unsafe 操作が原因だサメ。報告者が「vibe coding(バイブス・コーディング)」と表現したのは、AIが生成した「もっともらしいが厳密さを欠くコード」をそのままマージしてしまったことへの強烈な皮肉だサメ!Rustの型システムをバイパスする unsafe を使うなら、Miriによる検証は2026年の今でも絶対不可欠なプロセスだと思い知らされるサメ!
🚀 これからどうなる?
Bunの開発チームは、AI生成コードの検証プロセスを大幅に強化せざるを得なくなるはずだサメ。特に低レイヤのメモリ操作を伴うRustコードについては、自動化されたMiriチェックのCI組み込みと、人間のエキスパートによる徹底したコードレビューが改めて重視される流れになるサメ。
💬 はるサメ視点の一言
AIは便利だけど、Rustのボローチェッカー(借用検査器)を騙すような unsafe 芸はまだ人間には及ばないサメ。安全な海を泳ぐには、やっぱり熟練のサメ(エンジニア)の目が必要だサメ!🦈🔥
📚 用語解説
-
Miri: RustのMIR(中間表現)を解釈実行し、メモリリークや未定義動作(UB)を検出するインタープリタ。Rust開発の守護神的なツール。
-
Undefined Behavior (UB): 未定義動作。プログラムが言語のルールを破り、予測不能な挙動(クラッシュや脆弱性)を引き起こす状態のこと。
-
Provenance(プロバナンス): ポインタがどのメモリ割り当てに由来するかという情報の概念。これが正しくないと、メモリアドレスが合っていても不正なアクセスとみなされる。
-
情報元: Bun Rust rewrite: “codebase fails basic miri checks, allows for UB in safe rust”