Bun 1.0.22版本终于面世了!这个小巧玲珑的JavaScript运行时可谓是编程界的“黑马”,短短一年多时间就以其独特的魅力吸引了众多开发者。这一次的更新再次印证了Bun背后的团队充满激情与执着,他们一如既往地致力于让Bun成为JavaScript开发的“瑞士军刀”。那么,这一期的更新又带来了哪些惊喜呢?让我们来一一揭晓。
首先,解决了在Vercel上安装时遇到的问题。我们都知道,Vercel是前沿的无服务器平台,可以让开发者零配置部署应用。但是由于某些兼容性问题,Bun的自动安装脚本在这里屡屡碰壁。这一次,Bun的创造者Jarred针对此进行了靶向优化,实现了类似posix_spawn的polyfill,终于搞定了这个“心病”。对于许多依赖Vercel作为部署环境的开发者来说,这无疑是一个大大的好消息。
其次,增加了performance.mark等用户性能衡量的API。这些API可以帮助开发者更好地分析应用的性能瓶颈所在,是调优的利器。与此同时,还增加了PerformanceObserver的支持,可以监听各类性能指标事件,实时掌握应用的运行状况。
再者,增强了child_process的功能,现在支持传递额外的pipes。这使跨进程通信变得更加方便,父子进程可以通过管道自由地相互传递数据。未来,这也为支持Playwright奠定了基础。
此外,Fetch请求现在可以启用Brotli压缩。对带宽敏感的应用来说,这无疑是个福音。不仅如此,Bun的创造者们还调整了Brotli的链接方式,从动态链接改为静态链接,以解决某些Linux发行版缺乏必要库导致的问题。
Buffer模块也迎来了性能提升,Buffer.concat的速度提高了15%至400%。考虑到Buffer在Node开发中的广泛应用,这个优化可以带来很大的整体收益。此外,还修复了Buffer.concat在处理大量缓冲区时可能导致崩溃的bug。
Console模块的console.table用法也得到增强,现在可以正确处理表格中包含 emoji 和 Unicode 字符的情况了。许多开发者喜欢在日志中加入emoji表情,此次升级终于兑现了这一需求。
当然,此版本中还有很多其他改进,例如为worker_threads增加了argv和execArgv选项、修复了绑定到0.0.0.0时也同时绑定IPv6的bug、为assert模块增加了doesNotMatch断言等等。
总体来看,Bun 1.0.22版本带来了大量实用的优化和新功能。它们或许不那么“高大上”,但确确实实解决了开发者在使用过程中遇到的痛点。这再次彰显了Bun背后的团队秉承务实的设计理念和对开发者需求的关注。
Bun已经成长为一个“大户”,但它的开发团队仍然保持着像创业公司一样的激情与敏捷。我们有理由相信,在他们的不懈努力下,Bun将为JavaScript开发继续献上更多惊喜。让我们拭目以待吧!