Bun v1.2.21/22:统一 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 数据库的通用客户端。

Bun v1.2.21/22:统一 SQL 客户端、原生 YAML 支持和异步堆栈跟踪

支持 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 sql

SELECT * 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 db

CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)

;const users = await db

SELECT * 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("- item1n- 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 升级中断引发的 TypeErrorN-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 运行时中继续保持领先优势。

源码地址:点击下载

以上就是Bun v1.2.21/22:统一 SQL 客户端、原生 YAML 支持和异步堆栈跟踪的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/105451.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月22日 02:13:28
下一篇 2025年11月22日 02:45:52

相关推荐

  • 如何在 VS Code 中解决折叠代码复制问题?

    解决 VS Code 折叠代码复制问题 在 VS Code 中使用折叠功能可以帮助组织长代码,但使用复制功能时,可能会遇到只复制可见部分的问题。以下是如何解决此问题: 当代码被折叠时,可以使用以下简单操作复制整个折叠代码: 按下 Ctrl + C (Windows/Linux) 或 Cmd + C …

    2025年12月24日
    000
  • 网络进化!

    Web 应用程序从静态网站到动态网页的演变是由对更具交互性、用户友好性和功能丰富的 Web 体验的需求推动的。以下是这种范式转变的概述: 1. 静态网站(1990 年代) 定义:静态网站由用 HTML 编写的固定内容组成。每个页面都是预先构建并存储在服务器上,并且向每个用户传递相同的内容。技术:HT…

    2025年12月24日
    000
  • 为什么多年的经验让我选择全栈而不是平均栈

    在全栈和平均栈开发方面工作了 6 年多,我可以告诉您,虽然这两种方法都是流行且有效的方法,但它们满足不同的需求,并且有自己的优点和缺点。这两个堆栈都可以帮助您创建 Web 应用程序,但它们的实现方式却截然不同。如果您在两者之间难以选择,我希望我在两者之间的经验能给您一些有用的见解。 在这篇文章中,我…

    2025年12月24日
    000
  • 姜戈顺风

    本教程演示如何在新项目中从头开始配置 django 和 tailwindcss。 django 设置 创建一个名为 .venv 的新虚拟环境。 # windows$ python -m venv .venv$ .venvscriptsactivate.ps1(.venv) $# macos/linu…

    2025年12月24日
    000
  • 深入理解CSS框架与JS之间的关系

    深入理解CSS框架与JS之间的关系 在现代web开发中,CSS框架和JavaScript (JS) 是两个常用的工具。CSS框架通过提供一系列样式和布局选项,可以帮助我们快速构建美观的网页。而JS则提供了一套功能强大的脚本语言,可以为网页添加交互和动态效果。本文将深入探讨CSS框架和JS之间的关系,…

    2025年12月24日
    000
  • 项目实践:如何结合CSS和JavaScript打造优秀网页的经验总结

    项目实践:如何结合CSS和JavaScript打造优秀网页的经验总结 随着互联网的快速发展,网页设计已经成为了各行各业都离不开的一项技能。优秀的网页设计可以给用户留下深刻的印象,提升用户体验,增加用户的黏性和转化率。而要做出优秀的网页设计,除了对美学的理解和创意的运用外,还需要掌握一些基本的技能,如…

    2025年12月24日
    200
  • 学完HTML和CSS之后我应该做什么?

    网页开发是一段漫长的旅程,但是掌握了HTML和CSS技能意味着你已经赢得了一半的战斗。这两种语言对于学习网页开发技能来说非常重要和基础。现在不可或缺的是下一个问题,学完HTML和CSS之后我该做什么呢? 对这些问题的答案可以分为2-3个部分,你可以继续练习你的HTML和CSS编码,然后了解在学习完H…

    2025年12月24日
    000
  • 聊聊怎么利用CSS实现波浪进度条效果

    本篇文章给大家分享css 高阶技巧,介绍一下如何使用css实现波浪进度条效果,希望对大家有所帮助! 本文是 CSS Houdini 之 CSS Painting API 系列第三篇。 现代 CSS 之高阶图片渐隐消失术现代 CSS 高阶技巧,像 Canvas 一样自由绘图构建样式! 在上两篇中,我们…

    2025年12月24日 好文分享
    200
  • 巧用距离、角度及光影制作炫酷的 3D 文字特效

    如何利用 css 实现3d立体的数字?下面本篇文章就带大家巧用视觉障眼法,构建不一样的 3d 文字特效,希望对大家有所帮助! 最近群里有这样一个有意思的问题,大家在讨论,使用 CSS 3D 能否实现如下所示的效果: 这里的核心难点在于,如何利用 CSS 实现一个立体的数字?CSS 能做到吗? 不是特…

    2025年12月24日 好文分享
    000
  • CSS高阶技巧:实现图片渐隐消的多种方法

    将专注于实现复杂布局,兼容设备差异,制作酷炫动画,制作复杂交互,提升可访问性及构建奇思妙想效果等方面的内容。 在兼顾基础概述的同时,注重对技巧的挖掘,结合实际进行运用,欢迎大家关注。 正文从这里开始。 在过往,我们想要实现一个图片的渐隐消失。最常见的莫过于整体透明度的变化,像是这样: 立即学习“前端…

    2025年12月24日 好文分享
    000
  • css实现登录按钮炫酷效果(附代码实例)

    今天在网上看到一个炫酷的登录按钮效果;初看时感觉好牛掰;但是一点一点的抛开以后发现,并没有那么难;我会将全部代码贴出来;如果有不对的地方,大家指点一哈。 分析 我们抛开before不谈的话;其实原理和就是通过背景大小以及配合位置达到颜色渐变的效果。 text-transform: uppercase…

    2025年12月24日
    000
  • CSS flex布局属性:align-items和align-content的区别

    在用flex布局时,发现有两个属性功能好像有点类似:align-items和align-content,乍看之下,它们都是用于定义flex容器中元素在交叉轴(主轴为flex-deriction定义的方向,默认为row,那么交叉轴跟主轴垂直即为column,反之它们互调,flex基本的概念如下图所示)…

    2025年12月24日 好文分享
    000
  • 手把手教你用 transition 实现短视频 APP的点赞动画

    怎么使用纯 css 实现有趣的点赞动画?下面本篇文章就带大家了解一下巧妙借助 transition实现点赞动画的方法,希望对大家有所帮助! 在各种短视频界面上,我们经常会看到类似这样的点赞动画: 非常的有意思,有意思的交互会让用户更愿意进行互动。 那么,这么有趣的点赞动画,有没有可能使用纯 CSS …

    2025年12月24日 好文分享
    000
  • 巧用CSS实现各种奇形怪状按钮(附代码)

    本篇文章带大家看看怎么使用 CSS 轻松实现高频出现的各类奇形怪状按钮,希望对大家有所帮助! 怎么样使用 CSS 实现一个内切角按钮呢、怎么样实现一个带箭头的按钮呢? 本文基于一些高频出现在设计稿中的,使用 css 实现稍微有点难度和技巧性的按钮,讲解使用 css 如何尽可能的实现它们。【推荐学习:…

    2025年12月24日 好文分享
    000
  • 原来利用纯CSS也能实现文字轮播与图片轮播!

    怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯css也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助! 今天,分享一个实际业务中能够用得上的动画技巧。【推荐学习:css视频教程】 巧用逐帧动画,配合补间动画实现一个无限循环的轮播效果,像是这样: 立即学习“前端…

    2025年12月24日 好文分享
    000
  • HTML+CSS+JS实现雪花飘扬(代码分享)

    使用html+css+js如何实现下雪特效?下面本篇文章给大家分享一个html+css+js实现雪花飘扬的示例,希望对大家有所帮助。 很多南方的小伙伴可能没怎么见过或者从来没见过下雪,今天我给大家带来一个小Demo,模拟了下雪场景,首先让我们看一下运行效果 可以点击看看在线运行:http://hai…

    2025年12月24日 好文分享
    500
  • 总结整理:需要避坑的五大常见css错误(收藏)

    本篇文章给大家总结5个最常见的css错误,并介绍一下避坑方法,希望对大家有所帮助! 正如我们今天所知,CSS语言是web的一个重要组成部分。它使我们有能力绘制元素在屏幕、网页或其他媒体中的展示方式。 它简单、强大,而且是声明式的。我们可以很容易地实现复杂的事情,如暗黑/光明模式。然而,对它有很多误解…

    2025年12月24日
    000
  • CSS+JS实现爱心点赞按钮(代码示例)

    本篇文章给大家介绍一下css+js实现一个“爱之满满”点赞按钮的方法,希望对大家有所帮助! 前段时间在看一档说唱节目,被里面的一个说唱歌手JBcob的爱之满满这句词给洗脑了。 于是这次给大家带来一个爱之满满的点赞按钮,让大家在点赞的同时还能感受到被爱包裹的感觉。 立即学习“前端免费学习笔记(深入)”…

    2025年12月24日 好文分享
    000
  • 让人眼前一亮的五个前端小技巧

    为了让大家编程更轻松一些,本挑选一些有用的但相对比较少见有用的技巧。废话不多说,开车了。 1.快速隐藏 要隐藏一个DOM元素,不需要JavaScript。一个原生的HTML属性就足以隐藏。其效果类似于添加一个style display: none;。 该段落在页面上是不可见的,它对HTML是隐藏的。…

    2025年12月24日
    000
  • 10款好看且实用的文字动画特效,让你的页面更吸引人!

    图片和文字是网页不可缺少的组成部分,图片运用得当可以让网页变得生动,但普通的文字不行。那么就可以给文字添加一些样式,实现一下好看的文字效果,让页面变得更交互,更吸引人。下面创想鸟就来给大家分享10款文字动画特效,好看且实用,快来收藏吧! 1、网页玻璃文字动画特效 模板简介:使用css3制作网页渐变底…

    2025年12月24日 好文分享
    000

发表回复

登录后才能评论
关注微信