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 适配器得到了进一步改进,新增了affectedRows和lastInsertRowid属性,修复了列类型处理问题,并支持了 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造物社区创作激励计划来啦 ⬇️
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.