您现在的位置是:首页 > 文章详情

Bun 发布 1.2.19 与 1.2.20:新功能与性能改进

日期:2025-08-13点击:55

JavaScript 生态系统中备受瞩目的全栈工具包 Bun 在过去一个月发布了两个重要版本 1.2.19 和 1.2.20,带来了大量令人振奋的新特性和性能优化。作为一个集运行时、包管理器、构建工具和测试框架于一体的完整解决方案,Bun 正在以惊人的速度追赶甚至超越传统的 Node.js 生态工具。

包管理改进:隔离安装与智能迁移

Bun 1.2.19 最引人注目的特性之一是全新的 bun install --linker=isolated 选项。这一功能借鉴了 pnpm 的隔离安装理念,通过符号链接的方式创建独立的 node_modules 目录,有效解决了包依赖冲突问题。对于大型项目和 monorepo 架构而言,这无疑是一个巨大的改进。

更令人惊喜的是,Bun 1.2.20 引入了自动 yarn.lock 迁移功能。当你在项目中运行 bun install 时,Bun 会自动检测并迁移现有的 yarn.lock 文件到 bun.lock,同时完整保留原有的依赖版本信息。这种无缝迁移大大降低了从 Yarn 切换到 Bun 的门槛,让开发者能够轻松享受 Bun 带来的性能提升。

新版本还增强了工作空间支持,bun outdatedbun update --interactive 命令现在支持 --recursive 标志,可以跨所有工作空间进行依赖管理。配合新的 --filter 选项,开发者可以精确控制更新范围,让 monorepo 的维护变得更加高效。

性能优化

性能一直是 Bun 的核心竞争力,新版本在这方面更是表现出色。Bun 1.2.20 对 AbortSignal.timeout 进行了重写,性能提升了惊人的 40 倍。这一优化通过使用与 setTimeout 相同的底层实现来实现,展现了 Bun 团队在底层优化方面的深厚功力。

内置的 PostgreSQL 客户端 Bun.sql 也获得了重大性能提升,通过自动查询流水线技术,性能提升最高可达 5 倍。在高并发场景下,Bun.sql 现在比在 Bun 中运行的 postgres 包快约 3.4 倍,比在 Node.js 中运行的同一包快 6 倍。这种性能优势对于构建高性能的后端服务具有重要意义。

另一个值得关注的优化是启动时间的改进。Bun 1.2.19 通过底层 Zig 代码的优化,实现了约 1 毫秒的启动时间缩短和 3MB 的内存使用减少。虽然看似微小,但这种细节上的打磨体现了 Bun 团队对性能极致追求的态度。

测试框架增强

bun:test 测试框架在新版本中也获得了显著改进。Bun 1.2.20 重新设计了差异输出,引入了更清晰的可视化比较,包括对空白字符差异的高亮显示。这让开发者在调试测试失败时能够更快速地定位问题所在。

新增的 expectTypeOf 功能让类型级别的测试成为可能。开发者现在可以在运行时验证 TypeScript 类型,这对于类型安全要求较高的项目具有重要价值。配合 toHaveReturnedWithtoHaveLastReturnedWithtoHaveNthReturnedWith 等新的匹配器,mock 函数的测试变得更加全面和便捷。

值得一提的是,新版本还引入了 mock.clearAllMocks() 函数,可以一次性重置所有 mock 函数的状态。这个看似简单的功能实际上大大简化了测试清理工作,特别是在复杂的测试套件中。

开发工具生态完善

Bun 1.2.19 为包管理添加了全新的 bun pm pkg 命令,用于程序化管理 package.json 文件。这个工具支持获取、设置和删除配置项,并提供了自动修复常见错误的功能。对于需要自动化配置管理的项目来说,这是一个非常实用的工具。

bun why 命令的引入解决了依赖关系调试的痛点。开发者现在可以追踪任何包的完整依赖链,了解为什么某个包会被安装。这个功能支持 glob 模式匹配,可以批量查询多个包的依赖关系。

VS Code 集成也得到了加强,官方扩展现在支持原生的测试资源管理器界面,可以实时显示测试发现、进度和结果。这种深度集成让 Bun 的开发体验更加流畅。

兼容性持续改进

Bun 团队继续在 Node.js 兼容性方面投入大量精力。新版本改进了 V8 C++ API 的实现,新增了对 v8::Array::Newv8::Object::Get 等核心函数的支持,让更多的原生 Node.js 插件能够在 Bun 中正常运行。

node:module 模块新增了 SourceMap 类和 findSourceMap() 函数的支持,node:fs 的 glob 功能也得到增强,现在支持数组形式的模式匹配和排除选项。这些看似细微的改进实际上解决了许多实际项目中的兼容性问题。

构建工具优化

Bun 的构建工具也没有被忽视。新版本改进了 tree-shaking 算法,现在可以更好地处理死代码中的 try...catch...finally 块,并且能够识别和移除未使用的 Symbol.for() 调用。这些优化有助于生成更小的构建产物。

特别值得一提的是,Windows 平台的独立可执行文件现在支持 Authenticode 代码签名。Bun 通过将打包的代码嵌入到 PE 文件的专用 .bun 段中,解决了之前无法进行代码签名的问题。这对于需要分发 Windows 应用程序的开发者来说是一个重要的改进。

平台支持与稳定性

Bun 1.2.20 为 Windows 用户带来了长路径支持,可以处理超过 260 字符的文件路径。这个改进通过应用程序清单实现,消除了深层目录结构项目中常见的文件相关错误。

新版本还修复了大量的稳定性问题,包括内存泄漏、竞争条件和各种边界情况的处理。空闲时的 CPU 使用率也得到了显著降低,这对于长期运行的服务器应用程序特别重要。

展望未来

从 Bun 1.2.19 和 1.2.20 的更新可以看出,Bun 正在朝着成为 JavaScript 生态系统中最全面、最高效的工具包的目标稳步前进。无论是性能优化、功能完善还是生态兼容性,Bun 都展现出了令人印象深刻的进步速度。

对于正在寻求更快构建速度、更好开发体验的团队来说,现在可能是尝试 Bun 的绝佳时机。随着自动迁移工具的完善和兼容性的持续改进,从现有工具链切换到 Bun 的成本正在不断降低,而收益却在不断增加。

可以预见,随着 Bun 的持续发展,JavaScript 全栈开发的格局可能将迎来新的变化。这个由 Zig 语言构建的高性能工具包,正在用实际行动证明,开发工具的性能极限远未被触及。

原文链接:https://www.oschina.net/news/365939/bun-1-2-20-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章