近日,新型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解决方案,对开发者的吸引力可想而知。