Bunチームは2026年8月20日、JavaScript/
Bun 1.
— Bun (@bunjavascript) August 20, 20264
- Fixes over 2,900 GitHub issues
- +1,517 tests from the Node.js test suite
- Reduces idle CPU by 5x
- Reduces memory usage by up to 35%
- Starts up to 50% faster on Linux
- Rewrites Bun in Rust
Thank you everyone who contributed since Bun 1.3!https:// t. co/ 3YjnuhjE8s
先行発表していたRust版をBun 1.4としてリリース
Bun 1.
Node.js互換性を拡大、テスト通過数が1,517件増加
Bun 1.http、fs、cluster、timers、zlib、vm、streamの各モジュールではテスト通過率が97%に達し、events、trace_、sqliteでは100%としている。
この改善により、Playwright、Vitest、OpenTelemetry、dd-traceなどがBun 1.
CPUとメモリの使用量を削減、起動も高速化
公式測定では、小さな
HTTPサーバーのメモリ使用量は、ワークロードによって13~48%減少した。100万リクエストを64接続で処理する測定では、Expressのメモリ使用量が169MBから92MBへ減少した。小さな
性能改善はストリーム処理にも及ぶ。HTTP通信やファイル入出力で使うストリームをJavaScriptCoreのネイティブ実装へ移行したほか、Bun.にバックプレッシャー制御を加えた。これにより、低速なクライアントへの送信時に、未送信データが際限なくバッファリングされるのを防ぐようになった。
1.3系から組み込みAPIを拡充
Bun 1.Bun.、ブラウザーを操作するBun.、Markdownを処理するBun.、OSのスケジューラーへジョブを登録するBun.、疑似端末を扱うBun.などを挙げている。
Bun.はGitHub Flavored Markdownに対応し、HTML文字列やReact要素を生成できる。ただし、HTML出力はサニタイズされない。信頼できないMarkdownを処理する場合は、生成したHTMLを別途サニタイズする必要がある。
パッケージ管理、テスト、ビルドなどを更新
Bun 1.bun pm diffはパッケージの2つのバージョンを比較し、変更されたファイルや追加されたインストールスクリプトなどを表示する。bun audit fixは、監査で見つかった脆弱性を修正可能なバージョンへ更新する。重複するバージョンを整理するbun dedupe、ロックファイルに含まれないパッケージを削除するbun prune、依存パッケージのライセンスを一覧化するbun pm licensesも利用できる。
テストでは、過去に記録したファイルごとの実行時間を読み込む--timingsと、実行時間を記録する--update-timingsが加わった。この実行時間データは、1.bun test --parallelやシャーディングで、処理時間が偏らないようにテストファイルを振り分ける際に使われる。
Bun 1.bun build --react-compilerで有効化できる。公式測定では、同じ入力のコンパイル処理がBabelプラグインの約20倍高速だった。プロジェクト全体を単一の実行ファイルにまとめる測定でも、Babelプラグインを使った場合の13.Bun.から配信する機能や、HTTPレスポンスの圧縮も1.
CPUプロファイルとヒーププロファイルは、それぞれ--cpu-prof-mdと--heap-prof-mdでMarkdown出力できる。これとは別に、1.bun build --metafile-mdは、バンドル解析をMarkdownレポートとして出力する。いずれもターミナルで確認しやすく、LLMにも渡しやすい。
Bun.のHTTP/fetchによるHTTP/Bun.のHTTP/http3: trueを指定したサーバーを本番環境で使用しないよう注意している。
このほか、対応プラットフォームも1.
更新時に確認したい互換性の変更
Bunチームは、ほとんどのコードが変更なしで動作するとしているが、次の変更は既存プロジェクトに影響する可能性がある。
- Node.
js 26への対応に伴い、ランタイムとネイティブアドオンの接続仕様にあたるABI (アプリケーションバイナリインターフェース) の番号が147に変わった。ネイティブアドオンは再ビルドする必要がある。 res.は削除され、代わりにwriteHeader() res.を使う。writeHead() - 一時停止モードの
Readableストリームでread()を呼び出すと、1チャンクだけ返すようになった。 - 新規モノレポでは、依存関係を分離して配置する
isolatedリンカーが既定となる。既存のロックファイルを持つプロジェクトは、従来のhoistedリンカーを引き続き使用する。 - Bunを
nodeとして呼び出した場合( bun --bunやbunx --bunなど)、.envファイルを自動で読み込まなくなった。必要な場合は--env-fileを指定する。 Bun.はYAML 1.YAML 2に従い、 yes、no、on、offを真偽値ではなく文字列として扱う。- TOMLと
bunfig.の解析が厳格になり、これまで許容されていた不正な構文がエラーになる場合がある。toml
セキュリティ関連の修正も多数含まれる。TLS証明書の検証など一部の既定動作が厳しくなったため、Bun 1.
インストール済みのBunは、bun upgradeで更新できる。