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 的构建无法加载 |
| 内存 | exit / 嵌套 run 里的定时器拖住外层 store | getStore() 仍正确,只涨内存 |
| Worker | 未先发 online,@discordjs/ws 丢掉首条消息 | 现已与 Node.js 顺序一致 |
| 引擎 | 约 350 条上游 WebKit 提交 | 不是新的一套运行时 |
怎么读这次发布
- 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 现可解码四通道 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 用房间号即可,另见 创建或加入房间 和 白板基础。
# Sources
# bun.com/blog/bun-v1.4.2
# 2026-09-05这是 Zig 改写成 Rust 的那一版吗?
不是。官方这篇写的是 v1.4.2 补丁。1.4.0 的重写故事在 8 月,不在本页日期里。
是 Elysia 自己坏了吗?
官方写:v1.4.1 的 bun build 把嵌套 var 重命名成同块 let。导入 Elysia 的构建随后无法加载。不是 Elysia 发版说明。
这是产品使用教程吗?
不是。本文只核对 9 月 5 日 Bun 博客,不是 bun upgrade 操作手册。