Bun 的五月更新:性能提升与内存优化
在刚刚过去的五月,Bun团队只发布了三个小版本更新(v1.1.8、v1.1.9和v1.1.10),在不断优化性能和提升稳定性的同时,也为开发者带来了许多新的功能和改进。这些更新不仅修复了大量的bug,还对关键功能进行了显著的优化,尤其是fetch函数的内存使用效率。
主要更新内容概述
这三次更新总共修复了超过140个bug,涉及从Windows平台稳定性到Node.js兼容性的各个方面。以下是几个关键改进:
- 异常处理改进:添加了对
process.on("uncaughtException")
和process.on("unhandledRejection")
的支持,提升了应用程序的错误处理能力。 - 性能优化:多项功能性能提升显著,例如
JSON.parse
速度加快,atob()
函数提速8倍,toString('base64url')
提速5倍,fetch()
函数提速并减少内存使用。 - 新功能添加:新增了
dns.prefetch()
API和expect().toBeReturned()
matcher,进一步丰富了Bun的功能集。 - Windows改进:解决了多个Windows平台上的兼容性问题,提升了安装、路径加载等操作的可靠性。特别是
bun install
在未缓存的情况下速度提高了2倍,显著提升了开发者在Windows平台上的体验。 - Bun Shell和Bun APIs更新:添加了对
[Symbol.dispose]
的支持,修复了许多Bun Shell相关问题。
fetch内存使用优化
在最新的v1.1.10版本中,Bun团队重点优化了fetch函数的内存使用,使其在处理HTTP请求时更加高效。以下是具体的优化过程:
-
Promise与Response管理:在进行HTTP请求时,
Promise
对象必须一直保留,直到HTTP状态码和头信息被接收。因此,在Bun v1.1.9及以前版本中,Response
和其主体在整个响应过程中都被保留。这种方式虽然简单,但导致了不必要的内存占用。 -
弱引用与强引用结合:为了优化内存使用,Bun利用了JavaScriptCore的
JSC::Weak
和JSC::Strong
引用机制。首先在获取HTTP头信息和状态码后释放Promise
的强引用,接着通过弱引用和终结器函数管理Response
对象的生命周期。 -
引用计数机制:仅依靠弱引用并不足以完全管理
Response
对象的生命周期,特别是在处理流式数据时。为此,Bun引入了引用计数机制。当存在未处理的数据时,通过增加引用计数来保持Response
对象;当垃圾回收器通知Response
对象已被回收时,若引用计数为零,则释放相关资源。
这些优化措施大幅减少了fetch函数的内存占用,使其在处理大规模数据和高并发请求时更加高效。
结语
Bun团队在五月的三个版本更新中,通过修复大量bug、优化性能和提升稳定性,进一步增强了Bun作为现代JavaScript运行时的竞争力。特别是fetch内存优化的引入,以及bun install
在Windows平台上速度的显著提升,显示了Bun团队在性能调优方面的不懈努力。期待未来Bun能继续带来更多创新和改进,助力开发者构建更加高效和可靠的应用。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MybatisPlus“ 漏洞 CVE-2024-35548 ”申明 & 探讨
MybatisPlus 最新漏洞 CVE-2024-35548 说明,对于各种所谓的漏洞申明,也是让我们很头疼的, 出于使用者和 ORM 设计者的理解不一样产生是否为漏洞的分歧,针对这个问题官方也做了很多的说明: 【预防安全漏洞 https://baomidou.com/reference/about-cve/】 【数据安全保护 https://baomidou.com/guides/security/】 MybatisPlus 最新漏洞 CVE-2024-35548 申明 严格意义该问题并不属于真正意义上的漏洞,请问那个 orm 不允许字符串拼接 ?? 【不同意该观点可以留言探讨】 提交者也是缺乏基本常识 “ SQL 片段 ” 主动交给前端传入这是多么 低级的错误甚至低能 的行为。 更何况官方文档多处强调这种行为是不安全的不推荐的,也提供了判断可能存在注入的检查方案,然而提交漏洞者视而不见! 还有 CVE 的权威也是值得怀疑的没有做严格的审定就判定为漏洞,这也是极其荒唐的行为。 这种所谓的 “ 漏洞 ”,给开源项目和用户造成非常大的负面影响和困扰!! 再次号召一些 喜欢 CVE 的人...
- 下一篇
gRPC 1.64.1 发布,跨语言 RPC 框架
gRPC 是可以在任何环境中运行的现代开源高性能 RPC 框架。gRPC 1.64.1 现已发布,包含了一些完善、改进和错误修复;具体更新内容如下: Core [StatsPlugin] 修复 use-after-free 问题 (#36664)(#36670) C++ [OTel] 为 grpcpp_otel_plugin 生成 pkg-config 文件 (#36686)(#36722) [OTel] 在已安装的 gRPC 配置中添加对 OTel 依赖项的 find_package 调用 (#36674)(#36688) Python [Python Server] 删除 add_registered_method_handlers 的 abstractmethod notation(v1.64.x backport)。(#36696) 更新说明:https://github.com/grpc/grpc/releases/tag/v1.64.1
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7设置SWAP分区,小内存服务器的救世主
- Mario游戏-低调大师作品
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 2048小游戏-低调大师作品
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题