导读 | 近日,新型 JavaScript 运行时 Bun 正式发布了 0.7 版本,带来了重大的升级。据悉,Bun 是一个配套齐全的 JavaScript 解决方案,集运行时、打包器、转译器和包管理器于一体,追求极致的运行速度。此次更新主要集中在与 Node.js 的兼容性提升和新功能支持上。 |
首先,Bun 宣布与流行的前端打包工具 Vite 实现了初步兼容。开发者现在可以使用 Bun 直接运行 Vite 项目,享受热更新等方便功能,无需进行额外配置。不过由于 Bun 和 Vite 内部机制不同,Vite 目前仍未使用 Bun 的打包和转译优势。但这为未来的深度集成创造了条件。
然后,Bun 实现了浏览器环境下的 Worker 线程支持。开发者现在可以通过新加的 Worker 类创建子线程,利用多核 CPU 提升计算密集型任务的执行效率。Bun 的 Worker 天生支持模块化、TypeScript 等特性,比浏览器原生 Worker 用起来更顺手。值得一提的是,流行的 comlink 库也可以无缝应用在 Bun 的 Worker 中,让线程间通信更加方便。
此外,Bun 还原生支持了异步上下文存储 AsyncLocalStorage,这是许多框架实现异步操作追踪的关键。接下来 Bun 有望兼容 Next.js 等流行框架。
在 Node.js 兼容性方面,Bun 追加实现了事件循环中的定时器回调保证异步执行的特性,对命令行应用来说重要的标准输出流也增强了窗口尺寸查询支持。特别是在 TLS 网络方面,Bun 改进了密钥导出、会话重用等接口的实现,满足了流行加密库的需求。
当然,此次更新也增加了实用的新功能。比如,开发者现在可以更容易地在主线程与 Worker 之间传递数据,还可以利用结构化克隆算法(structuredClone())进行高效的深拷贝。将可读流转换为 FormData 对象的 API 也成为可能。测试框架方面,新增了在第一个测试失败后立即结束的 “--bail” 模式,提高了 CI/CD 环境下的效率。WebSocket 连接也增强了 ping/pong 监听支持。
一些棘手的 Bug 导致的内存泄露和性能问题也得到修复。总体来看,Bun 0.7 版本带来的升级让其在与 Node.js 的竞争中又近了一步。随着兼容性进一步提高,开发者可能会看到越来越多的项目转向使用 Bun。我们拭目以待 Bun 后续的表现。毕竟,一个快速、高效、易用的 JavaScript 解决方案,对开发者的吸引力可想而知。
原文来自:https://www.oschina.net/news/250429