JavaScript 运行时 Bun 近期发布了两个重要版本更新。

v1.2.21 版本于 2025 年 8 月 25 日发布,修复了 69 个问题并引入了多项重磅新特性;紧接着 9 月 14 日发布的 v1.2.22 版本则带来了备受期待的异步堆栈跟踪功能,进一步提升了开发体验。

打开网易新闻 查看精彩图片

统一 SQL 客户端:一个 API 搞定三大数据库

Bun v1.2.21 最引人注目的新特性是Bun.SQL—— 一个统一的 SQL 客户端,可以零依赖地连接 MySQL/MariaDB、SQLite 和 PostgreSQL 三种最流行的 SQL 数据库。

打开网易新闻 查看精彩图片

MySQL 和 MariaDB 支持

Bun 的 MySQL/MariaDB 驱动使用 Zig 语言编写,性能表现出色。开发者可以通过选项对象或 URL 字符串来建立连接:

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 sql`SELECT * FROM users;`.all();

在 v1.2.22 中,MySQL 适配器得到了进一步改进,新增了affectedRowslastInsertRowid属性,修复了列类型处理问题,并支持了 TLS 连接和mysql_native_password认证。

SQLite 集成

Bun.SQL同样内置了 SQLite 支持,将之前仅适用于 PostgreSQL 的简洁标记模板字面量 API 扩展到了 SQLite 用户:

const db = new SQL(":memory:"); await db`CREATETABLEusers (idINTEGER PRIMARY KEY, nameTEXT)`; const users = await db`SELECT * FROMusersORDERBYnameASC`;
原生 YAML 支持

Bun 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。现在这个定时器只在有请求时才激活,当服务器空闲时,Bun 进程将真正休眠,几乎不消耗 CPU 资源。

异步堆栈跟踪

Bun v1.2.22 实现了开发者期待已久的异步堆栈跟踪功能。现在错误堆栈会包含完整的异步执行路径,大幅提升了 async/await 代码的调试体验:

asyncfunctionfoo() { returnawait bar(); } asyncfunctionbaz() { await1; thrownewError("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 () 支持编译可执行文件

之前只能通过 CLI 使用的--compile功能现在可以在 JavaScript API 中使用。开发者可以通过编程方式创建独立的可执行文件,并支持跨平台编译:

awaitBun.build({ entrypoints: ["./cli.ts"], compile: { target: "bun-windows-x64", outfile: "./my-app-windows", windows: { icon: "./icon.ico",     },   }, });
Windows 可执行文件元数据

Windows 平台的独立可执行文件现在可以嵌入元数据,包括应用程序标题、发布者、版本、描述和版权信息,这些信息将在 Windows 资源管理器的文件属性中可见。

Node.js 兼容性改进

两个版本共修复了大量 Node.js 兼容性问题,包括:

  • WebSocket 升级中断时的 TypeError

  • N-API 插件的多个断言失败问题

  • child_process 中 stdio 流的处理

  • crypto 模块的算法名称大小写问题

  • readline、net、http2 等模块的各种兼容性修复

详情查看:

https://bun.com/blog/bun-v1.2.22

AI造物社区创作激励计划来啦 ⬇️