2 ポイント 投稿者 GN⁺ 1 일 전 | 1件のコメント | WhatsAppで共有
  • Claude Code v2.1.181から、Rustへ移植されたBunを内蔵し、Linuxの起動速度が10%高速化したが、ほとんどのユーザーは変化にほぼ気づかなかった
  • 実行ファイル内の文字列を調べると、正式タグがまだない Bun v1.4.0 とRustソースファイルのパスを確認できる
  • ~/.local/bin/claudeから、src/runtime/bake/dev_server/mod.rs などを含む 563個の .rs ファイル名が見つかった
  • BUN_OPTIONSでTypeScriptファイルを事前に読み込み、Bun.versionを出力する方法でも、内蔵バージョンが 1.4.0 であることを検証できる
  • Rust版はBun canaryとして配布されており、Claude Codeを通じてすでに 数百万台のデバイスで本番実行中

Claude Codeに内蔵されたRustベースのBun

  • Rewriting Bun in Rustによると、6月17日にリリースされたClaude Code v2.1.181から Rustポートを使用している
    • Linuxの起動速度が10%向上
    • そのほかの違いはユーザーがほとんど気づかず、Jarred Sumnerはこれを「Boring is good」と評価
    • Claude Codeを通じてすでに数百万台のデバイスで本番実行中
  • Claude実行ファイル内の文字列から 内蔵Bunバージョンを見つけられる
strings ~/.local/bin/claude | grep -m1 'Bun v1'
  • macOS arm64環境では Bun v1.4.0 (macOS arm64) が出力される
  • 当時GitHubの最新正式リリースは5月12日の Bun v1.3.14 だったため、Claude Codeにはまだ正式リリースされていない v1.4.0プレビューが含まれていることになる
  • Rust版は Bun canary として公開されており、bun upgrade --canaryでインストールできる

Rustソースとバージョン検証

strings ~/.local/bin/claude | grep -Eo 'src/[[:alnum:]_./-]+\.rs'
  • 一覧には次のパスが含まれる
src/runtime/bake/dev_server/mod.rs
src/runtime/bake/production.rs
src/bundler/bundle_v2.rs
  • Ajan Rajが共有した方法は、BUN_OPTIONSでTypeScriptファイルを事前に読み込み、Claude Codeに内蔵された Bun.version を直接出力するもの
cat > /tmp/bun-version.ts <<'EOF'
console.log("embedded bun:", Bun.version);
process.exit(0);
EOF
BUN_OPTIONS="--preload=/tmp/bun-version.ts" claude --version
  • このコマンドでも 1.4.0 が出力される
  • 5月17日のコミットpackage.jsonのバージョンが1.4.0に変更された後、そのまま維持されており、まだcanary以外のタグ付きリリースには含まれていない

1件のコメント

 
GN⁺ 1 일 전
Hacker Newsの意見
  • なぜ TUI を JavaScript 経由でターミナル向け React 上で動かす必要があるのか理解しがたい。Anthropic が TUI 改善のためにランタイムまで買収したという事実は、エンジニアリング品質への疑念をさらに強める。もし書き換えがそれほど簡単なら、Claude Code をネイティブ言語へ移すほうがずっと安上がりだったはず

    • すでにうまく動いていて莫大な売上を生む事業なので、「なぜこの技術なのか?」は技術というより 事業上の選択 に近い。初期に選んだ技術が役目を果たしている以上、完璧なアーキテクチャでなくても変える理由は少ない
      書き換えは Bun ですら簡単ではなく、API 契約とテストが明確な非 UI の開発ツールは、機能が曖昧でテスト不足の UI ツールより書き換え後に信頼しやすい
    • Claude、OpenCode、Ghostty を一緒に使うと、対話型ターミナルプログラムが CPU とバッテリー を激しく消費し、一晩スリープしていたノート PC まで熱くなる。curses/ncurses、Emacs、Vim、MS-DOS まで 40 年超の先例があるのに、なぜ Web 技術を無理やりねじ込んだのか気になる
    • 著名な Haskell 企業が、LLM を活用した反復開発の速度を理由に Python へ移行したという記事を見た。React の学習データは非常に多く、TypeScript のコンパイル時間も Rust などに比べて短い
      ユーザー向けコードと変化の速い UX 層は、高速な反復開発 が可能な動的システムへ、インフラ層は Rust のような安全なシステム環境へ移る可能性が高い。Java/C# は中間地帯だが、今後は UX には TypeScript/Python で十分で、システム作業には Rust のほうが適しているため立場が縮小しそうだ
      https://avi.press/posts/2026-07-10-after-7-years-in-producti...
    • Anthropic が AI で Claude Code を書いていると考えれば、JavaScript も悪くない選択だ。学習データが豊富で、他の高性能言語で AI を混乱させうる マルチスレッドやメモリ管理 の問題も避けられるので、AI で素早くソフトウェアを作るのに向いている
    • OpenAI は約 1 年前に Codex を Rust に書き換える と決めた。本当に書き換えが簡単なら、なぜ Bun が必要なのか、なぜすべての JavaScript コードを Rust へ移さないのかも問うべきだ
      https://github.com/openai/codex/discussions/1174
  • Jarred の原文を見ると、Zig では手作業だった部分が Rust では自動化されることが、移行理由として明確に見える。人間もエージェントも非決定的なので、Zig のメモリ寿命と明示的解放を手動で追跡していると取りこぼしバグが長く積み上がるが、Rust はこの種のエラーを取り除くため、エンジニアリング管理の面で良い折衷案になる
    とくに コンパイラエラー はコーディングエージェントに必要な決定的セーフガードであり、Claude に正確性を試す方法と「コンパイルできるようにしろ」という目標を与えるとうまく機能する。決定的テストによって確率的出力を確かな保証へ変える一般化されたアプローチは https://michael.roth.rocks/blog/verification-surface/ にまとめられている

    • Zig と C は、寿命が互いに無関係な小さな割り当てを大量に作る用途には向かない。堅牢に使うには、アリーナに割り当てを束ねたり固定バッファを置いたりする形で 寿命を自分で管理 する必要がある
      そうすれば Zig も Rust に劣らず堅牢になりうるが、LLM が好む管理言語的な割り当てパターンを求めるなら Zig は合わない
    • 自動で処理するのはガベージコレクション言語だ。Rust でもメモリ寿命を考えて追跡する必要はあるが、借用チェッカー が誤った処理を防ぎ、即座に修正フィードバックを返すため、LLM が書きやすい。デフォルトで不変参照の引数になることも、大きな性能問題の予防に役立つ
    • 現在の Bun には unsafe Rust が非常に多いのに、エラーの種類を自動的に排除すると言えるのか疑わしい: https://news.ycombinator.com/item?id=48967630
    • 私の経験では、LLM はメモリバグをかなり簡単に見つける。今回の件は Anthropic の成功した マーケティングイベント にすぎないように見える
    • 今回の Rust への書き換えはすべて unsafe だったと記憶しているので、その問題を自動で取り除けていない可能性が高い
  • Jarred や Simon Willison の評価とは無関係に、今回の件はかなり否定的に見ている。Anthropic の Bun 買収や AI による書き換えより大きな問題は、「自分のブランチにいるだけで過剰反応するな」という態度から始まり、100 万行超の PR を 1 か月も経たずにマージした未熟な進め方だ
    コミュニケーションをひどく誤って信頼を損ない、分断を広げており、TypeScript チームが 7.0 で取ったアプローチに従うのがそんなに難しかったのか疑問だ

    • 結局のところ、Claude Code ユーザーの大半は気づかなかったか気にしておらず、問題視している側はごく少数なので、実際には重要でないのかもしれない
    • TS7 もまた、アーキテクチャを真剣に見直すより他言語へ 1 行ずつ移植 した代表例だ
  • Claude に含まれる Bun v1.4.0 は、まだ公開されていないプレビュー版に見える。だとすれば FOSS プロジェクト Bun がひそかに別物へ変わった ように見え、調査だけ TODO に残して導入しなかったのは幸運だった
    Bun のガバナンス文書が見当たらないが、今や実質的に Anthropic が作業内容もマージ可否もすべて決める構造なのか気になる

    • Rust に変えたからといってプロジェクトが死ぬ、という結論は理解しがたい
    • PR は公開されていて誰でもビルドして使え、Anthropic チームが先に使うことにしただけだ
    • 実質的には、その週に Jarred が受け入れる気があるかどうか次第の構造だと理解している。Claude Code の変更履歴にはほぼ 1 か月前から Bun 1.4.0 へのバージョン変更が書かれていたが、AI が書いた履歴なので大半が読んでいなくても不思議ではない
    • 私も Bun 導入を調べたが、不安定さ のため使わないことにし、今回の件を見ると正しい判断だったようだ
  • なぜここまで Bun をめぐって複雑なやり方をしたのか分からない。エージェントが Zig を Rust に移せるなら、Claude Code も JavaScript から Rust に直接書き直して、ランタイム依存をなくし性能を高められたはず

    • Bun の Rust への書き換えは Anthropic の製品戦略と事実上ほとんど無関係だと考えれば、混乱する理由はない
    • Claude Code だけを見れば Rust へ直接書き直す方がよかっただろうが、そうすると Bun/oven.sh の買収価値が大きく下がる
      Bun には Claude Code 以外にも社外と Anthropic 社内のユーザーがいるはずで、コーディングモデルが好みうる JavaScript ランタイムとツールのエコシステムを確保できる。今後 Anthropic がこうしたアプリの実行・管理に特化したクラウドまで提供できる可能性もあり、開発者コミュニティを押さえるだけでも Claude Code 単体を Rust に移すよりはるかに大きな影響力を得られる
    • Claude Code が本当に性能のボトルネックになっているのかも疑わしい。JavaScript ランタイムはツールのエコシステムが大きく、プラグイン開発もしやすいので十分妥当
  • 推測や感情を抜きにすると、実際の実行品質が気になる。起動速度だけでなく RAM・CPU 使用量、無限ループやデッドロックがどうかも確認すべきで、以前と同じかそれ以上ならかなり印象的だ
    開発者として AI に仕事を奪われる可能性は嫌だが、誰もが簡単な要求だけで望むソフトウェアを作れるなら世界を良くできる。Microsoft のデータ収集が嫌なら OS を、Google の盗聴が嫌なら携帯電話を AI に作らせるという 技術的自給自足が可能になるかもしれず、その前では個人の雇用の安定性は些細なことになる
    だからこそ技術をオープンソースに保つことがさらに重要で、そうでなければ既存の独占構造を繰り返しながら仕事まで失うことになる

    • ソフトウェア開発で最も難しいのは 明確な要件を得ることだ。完璧な AGI があっても、人は自分の望みを明確に表現できないので、誰もが正確に望むソフトウェアを作る世界は来ないだろう
    • 良い道具も熟練した職人が使ってこそ優れた結果を生む。良い開発者は適切な質問をし、安全装置を設け、必要な場面で成果物を自分で調整できる
    • 現在のように補助金を受けた有料の壁の向こうにあるクローズドモデルを 技術の民主化と呼ぶのは、あまりにナイーブだ。Bun の Rust 移植を主にマーケティング目的で使った戦略はうまく効いたようだ
  • 最近 Kitty のタブ内で Claude Code を使っていて セグメンテーションフォルトに遭遇し、その後タブ全体が入力に反応しなくなった。報告リンクは表示されるがクリックできず、エンコードされていて何の情報が送られるのかも確認できない

    • Bun はアイデアと機能の面では他の JavaScript ランタイムより圧倒的に優れているが、安定性はひどく、Node よりセグメンテーションフォルトが 約20倍多かった。この数字は New Relic のテレメトリ資料に基づく
    • シェルに Segmentation fault が表示されていなければ、セグメンテーションフォルトではなくフリーズの可能性が高い。実際にエラーならシェルに戻った後、画面に見えなくても reset を入力すればタブを復旧できる
    • 業務用 MacBook で Ghostty と Claude Code を使っているが、この問題はまだ経験していない。以前は暴走するメモリリークでシステムが固まり再起動が必要だったが、ここ数週間は消えており、断言は早いものの Rust 移植がメモリリークを減らした可能性はある
    • Ghostty で Claude の対話式質問インターフェースを使うと、同様にフリーズして、スクロール以外では選択もキャンセルも含め一切の入力を受け付けない。ただし Bun と関係があるとは思わない
    • Zig 版にもセグメンテーションフォルトはあり、これを unsafe Rust に一行ずつ移したのなら原因となったコードもそのまま残っている。慣用的で メモリ安全な Rustにリファクタリングするまでは解決しないだろう
  • 彼らは、問題をうまく記述できてトークン予算が無制限な、大成功したがひどいエンジニアたちのように見える。トークン費用を自分で負担していたなら、ソフトウェア効率を上げる金銭的な動機が生まれたはずだ
    AI データセンターの隠れた現実は、GPU クラスターの効率が **40〜60%**しかなくても、資金で機材をさらに買って埋め合わせるということだ。中国の競合を恐れる理由も、彼らのように浪費する余裕がないからかもしれない

  • 今回の作業は トランスパイルであり、品質もよくない。生成されたコードは慣用的な Rust から遠く、醜悪と言ってよい

    • それでもきちんと動いているようだ。今回は基本的に一行ずつ機械的に移した初期段階で、次の段階で慣用的な Rust に整える予定なので、この書き換えに対して引き続き逆張りするのは得策ではなさそうだ
    • 安定性・効率・コストを考えると、元の構造をできるだけ保つ ソース間変換ツールを使うか作る方がはるかに合理的だった
      普通、書き換えでは既存コードベースから得た教訓を反映するが、エージェントでファイルごとに移植するとそうした利点がない。どちらにせよ非慣用的な翻訳にはなるが、LLM を使うと非決定性と莫大なコストまで加わる
    • 醜悪だという Rust コードの具体例が必要だ
    • むしろ LLVM IR に直接トランスパイルしなかった理由が気になる
    • プロジェクトが メモリ安全性の目標を達成するなら、慣用的なコードかどうかがそこまで重要なのかは疑問だ
  • 最近 Claude Code は以前よりはるかに不安定で、TUI レンダリングの不具合で会話履歴が壊れることがよくある

    • 2月からいやいや Claude を使っているが、最初からレンダリング不具合、キーボード入力エラーなど、これまで使った TUI の中で最悪だった。それなのに最近1週間でさらに悪化し、入力した文字の一部が表示されないなど、ターミナルセッションまで壊し始めている
      バックグラウンドに送ってから reset を実行し、再びフォアグラウンドに戻せば直る。Claude に診断を頼むと、自分にはそんなバグはなく別のプログラムのせいだと言ったが、動かしていたのは tmux と Claude だけだった。最近 Rust 版を適用したなら、品質低下の時期とはおおむね一致する
    • Windows ではウィンドウサイズを変えるたびに出力が完全に壊れ、今しがたの返答をもう一度求めなければならない。新しい問題ではないが、最近さらに悪化した気がする
    • AI 自体に反対しているわけではないが、Anthropic は行き過ぎて AI が作った低品質コードを出している。実際のエンジニアが継続的に関与してツールを導くべきなのに、Anthropic はコードの100%を AI に任せようとしているように見える