Bun v1.2.21/22,统一SQL客户端、增强YAML支持和异步堆栈跟踪功能
Bun v1.2.21/22 版本带来了重要的更新,包括统一的 SQL 客户端,原生 YAML 支持和异步堆栈跟踪功能,这些更新将提高开发者的效率,简化 SQL 操作,增强对 YAML 格式的支持,以及提供更准确的异常诊断能力,这一版本有望为开发者带来更加流畅和高效的编程体验。
javascript 运行时 bun 最近推出了两个关键版本更新。v1.2.21 于 2025 年 8 月 25 日发布,修复了 69 个问题并带来了多项重要新功能;紧接着在 9 月 14 日发布的 v1.2.22 版本则引入了广受期待的异步堆栈跟踪能力,显著增强了调试体验。

统一 SQL 客户端:一套 API 轻松对接三大数据库
本次更新中最亮眼的功能之一是
Bun.SQL—— 一个无需额外依赖即可连接 MySQL/MariaDB、SQLite 和 PostgreSQL 三种主流 SQL 数据库的通用客户端。

支持 MySQL 与 MariaDB
Bun 的 MySQL/MariaDB 驱动采用 Zig 编写,在性能方面表现优异。开发者可通过配置对象或连接字符串轻松建立数据库连接:
import { SQL } from "bun";const sql = new SQL({ adapter: "mysql", hostname: "127.0.0.1", username: "user", password: "password", database: "buns_burgers",});// 使用模板字符串执行查询const users = await sqlSELECT * FROM users;.all();
在 v1.2.22 中,MySQL 适配器进一步增强,新增
affectedRows和
lastInsertRowid返回值,修复了字段类型解析错误,并增加了对 TLS 加密连接和
mysql_native_password认证机制的支持。
内建 SQLite 支持
Bun.SQL同样原生支持 SQLite,将原本仅限于 PostgreSQL 的简洁模板语法扩展至 SQLite 用户:
const db = new SQL(":memory:");await dbCREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);const users = await dbSELECT * FROM users ORDER BY name ASC
;
原生 YAML 解析支持
v1.2.21 引入了内置的 YAML 解析器,允许开发者直接导入
.yaml或
.yml文件,也可通过
Bun.YAML.parse在运行时解析 YAML 字符串,延续了 Bun 对 JSON 和 TOML 的原生支持传统:
// 直接导入 YAML 文件import pkg from "./package.yaml";console.log(pkg.name); // "my-package"// 动态解析 YAML 字符串import { YAML } from "bun";const items = YAML.parse("- item1\\n- item2");
性能全面优化
postMessage 性能飙升 500 倍
Bun v1.2.21 极大提升了 Worker 间使用
postMessage发送字符串以及
structuredClone克隆字符串的效率,最高提速达 500 倍。v1.2.22 更进一步,为纯 JavaScript 对象(仅含原始类型如字符串、数字、布尔值)添加了快速处理路径,使性能提升达到 240 倍。
显著降低空闲 CPU 占用
此前
Bun.serve会每秒唤醒一次以更新 Date 头部缓存,导致即使无请求也会产生轻微 CPU 消耗。现在该定时器仅在有请求到来时触发,服务器空闲时进程真正进入休眠状态,几乎不占用 CPU 资源。
异步堆栈追踪上线
Bun v1.2.22 正式支持异步堆栈跟踪,解决了长期困扰开发者的调试难题。如今抛出的错误将完整展示 async/await 的调用链路:
async function foo() { return await bar();}async function baz() { await 1; throw new Error("oops");}// 现在可清晰看到异步调用路径:// at baz (async.js:11:13)// at async bar (async.js:6:16)// at async foo (async.js:2:16)
安全机制与工具链增强
秘钥安全管理:Bun.secrets
Bun.secrets利用操作系统的原生凭据存储系统安全地保存和读取敏感信息,避免明文存储密钥。其在 macOS 上集成钥匙串服务,Linux 使用 libsecret,Windows 则调用凭据管理器。
包安装前安全扫描 API
bun install现支持安装前漏洞检测。用户可在
bunfig.toml中配置扫描策略,若发现严重级别为“致命”的漏洞,安装过程将自动中止。
bun audit 新增过滤选项
bun audit命令新增多个实用参数,例如
--audit-level设定最低告警等级、
--prod仅检查生产依赖、
--ignore忽略特定 CVE 编号等,便于无缝集成到 CI/CD 流程中。
构建与打包能力升级
Bun.build() 支持生成可执行文件
原先只能通过命令行使用的
--compile功能现已开放至 JavaScript API。开发者可通过代码动态生成独立可执行程序,并支持跨平台编译:
await Bun.build({ entrypoints: ["./cli.ts"], compile: { target: "bun-windows-x64", outfile: "./my-app-windows", windows: { icon: "./icon.ico", }, },});
Windows 可执行文件元数据嵌入
针对 Windows 平台生成的独立应用,现可嵌入标题、发布者、版本号、描述及版权信息,这些内容将在资源管理器的文件属性中显示。
Node.js 兼容性持续完善
这两个版本共修复了大量 Node.js 兼容性问题,涵盖:
- WebSocket 升级中断引发的 TypeError
- N-API 插件中的多处断言失败
- child_process 模块中 stdio 流的处理缺陷
- crypto 模块算法名称大小写不敏感问题
- readline、net、http2 等模块的多项兼容性补丁
其他值得关注的改进
- Bun.stripANSI():基于 SIMD 加速的 ANSI 转义序列清除函数,速度比 npm 上的 strip-ansi 包快 6 至 57 倍
- TTY 支持优化:修复 stdin 关闭后交互式终端无法正常工作的问题
- 代码签名支持:Windows 版本的 bun.exe 已进行数字签名,消除首次运行时的安全警告
- bunx 新增 --package 参数:支持运行包名与二进制名不同的命令行工具
-
事件循环延迟监控:新增
perf_hooks.monitorEventLoopDelay()
API,用于性能分析
这两次版本迭代充分体现了 Bun 团队在性能调优、开发者体验提升和生态兼容性方面的坚定投入。统一的 SQL 接口简化了数据库操作流程,异步堆栈跟踪极大改善了复杂异步代码的调试效率,而一系列底层性能优化也让 Bun 在众多 JavaScript 运行时中继续保持领先优势。
源码地址:点击下载
网友留言(0 条)