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

BunがZigからRustに移植されています

概要

oven-sh / bun リポジトリの 通知設定 の概要説明。 通知設定の変更 には サインイン が必要。 リポジトリの 人気指標 (Fork数・Star数)の紹介。 ファイルツリー の操作方法の説明。 コメント機能 の現状について記載。

oven-sh / bunリポジトリの通知設定と基本情報

  • 通知設定の変更 には GitHubアカウントへのサインイン が必須
  • Fork数:4.4k、Star数:89.6k の高人気リポジトリ
  • ファイルツリー の展開・折りたたみが可能
    • docs、PORTING.md、scripts、port-batch.ts などの主要ファイル・ディレクトリを含む構成
  • diffビュー設定フィルターオプション によるファイル内容の比較・検索が可能
  • コメント機能 は現時点で 0件、コミットコメントも 0件
  • 通知設定ファイル操作 は、開発やコラボレーションの際に便利

Hackerたちの意見

リンクされたコミットが本当に試みなのか、それともただの実験なのかは分からないけど、当時は多くのコンパイラバグがあったから、ZigでJSランタイムを作るのはなんか変だなって思ってた。

今のHNのトップ投稿が、Anthropicに買収されたBunを心配してる人の話なのが面白いね。そこにあるトップコメントでは「Anthropicは自分たちのコードベースで実験をするけど、Bunチームは同じような感じのコーディング実験はしないだろう」って書いてある。でも、ここに来て、バイブコーディングのための大規模な取り組みがあるみたい。どうなるかは時間が教えてくれるだろうね。Bunのメンテナが何をしてるのか、そしてなぜそれをやってるのか、もう少し説明してくれるといいな。

一つの型付き言語から別の型付き言語に移行するのは、LLMの完璧な使い道に思えるね。両方の言語の魅力が分かるし、そんな行動を考える理由も理解できる(例えば、Rustはメインストリームのプログラミング言語で、Zigはカルト的な地位にあるからね(悪意はないよ))。

ClaudeはZigよりRustの方が得意なんじゃないかな?

バイブコーディングのための大規模な取り組みのように見える それは全然そうは見えないけど。AIの使用が全部バイブコーディングだと思ってるの?

でも、なんで彼らがそうする必要があるの?これは初期のリファクタリングのための基盤を作って、ある言語から別の言語に移行するだけに見えるよ。まだZigからRustに切り替えることを決めたわけじゃないし。投資家なら、彼らが時間を有効に使ってるかどうか気になるのは分かるけど、他の人にはそれがどうでもいいことじゃない?

これらのチームに重なりがあるかは分からないけど、Anthropic自体はRustエコシステムにかなり投資しているみたい。最近、彼らの内部ツールのいくつかを公式のRust実装として提案したんだって[0]。Connect RPC[1]のためのもので、protobufベースのライブラリセットには新しいRustベースのprotobufコンパイラ、Buffa[2]も含まれているよ。[0]: https://github.com/orgs/connectrpc/discussions/7#discussionc... [1]: https://connectrpc.com/ [2]: https://github.com/anthropics/buffa

正直、こういうのはバイブコーディングと相性がいいみたい。確か、Ladybird JSエンジンもRustに「バイブポート」されてて、元のテストスイートを100%通過した上に、新しいRustのテストも追加されてたはず。

バイブコーディングにとっては大規模な取り組みに見えるけど、実際は思ってるほど大変じゃないと思う。ここ数週間、AIを使ってPostgresをRustに書き換える実験をしてたんだけど、AIは書き換えが得意だったよ。参照できる既存のコードベースがあると、バイブコーディングでの問題がかなり減る。うまく機能する既存のアーキテクチャがあって、テストスイートもあるからね。1ヶ月の間に、何もなかったところからPostgresのテストスイートの95%以上を通過するところまで来たよ。JarredがBunを作ったから、彼ならもっと早く進めると思う。[0] https://github.com/malisper/pgrust

最近、Zigに改善を提案しようとしたけど、「AIコード禁止」の厳しいルールがあってできなかったみたい。この反応がZigにプレッシャーをかけようとしてるのか、実用的な理由で動いてるのかはあなた次第だね。多分、両方の要素があると思う。

Zigが成功してほしいけど、Zigがまだ1.xじゃないから、Bunみたいな大規模なコードベースが大きな破壊的変更に対応するのは難しいだろうね。それに、BunがZigのフォークを使ってるっていう事実もあるし。 https://x.com/bunjavascript/status/2048427636414923250?s=20

「無制限」のAI利用があるなら、ポートは明日完成すると思う?

リンクされたコミットは、このキャッチフレーズにはあまり説得力がないかも。ここに、ClaudeがZigのコードをRustに大量に書き換えてるブランチ[0]があって、現在のところ773,950行追加、151行削除されてるよ: [0]: https://github.com/oven-sh/bun/compare/claude/phase-a-port

時代が変わったなぁって感じる。2015年には、成熟したGoランタイム全体がCからGoに半自動的に書き換えられたんだ。メンテナーの一人が使ってたCのサブセット用のC-to-Go変換ツールを作って、同じ出力が得られるようにして、その後、得られたコードを手動でリファクタリングしてGoのコードをよりイディオマティックで最適化されたものにしたんだよ。今は言語モデルに頼むだけで済むんだね。スライドはこちら: https://go.dev/talks/2015/gogo.slide#3 面白い類似点: 「ランタイムをコンパイルするためだけに自分たちのCコンパイラを持っていた。BunチームもZigのフォークを維持してる。」

バイブコーディングでの書き換えの問題は、基本的に生成されたコードベースを理解することにサインオフすることになるってこと。コードベースに関する歴史的な知識は消えちゃう。

このプロンプトは、ファイルごと、行ごとの翻訳を定義してるみたい。歴史的な知識があれば大丈夫そうだね。

成功するかもしれない、でも遅いアプローチとして、gitのコミット履歴を歩きながら、各コミットの背後にある行動意図を適用するのがいいのかな。もしそうしたら、Rustの実装が問題を回避したから特定のバグ修正コミットをスキップできたかどうか知りたいな。

面白いアイデアだね。

これは面白いアイデアだし、もっと小さいもので試してみようかな。bunには15,000以上のコミットがあるから、一度にコミットのグループを操作する方法が必要だね。そうしないと、何千回もAPIリクエストしないといけなくなるし。

何もなければ、技術に詳しくない企業の経営者向けの良いマーケティング素材になるよね。会議で「こんなに複雑なものを別の言語から全然違う言語に移植してるのに、なんで私たちはAIをうまく使ってないの?」ってエンジニアチームにプレッシャーかけるかも。

彼らは単にClaudeのモデルの強力な能力を最大限に活用するために実験してるだけだと思うよ。