Bun 1.4.2とは:2026年9月Elysiaビルドとメモリリーク全解説
Bunは9月5日、v1.4.2がv1.4.1の回帰を直したと書いた。Elysiaのbun build衝突とAsyncLocalStorageリークを名指し。同頁にWebKit約350件。
2026年9月5日、Bun公式ブログはv1.4.2を出した。冒頭はv1.4.1由来の回帰を二つ名指す。Elysiaを壊したbun buildの名前衝突と、AsyncLocalStorageのリーク。同頁は@discordjs/wsのハング、Bun.ImageのCMYK JPEG復号、稀なJITクラッシュ、musl上のGCクラッシュも書く。
検索語はこのパッチ番号である。公式はbun upgradeで上げると書く。本稿はそのブログの照合であり、導入手順でも8月のZigからRustへの1.4.0物語でもない。
公開文が書いたこと
| 項目 | 公開の書き方 | 境界 |
|---|---|---|
| ビルド | bun buildが入れ子のvarを同じブロックのletと同名にした | Elysiaをimportするビルドが読み込めない |
| メモリ | exit / 入れ子run内のタイマが外側storeを保持 | getStore()は正しく、メモリだけ増える |
| Worker | onlineが最初ではなく、@discordjs/wsが先頭メッセージを逃す | 順序はいまNode.jsに一致 |
| エンジン | 上流WebKit約350件 | 新しいランタイム製品ではない |
このリリースの読み方
- 1
1.4.1のパッチである
公式は冒頭一文に二つの回帰を置く。1.4.0のZigからRustへの再出荷でも、新しいフレームワークでもない。
- 2
ビルド失敗には印字されたエラーがある
ブログは壊れた出力を印字する。var exports2 = exports2。エラーはSyntaxError: Cannot declare a var variable that shadows a let/const/class variable。同じ欠陥はletに引数名やcatch束縛を与え、誤った値を計算しうる。
- 3
リークはgetStore()を変えない
store.exit()や入れ子のstore.run()内で作ったtimer、immediate、未解決Promiseは、そのハンドルがある間、外側storeを生かし続けた。公式は戻り値は正しく、メモリだけが保持されたと書く。
- 4
画像とエンジンは同頁
Bun.Imageは4成分のCMYKとYCCK JPEGを復号しRGBへ変換する。以前はImage: decode failed。同頁は約350件のWebKitを書く。Intl、TypedArray、Proxyクラッシュ、より安いDate。
同頁のその他
JSONエラーはJSON.parseに揃う
Response、Blob、Bun.file()、proc.stdoutの.json()は、不正JSONをFailed to parse JSONだけでは拒まない。JSON.parseが出すSyntaxError文を出す。
インストールとAlpine
bun.lockbやキャッシュ済みマニフェストのパッケージ名ハッシュが名前と食い違うと、bun install / bun addがpanicしうる。musl(Alpine)では、オブジェクト配列へのsplice、shift、length短縮がGCスレッドで落ちるか、マーク中にハングしうる。
Linuxのファイル記述子
Bun.file().writer()のFileSinkをepollへ登録できなかった場合(例:fs.epoll.max_user_watches枯渇)、記述子が二度閉じられうる。
境界
公式はこの頁に1.4.3の日付を書かない。次はbun.com/blog/bun-v1.4.2。アカウント壁のない短い会議だけならwbstormの部屋IDで足りる。部屋の作成と参加とホワイトボードの基礎も参照。
# Sources
# bun.com/blog/bun-v1.4.2
# 2026-09-05ZigをRustへ書き換えた版か。
違う。この投稿はv1.4.2パッチである。1.4.0の書き換え物語は8月であり、この頁の日付ではない。
Elysia自身が壊れたのか。
公式は、v1.4.1のbun buildが入れ子のvarを同じブロックのletと同名にしたと書く。Elysiaをimportするビルドはその後読み込めなかった。Elysiaのリリースノートではない。
製品の手順書か。
違う。本稿は9月5日のBunブログの照合であり、bun upgradeの手引ではない。