世界を動かす技術を、日本語で。

RustによるBunの再構築

2026年7月9日原文(bun.com)

概要

  • Bunは2025年12月にAnthropicに買収され、現在はAnthropicチームで開発
  • BunのZigからRustへの全面的な書き換えをClaude Fable 5のプレリリース版で実施
  • Bunは多機能なJavaScript/TypeScriptランタイム・ツールチェーンとして急成長
  • 安定性向上とバグ防止のためにRustへの移行を決断
  • LLM(Claude)を活用した大規模な自動書き換えとレビュー体制

Bunの歩みと開発背景

  • Bun は元々、 esbuild のJavaScript/TypeScriptトランスパイラを Go から Zig へ移植することから始動
  • Zig言語の 低レベル制御高パフォーマンス に魅力を感じて採用
  • 開発初期から 巨大なスコープ を掲げ、トランスパイラ・ミニファイア・バンドラ・npm互換パッケージマネージャ・テストランナー・Node.js API実装などを目指す
  • 1年間で Zig のみで初期バージョンを個人で開発、Zigのシンプルさと明快な制御性が大きな助け

Bunの現在と成長

  • 現在、 Bun CLI は月間 2,200万 以上のダウンロード数
  • Claude CodeOpenCode などの人気ツールがBunをランタイムに採用
  • VercelRailwayDigitalOcean など主要クラウドが公式対応
  • 同時に、 機能の多さ が安定性面で課題となり、多数の メモリバグクラッシュ を経験

安定性の課題とZigの限界

  • use-after-freedouble-free など、メモリ管理ミスが頻発
  • Zigでは メモリ解放タイミング の明示的記述が必要で、GC値と手動管理値の混在による複雑化
  • アドレスサニタイザ によるテストや Fuzzilli による24時間ふぁじんぐ、 メモリリークテスト 等、多重チェック体制
  • それでも根本的な再発防止が困難

他言語の選択肢とRustへの移行理由

  • C++ 採用も検討したが、スタイルガイドやコードレビューに依存し、根本的なミス防止は困難
  • Rust では 所有権・借用チェッカーDropトレイト による自動クリーンアップで、この種のバグが コンパイルエラー として検出
  • Bunのコードベース(約53万行)をRustへ機械的に移植することで、最小限の動作変更で安定性向上を狙う

BunのRust書き換えプロセス

  • Claude Fable 5 を活用し、ZigからRustへの機械的な変換を実施
  • PORTING.mdLIFETIMES.tsv でZigとRustのパターン・型対応表を作成
  • 50以上の ダイナミックワークフロー をClaude Code上で11日間連続運用
    • Zigファイルを.rsファイルへ変換
    • crate単位でのコンパイルエラー修正
    • 各サブコマンド(bun test, bun build等)の動作確認
    • 全テストスイートの合格
    • 大規模なリファクタやクリーンアップ
  • 人間による 出力監視手動レビュー で品質担保

今後の展望とまとめ

  • Rust化は 安定性保守性 の大幅向上を目指すもの
  • 初期は機械的な移植だが、将来的には idiomatic Rust へのリファクタを計画
  • LLM 活用による大規模コードベースの自動書き換え事例としても注目

Rust移行によるバグ防止と開発体制の強化

  • Rust導入で 所有権管理自動リソース解放 による根本的なバグ防止
  • スタイルガイドや人手レビュー頼みから コンパイラによる型安全性 へ移行
  • Claude などLLMの活用により、従来なら困難な大規模書き換えも現実的に
  • 今後も 安定性パフォーマンス開発体験 の向上を継続

Bunの進化とLLM時代の開発

  • Bunの進化は 言語選択AI活用 の新時代を象徴
  • LLMによる 大規模自動変換人間の監督 のハイブリッド開発体制
  • 開発効率・品質・スケールの新たな可能性を提示

Hackerたちの意見

Bun自体のプロジェクトやリライトの性質については触れないけど、Zigにとっては良くないよね。単純なリライトでメモリリークが解消されて、安定性が向上し、バイナリサイズが20%縮小されて、パフォーマンスが5%向上したんだから。

Zigを使おうとしている人たちは、そういうのはプロジェクトの問題であって、言語の問題じゃないって理解してると思うよ。

でも、あれは読めないものにされちゃったよね。スキルの問題だと言ってもいいけど、他に理にかなった言語を見つけられなかった。Zigは何も隠さないから。

確かに、リライトはこういうメリットをもたらすことが多いよね。Zigでリライトすれば、同じような改善が得られたかもしれない。

プログラミング言語理論の観点から見ると、Zigは雰囲気でコーディングされてる。なんでみんな使ってるのかよくわからない。

この懸念はすべてのGC言語に当てはまるから、Zigにとって必ずしも悪いわけじゃない。BunはZigが効果的に使えるサイズを超えて成長しちゃったかもしれないけど、中規模のプロジェクトはZigから大きな恩恵を受けるかもしれない。

エージェントにリライトではなく改善を指示していたら、同じ改善がZigでもできたんじゃない?

誰かが厳しい教訓に基づいて難しい決断を下すときは注目するよ。たいてい、ORMを使うことを選ぶ人はそれを聞いたことがあるか、SQLを学ぶのを避けたいだけで、ORMを外す人は実際に恐ろしい目に遭った人たちなんだよね。

これを「Zigからの単純な書き直し」とカテゴライズするのは違うと思うな。ジャレッドはこのプロジェクトに5年間も没頭してきたし、その間に学んだことを活かして、最も進んだコーディングLLMに165,000ドル分のトークンを使ったんだ。もし彼がZig版に対してFableを使って165,000ドルを使っていたら、5%のパフォーマンス向上も得られたんじゃないかな。

表面的にはそう見えるけど、ブログ記事を読むと、Bunというプロジェクトの性質が大きな要因かもしれないね。

それが強力なテストスイートの力だね。LLMは検証可能な報酬があるときに優れたパフォーマンスを発揮する。これからもっとRustでリライトされたプロジェクトが増えると思う。Rustは検証がしやすい(型システムのおかげで)し、オーバーヘッドも少なくてGCがゼロだから、エージェント的なコーディング時代にはGC言語を使う理由がどんどん減ってる。RustはLLMコーディングにとってローカル最適なターゲットだと思うけど、将来的にはもっと良い言語が出てくるかもしれない。でも、しばらくはRustが主流でいると思うよ。

エージェント的なコーディング時代では、GC付きの言語を使う理由はどんどん少なくなってるよね。もしかしたら、より早いイテレーションが理由かも?Rustの安全性の保証はタダじゃないし(それでもすごく優れてるけど)、イテレーション時間にも影響するんだ。私のプライベートプロジェクト(>300K LoC)はPythonからTypeScriptに移行したけど、Rustを使えなかった理由は間違いなくイテレーション時間だったね。

Hacker Newsで議論の続きを見る