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

Bunサポートは現在制限され、非推奨となりました

概要

  • yt-dlpBun のサポート範囲を限定し、非推奨化
  • 対応バージョンは 1.2.11~1.3.14 のみに
  • セキュリティと互換性の問題が主な理由
  • Bun の開発方針変更が懸念点
  • 今後のサポート終了の可能性も示唆

yt-dlpによるBunサポートの制限と非推奨化

  • yt-dlp は、 ejs互換JavaScriptランタイム としての Bun サポートを制限・非推奨化
  • 次回の yt-dlp または ejs リリースから、対応バージョンは Bun 1.2.11~1.3.14 のみに限定
  • 最小対応バージョン1.0.31 から 1.2.11 へ引き上げ
    • 1.2.0 未満では ejsパッケージのlockfile が無視されるため、 npmサプライチェーン攻撃 対策としてセキュリティ上問題
  • 1.2.11 未満では ejsテストスイート が実行不可なため、対応下限を 1.2.11 に設定
  • 上限バージョン1.3.14 に設定
    • 1.3.14Zigベースの最終リリース であり、それ以降は Rust でClaudeを用いて全面的に書き換えられたため
  • Bun の開発方針が vibe-coded 志向へと大きく変化
    • 今後のメンテナンス負荷増大や予期せぬトラブル懸念

今後の方針と参考情報

  • yt-dlp および ejs のニーズを満たす限り、限定された Bunバージョン のサポートは継続
  • 保守が困難になった場合、 Bunサポートの完全終了 も選択肢
  • 詳細は EJS wiki のJavaScriptランタイム対応記事を参照
    • ただし、現時点で本件の最新変更は未反映

Hackerたちの意見

まあ、Bunを使うのがすごく好きなんだけど、Anthropicに買収されてからの方向性にはちょっと悲しくなっちゃう。いい感じのNodeが欲しいけど、バイブコーディングは避けたいんだよね。

買収されたとき、Bunが今まで通り続けられるってみんなが希望してたのが面白いよね。でも結局それが全部捨てられちゃったのが悲しい。(もちろん、悲しい意味で面白いけど。)

「バイブコーディング」から生じた具体的な問題が特定されてない限り、実際の真実を確認せずにそれを完全に拒絶する反応は、批判してる行動そのものを示してるんじゃない?

Bunチームによると、Anthropicの買収の前から数ヶ月間、すでに「バイブコード化」されていたらしいよ。

バイブコード化によって何か重大な問題が発生したことはある?はっきり言っておくけど、マージを支持してるわけじゃないよ。このYOLO的なエンジニアリングアプローチには反対だし。ただ、マージ発表以降、どうなってるのか気になってるだけ。

彼らの決定は理解できるよ。メンテナが自分たちで書いてないコードベースをどう理解するんだろう?全ての書き直されたコードをレビューするのは不可能だよ。コードの行数が多すぎるし、正確には100万行だしね。[1]

そうだね。今はかなり大きなコードベースの責任を持ってるけど、そのコードをエージェンティックツールで生成した人が、どう動いてるかほとんど理解してないんだ。重要じゃない部分ならそれでもいいけど、インフラの重要な部分ではちゃんと考えられてないとダメだよね。

READMEに「Zigで書かれている」ってまだ書いてあるのが面白いよね。

ZigからRustに急に変わったからって、特定のファイルが何を含んでいるかや、どう動いているか、他のファイルとの関係がわからないってことにはならないと思う。結局、同じことをやってるだけで、文法が違うだけだし。ちなみに、これがRustの開発者たちにとって見た目がダサく感じる理由でもあるよね。彼らはコードが自分たちにとって馴染みのあるものに見えるようにしたかったんだと思う。でも、これを2.0って呼ぶべきだったと思う。そうすれば、そんなに急いでる感じもしなかっただろうし(1.3.14にはいくつかの後退があって、みんなあんまり気にしてないし、今は小さなRustの火事がたくさんあるからね)。全体的に見ると、もっと大きな問題はBunが目新しいものを追いかけてばかりで、結局何も終わらせてないことだよ。テスト関連のものを見てみればわかる。ほとんどがVitestだけど、全部じゃないし。Jestもほとんどだけど、全部じゃない。pnpmもほとんどだけど、全部じゃない。今は画像関連のものがあって、Sharpもほとんどだけど、全部じゃない。開発サーバー?Viteもほとんどだけど、やっぱり全部じゃない。長時間動くプロセス…ほとんどNodeみたいだけど、メモリリークがあって(Rustの動機になるのは確か)。Imageのルーチンについて投稿してるのを見たとき、心が沈んだよ。別の目新しいものだなって。テストのバグとも重なったから、完全にVitestに移行した。

だから、約200万行の(ほとんど)zigを書けたのに、同じテストスイートが含まれている200万行のzigを使っても、約100万行のrustをレビューするのは無理ってこと?リライトがいいアイデアだとは思えないし、うまくいくとも思えないけど、君の主張にも同じように納得できないな。

どうしてメンテナーが自分たちが直接書いてないコードベースを理解できるの?君は新しいパラダイムを理解してないと思う。「人間がコードベースを理解する」って考えはもう古い。コードベースはAIによってメンテナンスされ、レビューされるようになる。これが悪いことだと思うかもしれないけど、人類の歴史の多くの側面で、私たちは理解を便利さと引き換えにしてきた。それが、スーパーマーケットで食べ物を買う理由なんだよ。これは人類のあらゆる分野で起こってきたことで、コード生成が免疫を持つと思うのは愚かだ。もう一度言うけど、これが悪いことだと思うかもしれないけど、これは人類が機能している方法なんだ。「じゃあ、誰がこれをメンテナンスするの?」AIだよ。「じゃあ、もしそれができなくなったらどうするの?」まあ、もし太陽フレアとかで電気が切れたらどうする?わかる?

Bunのメンテナーたちは、自分たちのコードベースをしっかり理解してると思うよ。彼らが理解してないと思う理由は何なの?最初にコードを書いたのは彼らだし、アーキテクチャも知ってる。どの部分がどの機能を果たしているかも分かってるはずだよ。

高い離職率のある企業文化では、結構普通のことだよ。10年前のコードベースを「メンテナンス」しているチームに配属されることになる。チームで最も経験のある人も1年か2年しかいないし、いつも通りのビジネスって感じ。1M行以上のコードが何をしているのか、誰も知らない。誰もそれに情熱を持って取り組んでいるわけじゃない。要求が一杯渡されて、必要な部分だけを触るためにブラックボックス化するだけ。だから、同じことをするバックグラウンドサービスの実装が14個、依存関係が8個、スタイルやアプローチが完全にバラバラなフレームワークが6個もあるんだ。あんまり関係ないけどね。

RustとZigの言語としての比較はさておき、Zigのツールチェーンは他のプロジェクトに統合するのが確実に簡単だよね。

これは言語自体のメリットとは関係ないけど、完全にバイブコーディングで書き直されたことに関係してるよね。もしRustからZigに移行してたら、同じ反応があったと思うよ。

この決定はエンジニアリングよりも政治的な理由が強い気がする。Rustの書き換え以降、BunにセグメンテーションフォルトやOOMが増えたのを見たことある?セキュリティの脆弱性が増えたとか、バグが増えたとか?(もちろん、まだ書き換えも終わってないから、そんなことはないだろうけど)。AIの関与について考えると嫌な気持ちになるから、この決定をしてるように見える。自分は嫌な気持ちでエンジニアリングツールを選ぶわけじゃなくて、やりたいことを実現できるから選んでる。もしBunがバグが増えて、使いにくくなったら、使うのをやめるよ。でも、それはデータに基づいて判断するから、感情じゃない。JarredはBunでたくさんの素晴らしいことをやってきたし、彼がこの書き換えを出すのは、彼の品質基準を満たしてない限りあり得ないと思うから、彼のことを見守るつもりだよ。

すべての決定は、ツール、その未来、そして現在・未来のニーズについての不完全な情報をもとに行われる。これは普通のエンジニアリングの決定のタイプだよ。Bunが完全に確率的に生成されたコードに置き換わるのは赤信号だと思う(それがそうでないにしても)。でも、Bunは大企業に買収されたから、これもまた古典的な赤信号だよね。これらの理由から、yt-dlpがBunをサポートしないのも納得できる。どちらにしても、これはニッチなユースケースに見える。自分は何年もyt-dlpを使ってきたけど、Bunと一緒に使ったことはない。もしAnthropicが最近の買収をyt-dlpでサポートしたいなら、フォークして自分たちでサポートすればいいんじゃない?

もっとセグメンテーションフォルトやOOM、その他の問題が起こるのを待ってるなら、それは問題を避けられなかったってことだと思う。この方向性は正しいと思うし、歴史が誰が正しいかを示すだろうね。

BunがRustのリライト以降、セグフォルトやOOMが増えたのを見たことある?セキュリティの脆弱性が増えたとか、バグが増えたとか?(もちろん、まだリライトは完了してないから、そんなの見てないよね。)逆に言うと、yt-dlpの作者がBunの新しい開発プロセスをテストして、セグフォルトやOOM、セキュリティの脆弱性が増えるかどうかを確認する責任はないよね。もしセキュリティの脆弱性が増える可能性があると思ってたら、ユーザーに実験するのは無責任だと思う。だから、「今すぐ新しいbunリリースをメインから切り取ってサポートするつもりはない」って言うのが責任ある態度だと思う。将来のリリースをサポートしないつもりだなんて、再評価する計画もなくてちょっと残念だな。一方で、yt-dlpの開発者たちは誰にも何も義務はないけどね。

知らないかもしれないけど、リライトは出荷された後、問題が見つかって戻されたんだよ。それが君が自信を持っている「Jarredの高品質基準」だよ。

エンジニアリングの重要な要素は、現在の軌道を予測することだよね。それを考えると、悪い感じがするツールは避けるのが絶対に理にかなってる。事故になるツールから離れるのが一番簡単なのは、統合する前なんだ。

1M行のコードを別の言語にリファクタリングして7日以内にマージするのは責任ある行動じゃないと思う。それに依存するコードは書かないよ。

“... 彼がこのリライトを出荷するなら、彼の品質基準を満たさないとは考えにくい”ってのは、君が批判している決定と同じくらい感覚的だよ。

これはあまり政治的な話じゃないよ。いや、言い換えると、もしかしたらyt-dlが政治的になってるかも。基本的に「コア依存関係は、6ヶ月から1年の間に広く使われるまで採用しない」という考え方は、一般的には政治的じゃない。100万行のコードを完全に書き直すのは、実質的に前のABIと同じ新しいランタイムを作ることだから、多くの下流の利用者にとっては、プロダクション依存関係として受け入れるのは不安だよ。仮にBunが手作業で完全に書き直されたとしても、同じ状況になると思う。個人的には、この種の決定はかなり標準的だと思うし、BunのLLM書き直しは全体的に良い品質になると思うけど、自分の製品や会社をそれに賭けるつもりはないな。リスクのある変更を自分でやりたいし、下流の依存関係に強制されるのは嫌だ。

だからBunの書き直しも政治的だね。彼らは自分たちの「バイブコーディングされた改善」を上流に持っていけなかったから、仕方なくRustで書き直すことにしたんだ。書き直しのための議論にはデータが裏付けられていなかったよ。

macOS のアップデートのたびに、トップコメントは「安定するまで6ヶ月待とう」って言ってるけど、プログラムの大規模な書き直しが AI をたくさん使ってるときは、YOLO しないと非合理的だって言われて、たぶん嫌な奴扱いされるよね。

これはRustへの移行についてだけど、まだリリースされてないよね。>「予測可能な互換性とセキュリティの問題があるため」うーん、ZigのBunは結構クラッシュするし、yt-dlpが予測可能な互換性の問題について詳しくリンクしてくれたらいいのに。両プロジェクトにはテストスイートがあって、理想的にはそれがあれば素早い書き換えができるはずなんだけど。状況を悪化させたくないのかもしれないけど、もし特定の問題を見つけてるなら、ぜひ見せてほしい。Bun.rsが1.4か、2.0であってほしいし、マイナーリリースじゃなくて、いくつかのアルファやベータリリースがあるといいな。

開発作業をサポートするためにLLMを使うことを説明する新しい用語が本当に必要だと思う。「バイブコード」には厳密な定義があるけど、誰も気にしてないし。Rustのポートが元の定義通りに100%「バイブ」だったとは信じがたい。感情の大混乱で、ポジティブな面もネガティブな面も理解できるけど、誰かが「バイブコーディング」を一般的なLLMの使い方のスラングとして使うと、実際にどんな問題を抱えているのかを把握するのが難しくなる。自分はLLMを使って開発をサポートしていて、エンジニアとして気にするすべての面で、より良い仕事をより早くできてるよ。

私はLLMを使って開発を手助けしてもらってるけど、確実に(エンジニアが気にするあらゆる面で)より良い仕事を早くできてるよ。研究によると、実際には早くなってないし、むしろ遅くなってるかもしれない。こんな新しい技術を研究するのは難しいけど、楽観的に見ても、実証データでは一部の分野で約3%の向上しか示されてない。コードを書くことは、私たちの仕事で制約になることはほとんどないんだ。

確かに「バイブコーディング」は元々「雰囲気に身を任せて[...] コードの存在を忘れること」って意味だったんだ。https://x.com/karpathy/status/1886192184808149383 この特定のポートの場合、ポートがすごく早く行われたから、人間が翻訳の正当性を確認していないのは明らかだよ。手動での確認が行われるかどうかも不明だしね。とはいえ、ほとんどのソフトウェアプロジェクトは、AIが登場するずっと前からダイクストラの基準で「バイブコーディング」をやってたよ。雰囲気に乗って、正しさの存在すら忘れるって感じ ;) 複雑なコードの正しさを保証するのは難しいけど、今やデータセンターに10億人のハッカーがいるから、ますますそれが必須になってくるだろうね。--- 編集: 「Bunの未公開Rustポートには13,365のunsafeブロックがある」 https://news.ycombinator.com/item?id=48239790

bunが100万行のvibecoded PRを使って出荷したってマジ?マージしたのは知ってるけど、新しいディレクトリに何かをマージするのは、実際に顧客に提供されているコードとは全然関係ないよね。もしvibecodedのrustバージョンが顧客に提供されてるなら、ただの実験的なハックじゃなくて、ちょっとヤバいよ。

正直に言うと、primeagenの意見に同意するよ。LLMはコードを一つの言語から別の言語に翻訳するのが結構得意だと思う。私の知る限り、彼らはファイルごとに言語を変換していたみたい。これが「unsafe」なコードが大量に生まれた原因だね。とはいえ、正直に言うと、これは色々な問題を引き起こしていて、これからも引き起こし続けるだろう。私はこの見方でいる方が楽だな。

primeagenの意見 彼はYouTubeのコンテンツクリエイターで、有名人で、真剣なプログラマーじゃないよ。

誰かの人種や宗教を差別してるわけじゃないしね。もしメジャーな雰囲気のある表面を望まないなら、それを defend する必要あるの?開発者としての「アート的」ライセンスの一部だと思うけど。ソフトウェアって元々意見が入ってるもんだってこと、忘れちゃったのかな。

その通り… フォークして最低バージョンを上げるのが難しいわけじゃないしね。たぶんどこかに一つの数字があるだけだと思う(実際には見てないけど)。動けば、そのまま動き続けるよ。単にサポートやメンテナンス、問題解決をしたくないだけなんじゃない?

実際に yt-dlp を bun で使ってたのは誰なの?主な用途は YouTube が送ってくる JavaScript チャレンジを解決することなんだけど、デフォルトで Deno を使ってるからね。正直、ユーザーがシステムに Node を持ってる可能性が高いのに、なんで Deno か Bun を好むのか、ちょっと分からないな。