Bun是一个集打包工具、转译器和包管理器于一体的JavaScript运行时,由Jarred Sumner于2023年10月20日发布了1.0.7版本。本次更新实现了对Node.js运行时的多项兼容性改进,并修复了近60个bug。
根据发布说明,本版本对“bun install”命令进行了优化,支持可选的peerDependencies,可以避免安装不必要的依赖包。修复了一个边缘案例Bug,之前在匹配语义化版本范围时,有时会选择比较老的包版本。另外还修复了一些确定性相关问题,以提高在Linux系统下生成的bun.lockb文件的一致性。
在Node.js兼容性方面,本版本修复了child_process的IPC通信可靠性问题,改善了With Next.js的兼容性。修复了net模块socket没有正确发送end事件的Bug。解决了napi模块中的内存泄漏问题。修复了stream模块中的崩溃问题。修改了http服务器的address()方法在Unix Socket的返回值。以及修复了一些Worker Threads、Buffer、DNS模块的Bug。
除此之外,还修复了Bun运行时本身的一些问题。例如Docker容器中错误抛出端口占用的Bug,请求url端口错误的边缘案例问题,Response对象缺少statusText属性等。WebSocket客户端请求头Host字段遗漏端口的问题也已解决。
总体来说,Bun 1.0.7对该项目的Node.js兼容性做出了长足的改进,使其可以运行更多依赖Node.js API的程序。同时也修复了许多影响稳定性的Bug。这些改进使Bun在保持极快的运行速度的同时,向通用的JavaScript运行时又迈进了一步。
除修复Bug外,Bun的团队也在积极准备定期提供Windows版本的构建。他们将会切换到使用Cmake和Ninja等现代化的构建工具。并启用JavaScriptCore的Debug版本以帮助发现Bug。未来Bun也会从LLVM 16升级到LLVM 17。
本次更新表明,Bun的开发者们仍然致力于完善该项目,使其成为一个易于使用和高性能的JavaScript平台。随着项目继续成熟,我们有理由期待Bun会吸引到更多用户,成为Web开发者的不错选择。当然项目当前还有许多不足之处需要改进,我们也期待着后续版本带来的更多惊喜。