概要
JavaScriptランタイムのBunは2026年4月20日、バージョン1.3.13を正式リリースした。今回のリリースは機能追加・パフォーマンス向上・メモリ最適化の三本柱で構成されており、特にテストランナーへの並列実行機能の追加、bun installのメモリ使用量の17倍削減、zlib-ng統合によるgzip圧縮の最大5.5倍高速化が目玉となっている。また1,316件のJavaScriptCoreエンジンのアップストリームコミットをマージするなど、エンジン層の大規模アップグレードも含まれている。
テストランナーの強化
テストランナーには4つの新フラグが追加された。--parallel[=N]は、テストファイルをN個のワーカープロセスへ分散して並列実行する機能で、アイドル状態のワーカーが最も忙しいキューからタスクを盗む「work stealing」方式でCPUを効率活用する。--shard=M/NはCI環境向けの機能で、テストスイート全体を複数のジョブへ分割して実行できる。Jest・Vitest・Playwrightと同じ構文を採用しており、ファイルはパスでソートしてラウンドロビン分散することで決定論的な実行を保証する。
--isolateフラグは各テストファイルを同一プロセス内の独立した環境で実行し、マイクロタスクのドレイン・ソケットのクローズ・タイマーのキャンセルを行うことでファイル間の状態汚染を防ぐ。--changedフラグはgitの変更検知とインポートグラフ解析を組み合わせ、変更の影響を受けるテストファイルのみを選択的に実行することで開発イテレーションを高速化する。
メモリ使用量の大幅削減
bun installのメモリ最適化では、パッケージのtarballをダウンロードと同時にディスクへストリーム書き込みする方式に変更した。従来はアーカイブ全体をメモリ上に展開していたが、今後は圧縮済みバイト列とlibarchiveの固定サイズバッファのみを保持するため、メモリ使用量が最大17倍削減される。
ソースマップについても、VLQ(可変長量)方式からビットパック形式への移行により1マッピングあたり約2.4バイトへ削減(従来は約20バイト)、実測ではTypeScriptコンパイラのデータで11.3MBから1.29MBへと最大8倍の削減を達成した。加えてmimallocをv2からv3へアップグレードし、libpasのscavengerサポート(Windows/Linux対応)を追加することでランタイムのメモリ使用量を約5%改善している。
パフォーマンス向上:gzip高速化とJavaScriptCoreアップグレード
gzip圧縮ではNode.js 24+やChromiumが採用するzlib-ng 2.3.3を統合した。ベンチマークでは1MBデータのgzipSync(L1)で2.50倍、123KBデータのdeflate(L6)で5.48倍の高速化を記録している。配列反復処理も1.43倍に高速化された。
JavaScriptCoreエンジンには1,316件のアップストリームコミットをマージし、配列長設定のインラインキャッシュ化・toUpperCase()のJIT内在化・日付フォーマッタのキャッシュ・SIMD高速化したequalIgnoringASCIICaseなどの最適化が含まれている。
Web APIの拡充とバグ修正
Web API面では、Bun.serve()がRange: bytes=...ヘッダに対応し206 Partial Contentレスポンスを自動返信できるようになった。WebSocketはws+unix://およびwss+unix://スキームによるUnixソケット接続をサポートし、npmのwsパッケージとの互換性が向上した。暗号API面ではSHA3-224/256/384/512のcrypto.createHash()およびcrypto.subtle.digest()サポート、RFC 7748準拠のX25519鍵導出が追加された。
バグ修正では、Workerスレッド終了時のクラッシュ、socket.setTimeout()の誤動作、HTTP/2設定の不正広告、fs.watch()のデッドロック、ファイルディスクリプタリークなど複数の重要な問題が解消されている。