Bun v0.8.1版本发布。这一版在0.8.0发布一天后发布,重点主要是修复了多个存在的问题和bug。
首先,新版本解决了一个很关键的问题:在处理格式错误的版本名时,bun install
会崩溃。这意味着如果用户输入"^0.0.2rc1"
等无效版本标识符,系统会停止运行。在Bun v0.8.1中,开发者团队成功地修复了这个问题,使得bun install
面对这类输入不会再崩溃。这对于用户来说,无疑增加了操作的稳定性和可靠性,提高了整体的用户体验。
此外,另一个比较严重的问题也得到了修复。原本,打包器会在知道运行时会失败且位于try/catch
块内的require()
调用时自动内联,这在打包使用可选依赖的代码时非常有用。然而这个特性被误启用,导致在某些情况下可能出现运行错误。现在这个问题已经得到了修正,大大提高了代码的运行效率和稳定性。
除此之外,Bun v0.8.1还修复了其他几个bug,包括node:http
中关于代理URL的bug、bun install
处理过期package.json
脚本的问题,以及bun --inspect
中源代码映射bug。这些改进都有助于提升Bun的整体性能和用户体验。
在引入新功能方面,v0.8.1版本新增了对Unix域套接字的支持。这项新功能让你可以将套接字指向文件系统上的文件,而非网络主机/端口。这在运行只能从同一台机器访问的服务器时十分有用,如在某些容器或代理环境下。通过这种方式,可以有效地提高数据传输的效率和安全性。
const server = Bun.serve({
unix: "/tmp/my-socket.sock", // <-- new option
fetch(req){
console.log(req.url);
return new Response("Hello world!");
}
});
console.log(`Listening on unix:///tmp/my-socket.sock!`);
性能优化是这次更新的另一个重要内容。在v0.8.0中,存在一个性能退化的问题,事件循环调度工作得不够好,造成读取请求体时未能及时处理微任务队列。但是在v0.8.1中,这个问题得到了修复。测试结果显示,新版本处理请求的速度比v0.8.0快了2.8倍,这对于用户来说,将感受到明显的速度提升。
内存管理也是Bun v0.8.1版本进行改进的地方。原先,Headers
和Blob
并未向垃圾收集器报告它们的大小,导致当Headers
或Blob
足够大时,可能会导致垃圾收集器没有如期运行。现在,Bun会向垃圾收集器报告Headers
和Blob
的大小,并且每次调用fetch()
都会向垃圾收集器报告所用内存。这一改变将有助于更好地管理内存资源,避免因内存使用过大而影响Bun的运行效率。
最后,值得一提的是,Bun 1.0计划在9月7日发布。这一新的重大版本将会带来更多功能的改进和更新,让我们一起期待它的到来!