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


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 语言构建的高性能工具包,正在用实际行动证明,开发工具的性能极限远未被触及。


相關推薦

2023-12-25

pt和TypeScript运行环境带来了一系列重要更新。这个版本在性能、兼容性和可用性方面进行了显著改进,解决了多个问题,并提高了整体的开发者体验。 增强的TypeScript支持:@types/bun Bun 1.0.19中的一个突出更新是重新引入@types/bun

2024-06-01

ing('base64url')提速5倍,fetch()函数提速并减少内存使用。 新功能添加:新增了dns.prefetch() API和expect().toBeReturned() matcher,进一步丰富了Bun的功能集。 Windows改进:解决了多个Windows平台上的兼容性问题,提升了安装、路径加载等操

2024-05-07

自从 Bun 1.1 版本发布以来的一个多月里,Bun 开发团队持续高频率地推出了多个小版本更新,从 1.1.1 一直到最新的 1.1.7,累计修复了上百个 bug,满足了大量用户的需求。 在这一系列的更新中,Bun 的安装依赖速度和可靠性得到了

2025-03-20

JavaScript 运行时 Bun 近期发布了 v1.2.5 版本,这是自 v1.2 以来的一次重要更新,主要聚焦于 性能优化、稳定性增强 及 开发者体验改进。以下从核心更新内容出发,解读这一版本的关键特性。 一、版本亮点速览 75 项关键 Bug

2023-08-26

些改进都有助于提升Bun的整体性能和用户体验。 在引入新功能方面,v0.8.1版本新增了对Unix域套接字的支持。这项新功能让你可以将套接字指向文件系统上的文件,而非网络主机/端口。这在运行只能从同一台机器访问的服务器

2024-01-11

等等。 总体来看,Bun 1.0.22版本带来了大量实用的优化和新功能。它们或许不那么“高大上”,但确确实实解决了开发者在使用过程中遇到的痛点。这再次彰显了Bun背后的团队秉承务实的设计理念和对开发者需求的关注。 Bun已

2024-04-03

JavaScript开发者们瞩目已久的Bun 1.1版本终于正式发布了!这次大版本更新带来了一系列令人兴奋的新特性和显著的性能提升,将为开发者们提供更加顺畅、高效的开发体验。 首先,让我们为Bun 1.1支持Windows而欢呼吧!是的,你没

2023-11-18

,以及其他潜在的稳定性问题。 综合来看,Bun v1.0.12的发布是该项目在打造更加强大、易用工具方面的一大步。这些更新和改进预期将使Bun在JavaScript开发社区中的作用更为重要,为开发者提供更高效、更可靠的编程体验。

2023-02-27

unner、npm 客户端,以及fetch、WebSocket等 Web API。 Bun 最近发布了 0.5.7 版本,主要变化: 支持FormData 引入git依赖 为AbortSignal添加fetch() 改进setTimeout()与 Node.js 的兼容性 bun wiptest变更为bun test,可更美观地打印差异信息 改

2023-07-23

运行速度。此次更新主要集中在与Node.js的兼容性提升和新功能支持上。 首先,Bun宣布与流行的前端打包工具Vite实现了初步兼容。开发者现在可以使用Bun直接运行Vite项目,享受热更新等方便功能,无需进行额外配置。不过由于B

2023-11-25

新版本1.0.14带来了对这个JavaScript运行环境的重大改进和新功能。一个重要的新增功能是Bun.Glob,这是一个用于匹配文件和字符串的快速API,使用glob模式。这个功能比流行的Node.js库(如fast-glob或micromatch)的类似功能快三倍​。

2023-08-25

npm 客户端,以及 fetch、WebSocket等 Web API。 Bun 刚刚发布了 v0.8.0,新版本主要变化: 添加调试器支持 Bun 通过 WebKit 的 Inspector Protocol 实现了调试器支持。要使用它,需开启--inspectflag 运行文件或脚本。 实现 fetch stream

2022-10-18

unner、npm 客户端,以及 fetch、WebSocket等 Web API。 最新发布的 0.2.0 较上个版本有了显著的性能提升: 此外还包含其他变化: 新增bun --hot命令,用于为 Bun 的 JavaScript runtime 提供热加载和零停机重启 新增Bun.spawn和Bun

2025-06-14

来一份早餐收入,谢谢大家~~ VSCode v1.101 和 Bun v1.2.16 的发布我看都没人其他人分享啊?看来我这个 编程记者 得好好地坚守岗位才行。 我是 All in Bun 玩家,截至现在不用 Node.js 已经半年有余,一切感觉良好,有小伙伴测试了