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.