Bun v1.2.21/22:统一 SQL 客户端、原生 YAML 支持和异步堆栈跟踪
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`CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)`;
const users = await db`SELECT * FROM users ORDER BY name ASC`;
原生 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 代码的调试体验:
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() 支持编译可执行文件
之前只能通过 CLI 使用的 --compile
功能现在可以在 JavaScript API 中使用。开发者可以通过编程方式创建独立的可执行文件,并支持跨平台编译:
await Bun.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 等模块的各种兼容性修复
其他值得关注的改进
- Bun.stripANSI():SIMD 加速的 ANSI 转义码移除函数,比 npm 的 strip-ansi 包快 6-57 倍
- TTY 支持改进:修复了 stdin 关闭后交互式 TTY 的支持问题
- 代码签名:Windows 版本的 bun.exe 现已代码签名,解决了首次运行时的安全警告
- bunx 支持 --package:可以运行包名与二进制名不同的命令
- 监控事件循环延迟:实现了
perf_hooks.monitorEventLoopDelay()
API
这两个版本的发布展示了 Bun 团队对性能优化、开发体验和生态兼容性的持续关注。统一 SQL 客户端简化了数据库操作,异步堆栈跟踪大幅改善了调试体验,而众多的性能优化则让 Bun 在 JavaScript 运行时领域继续保持其高性能的特色。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
小蚂蚁云 XiaoMaYi-Consul-EleVue 微服务框架 v1.0.0 发布
v1.0.0 更新内容: 1、全新架构设计; 2、全系支持 JDK17; 3、全系支持 MySQL、PostgreSQL、SqlServer、Sqlite 等数据库; 项目介绍 基于SpringCloud、SpringSecurity、OAuth2、Consul、Seata、MybatisPlus、Vue3、TypeScript、ElementPlus、MySQL等技术栈实现的单体前后端分离后台管理系统;后端基于Java语言采用SpringCloud、SpringBoot3、SpringSecurity、OAuth2、Consul、Seata、MybatisPlus、MySQL等主流技术栈,前端基于Vue3、TypeScript、Vite等技术栈实现,采用ElementPlus前端UI框架,基于目前Vue前后端分离主流设计思想,为了实现精细化分工,模块化、组件化开发模式,目前采用完全前后端分离架构实现,前端应用通过API调用后端服务的方式实现数据交互;整套系统拥有完善的RBAC权限架构体系,权限颗粒度精细至按钮级别,支持多主题切换模式,多端兼容手机客户端、PAD平板、PC电脑等终端设备...
-
下一篇
🔥 DamiBus v1.1.0 发布(给单体多模块解耦)
DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖。 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用。 支持事务传导(同步分发、异常透传) 支持事件标识、拦截器(方便跟踪) 支持监听者排序、附件传递(多监听时,可相互合作) 支持 Bus 和 Api 两种体验风格 与常见的 EventBus、ApiBean 的区别 DamiBus EventBus Api DamiBus 的情况说明 广播 有 有 无 发送(send) + 监听(listen) 以及 Api 模式 应答 有 无 有 调用(call) + 监听(listen) + 答复(reply) 以及 Api 模式 耦合 弱- 弱+ 强++ 如果涉及类加载器隔离:请在主程序标为编译,在其它模块标为可选。 本次更新了什么? 新版本简化了体验! 调整 DamiBus:sendAndSubscribe 标为弃用 调整 DamiBus:sendAndRequest 标为弃用(由 call 替代) 调整 Payload:isSubscribe 标为弃用 调整 Payload:i...
相关文章
文章评论
共有0条评论来说两句吧...