Bun v1.3.12
2 days ago
- #Bun Updates
- #Browser Automation
- #Performance Improvements
- Bun 推出了 Bun.WebView,这是一款支持 WebKit 和 Chrome 后端、配备原生操作系统事件以确保类似人类交互的无头浏览器自动化工具。
- 现在可以直接在终端中渲染 Markdown 文件,使用 `bun ./file.md` 命令,或通过 `Bun.markdown.ansi()` 以编程方式实现。
- 原生 API 现已支持异步堆栈跟踪,这增强了调试能力。
- 应用内的 `Bun.cron()` 调度器支持在应用程序内部执行定期任务,采用基于 UTC 的调度并避免任务重叠执行。
- `Bun.udpSocket()` 的改进包括无需关闭套接字即可处理 ICMP 错误,以及通过标志参数检测截断的数据报。
- Unix Domain Socket 的行为现已与 Node.js 保持一致,能在现有套接字上正确返回 EADDRINUSE 错误,并在关闭后自动清理。
- JavaScriptCore 引擎已升级,包含了超过 1,650 次提交,新增了对显式资源管理(`using` 和 `await using`)的支持以及多项性能增强。
- Linux 上的独立可执行文件现在使用 ELF 部分来嵌入数据,从而消除了读取权限问题。
- 由于减少了 GC 分配且不污染 `RegExp.lastMatch`,`URLPattern` 的速度提高了 2.3 倍。
- 利用 SIMD 技术优化了 `Bun.stripANSI` 和 `Bun.stringWidth`,带来了显著的性能提升。
- 修复了 `bun build` 中的一个线程池错误,在低核心数机器上将捆绑速度提高了 1.47 倍。
- `Bun.Glob.scan()` 性能得到提升,对于有边界的模式扫描速度提高了 2 倍,并且在 Windows 上实现了内核级别的过滤。
- 在 Linux 上,支持 Cgroup 的 `availableParallelism` 和 `hardwareConcurrency` 函数现在会尊重 Docker 和 Kubernetes 中的 CPU 限制。
- HTTPS 代理的 CONNECT 隧道保持了 Keep-Alive 机制,可在多个请求间重用隧道,从而减少延迟和开销。
- 在 Linux 上,`Bun.serve()` 使用了 `TCP_DEFER_ACCEPT` 来减少事件循环的唤醒次数,进而降低了连接延迟。
- 对 Node.js 兼容性、Bun API、Web API、JavaScript 打包器、`bun test`、Bun Shell 和 Windows 支持等多个方面进行了多个错误修复。