7月19日、Simon Willisonが「Claude Code uses Bun written in Rust now」と題した記事を公開した。Claude Codeのバイナリをstringsコマンドで解析したところ、公式にはまだリリースされていないBun v1.4.0と、563個のRustソースファイルパスが埋め込まれていることが判明したという検証結果だ。
Claude CodeはAnthropicが開発するAIコーディングアシスタントのCLIツールで、内部的にBun(Node.jsの代替を目指す高速なJavaScriptランタイム/パッケージマネージャ)を利用している。そのBunが、誰にも気づかれないままZigからRustへ書き直されていた——そのことが、バイナリ解析という地道な手作業によって白日の下にさらされた。
きっかけはBun作者の一言
発端はBunの作者Jarred Sumnerによる公式ブログ記事「Rewriting Bun in Rust」だった。その中に次の記述があった。
Claude Code v2.1.181(2025年6月17日リリース)以降は、RustポートのBunを使用している。Linux上での起動が10%高速化したが、それ以外はほとんど誰も気づかなかった。「退屈なこと」は良いことだ。
BunはもともとZig(C/C++の代替を目指す低レベルシステム言語)で実装されており、そのRustへの移植は大規模な内部変更にあたる。しかしユーザーから見れば挙動は変わらない。JarredはこれをBoring is good(退屈なこと、それが良い)と表現した。Willisonはこの主張を受け、自身のClaude Codeインストール環境を実際に掘り下げて検証した。
stringsコマンドで見えた2つの証拠
検証に使ったのは、バイナリ内の可読文字列を抽出するUnixコマンドstringsだ。特別なツールは不要で、macOSやLinuxに標準搭載されている。
証拠1:未公開のBunバージョン番号
strings ~/.local/bin/claude | grep -m1 'Bun v1'
出力は Bun v1.4.0 (macOS arm64) だった。
注目すべきはバージョン番号だ。元記事執筆時点(2026年7月19日)におけるGitHub上のBun公式リリースの最新版はv1.3.14である。Claude Codeのバイナリに埋め込まれていたv1.4.0はまだ一般公開されていないプレビュー版であり、AnthropicがBunチームと密接に連携し、未リリースのビルドを先行して採用していることを示している。
証拠2:563個のRustソースファイルパス
strings ~/.local/bin/claude | grep -Eo 'src/[[:alnum:]_./-]+\.rs'
このコマンドは563個のRustソースファイルパスを出力した。冒頭には以下のようなパスが並ぶ。
src/runtime/bake/dev_server/mod.rs
src/runtime/bake/production.rs
src/bundler/bundle_v2.rs
.rsはRustのソースファイル拡張子だ。Rustコンパイラはビルド時にデバッグ情報としてソースパスをバイナリに埋め込むことがある。563件ものパスが確認されたことは、Claude CodeのバイナリがRust製のBunをそのまま同梱していることの直接的な証拠となる。全563件のファイルリストはWillisonがGistで公開している。
「退屈なこと」が数百万台規模で動いている
BunはもともとZig言語で書かれた高速なJavaScriptランタイムとして注目を集めてきたが、今回Rustへの書き直しという大規模な内部変更が行われた。Rustはメモリ安全性とパフォーマンスを両立する言語として近年システムソフトウェアへの採用が加速しており、LinuxカーネルへのRust導入やAndroidのRust採用なども話題になっている。BunのRust移植もその流れの一環と捉えられる。
ランタイムの内部実装レベルの変更であるため、エンドユーザーから見れば何も変わっていない。Linux上での起動時間10%短縮という成果はあるが、ほとんどのユーザーは気づかなかった。にもかかわらず、Claude Codeは世界中の開発者に広く使われており、このRust製Bunはすでに大規模な本番環境で静かに稼働し続けている。
Jarredが言った「退屈なこと、それが良い」というフレーズは、インフラの進化のあるべき姿を突いている。ユーザーを驚かせることなく着実に内部を改善していく——そのことを、外部のエンジニアがバイナリ解析という形で掘り起こしたのが今回の検証だ。
詳細はClaude Code uses Bun written in Rust nowを参照していただきたい。