Bun的最新版本1.0.19为JavaScript和TypeScript运行环境带来了一系列重要更新。这个版本在性能、兼容性和可用性方面进行了显著改进,解决了多个问题,并提高了整体的开发者体验。
增强的TypeScript支持:@types/bun
Bun 1.0.19中的一个突出更新是重新引入@types/bun
,此前称为bun-types
。这一变化极大地简化了Bun与TypeScript的整合,解决了先前实现中的一些问题。开发者不再需要为Bun特别配置tsconfig.json
,而新包无缝重导出@types/node
包,确保了兼容性和易用性。
改进的加密包支持
对于JavaScript生态系统的安全来说,Bun 1.0.19现在完全支持bcrypt
和argon2
包,这是对N-API兼容性改进的重要一步。这一更新允许开发者在Bun环境中使用这些流行的加密包进行安全的密码哈希和验证,使Bun成为构建安全应用程序的更加多功能的平台。
性能优化
Bun 1.0.19引入了几项性能增强。setTimeout
和setInterval
的实现在Linux x64系统上现在快了四倍,这要归功于一种新的计时器堆,它有效地管理计时器。对于严重依赖计时器操作的应用程序来说,这一改进至关重要,提供了显著更好的性能和资源利用。
此外,针对Linux系统上处理大量输入的Bun.spawnSync
进行了优化,为具有大量输出的子进程提供了50%的性能提升。Bun.peek()
函数也实现了惊人的90倍速度提升,而使用expect(...).toEqual
比较Map
实例现在快了100倍,这对于广泛依赖这些功能的应用程序来说,是一大益处。
用户体验改进
Bun 1.0.19引入了更好的错误处理,特别是对于使用await
在async
函数外部这类常见错误。这次更新提供了更有信息量的错误消息,帮助开发者调试并提高代码质量。此版本还解决了bun:test
中模块模拟的问题,通过直接使用模块指定符使其更直观。
安装和安装后脚本
新版本记录了安装后脚本的执行速度,帮助开发者在包安装期间识别性能瓶颈。此外,bun install --verbose
现在将安装后脚本的输出实时流式传输,提供实时反馈,增强了安装包过程的透明度。
Bug修复和升级
Bun 1.0.19修复了一系列问题,包括与--frozen-lockfile
标志相关的问题、TypeScript解析器的边缘案例以及与环境变量相关的回归。此更新还带来了SQLite版本的升级(至v3.44.2),确保内嵌的SQLite客户端保持最新和安全。