基于 Bun 1.4 新特性 Bun.WebView 构建 shot-scraper 风格 JSON API
今天,Bun 1.4 终于正式发布,这是自几个月前那场引人注目的 Rust 重写以来的首个稳定版本。
有意思的是,Rust 重写在发布说明中被一笔带过,后者罗列了一长串新特性,并宣称修复了多达 2,900 个 bug:
Bun 1.4 从 Node.js 测试套件中引入了 +1,517 个测试——这是自 Bun 1.0 以来 Node.js 兼容性方面最大的一次跃升。Bun v1.4 还修复了超过 2,900 个问题。它将空闲 CPU 使用率降低了 5 倍,内存占用最高减少 35%,在 Linux 上的启动速度提升了 50%。它新增了
Bun.Image、Bun.WebView、Bun.markdown、Bun.cron()、Bun.Terminal、bun run --parallel、bun test --parallel、bun audit fix、bun dedupe和bun prune。同时,Bun 也从 Zig 重写为 Rust。
其中最吸引我注意的是 Bun.WebView,它通过 macOS WebKit 或 Chrome DevTools Protocol (CDP) 控制本地 Chromium 进程,为 Bun 内核添加了一流的浏览器自动化支持。
我让 Claude Code for web 构建了一个 Web API 的原型,用来加载网页并对其执行 JavaScript,这个灵感来自我的 shot-scraper javascript 命令行工具——部分原因是想看看这类服务需要多少内存。
这是 该 TypeScript 服务端的实现,看起来运行完整的 Chrome 来处理复杂页面需要 192MB 到 256MB 的容器——这是通过 cgroups 测试得出的。