Bun v1.2.16 发布,内存优化,兼容提升,体验增强


大家好,我是农村程序员,独立开发者,编程记者,前端之虎陈随易。

我会在这里分享代码技术,编程资讯,行业热点等内容,欢迎关注。

  • 个人网站 1️⃣:https://chensuiyi.me
  • 个人网站 2️⃣:https://me.yicode.tech
  • 技术群,搞钱群,闲聊群,自驾群,想入群的在我个人网站联系我。

所有文章都是古法手打,经过了深度思考和总结,不含 AI 添加剂,请放心食用,一起灵魂交流。

一键三连 (点赞评论转发),可以给我提供曝光,带来一份早餐收入,谢谢大家~~


VSCode v1.101Bun v1.2.16 的发布我看都没人其他人分享啊?看来我这个 编程记者 得好好地坚守岗位才行。

我是 All in Bun 玩家,截至现在不用 Node.js 已经半年有余,一切感觉良好,有小伙伴测试了下性能,确实比 Node.js 快了不少。

那么本次的 v1.2.16 版本,同样带来一些性能的提升,内存的优化等,让我们来一起看看具体的更新内容吧。

数据总览

本次一共解决了 73 个 issue,新增了 119 个能成功通过的 Node.js 兼容性测试。

在 Bun.serve 的 routes 中直接返回文件

import { serve, file } from 'bun';
server({
routes: {
'/package.json': file('./package.json'),
'/README.md': new Response(file('./README.md'), {
headers: {
'X-Hi': 'hello'
}
})
}
});

Bun 在 使用体验人性化 上面一直不断完善,这个功能可以非常方便地返回文件数据,不需要手动读取文件数据,也不需要管理文件的缓存,可以说是非常贴心了。

新增 install.linkWorkspacePackages 配置

[install]
linkWorkspacePackages = false

这个选项可以控制工作区包的链接行为,这在 CI 环境中特别有用,因为从注册表安装预构建的包比从源代码构建更快。

  • 设置为 false 时,Bun 从注册表安装工作区依赖,而不是本地链接。
  • 默认值为 true 以保持向后兼容性。
  • 即使禁用此选项,workspace:* 协议仍然会被遵守。

bun outdated 支持 catelog 依赖

bun outdated 现在支持目录 (catalog) 依赖,便于在 monorepo 中检查更新。

示例配置:

// package.json
{
"name": "my-monorepo",
"workspaces": {
"packages": ["packages/*"],
"catalog": {
"react": "^18.0.0",
"react-dom": "^18.0.0",
"typescript": "^4.0.0"
}
}
}
// packages/app/package.json
{
"name": "app",
"dependencies": {
"react": "catalog:",
"react-dom": "catalog:",
"typescript": "catalog:"
}
}

运行 bun outdated 将显示目录依赖的可用更新。

bun outdated -F app
|----------------------------------------|
| Package| Current | Update | Latest |
|------------|---------|--------|--------|
| react| 18.3.1| 18.3.1 | 19.1.0 |
|------------|---------|--------|--------|
| react-dom| 18.3.1| 18.3.1 | 19.1.0 |
|------------|---------|--------|--------|
| typescript | 4.9.5 | 4.9.5| 5.8.3|
|----------------------------------------|

新增 Bun.hash.rapidhash 算法

const hash = Bun.hash.rapidhash('hello world');
console.log(hash); // 6388527444622164108n

Rapidhash 在处理较大输入时表现出竞争力的性能,是非加密哈希需求的优秀选择。

Node.js 兼容性改进

node:net 模块重大重构

  • 新增 43 个通过的 Node.js node:net 测试
  • 支持 server.maxConnections
  • 改进了 socket 连接回调行为
  • 修复了 TLS 升级功能
  • 正确识别扩展 Socket 类的自定义方法
  • 修复了 socket.localAddress()socket.remoteAddress()
  • node:net 现在像 Node.js 一样调用 dns.lookup
  • net.Socketnet.Server 提供 net.BlockList 支持

vm.SyntheticModule 支持

实现了 vm.SyntheticModule,支持在 VM 上下文中创建和评估合成模块:

import vm from 'node:vm';

const module = new vm.SyntheticModule(['x'], function () {
this.setExport('x', 42);
});

await module.link(() => {});
await module.evaluate();

console.log(module.namespace.x); // 42

HTTPParser 绑定

添加了 process.binding('http_parser'),提高了与 Node.js HTTP 内部机制的兼容性:

const { HTTPParser } = process.binding('http_parser');

const parser = new HTTPParser();
parser.initialize(HTTPParser.REQUEST, {});

const input = Buffer.from('GET / HTTP/1.1\\r\\nHost: example.com\\r\\n\\r\\n');

parser[HTTPParser.kOnHeaders] = function () {
console.log('Headers!');
};

parser.execute(input);

内存泄漏修复

本版本修复了几个内存泄漏问题:

  1. N-API handle scopes:修复了 NapiHandleScopeImpl 中的罕见竞态条件和内存泄漏。
  2. Bun.spawn stdio:修复了 Bun.spawn 管道 stdio 未被读取时的内存泄漏。

其他错误修复

运行时修复

  • 修复了 node:net 处理缓冲字符串写入时的 bytesWritten 计算。
  • 修复了 macOS 上 process.stdin 缓冲问题。
  • 修复了循环中可能的退出信号挂起。
  • 修复了某些情况下 node:http 发送重复 Transfer-Encoding 头的问题。
  • 修复了 SharedArrayBuffer 传输时崩溃的问题。
  • 修复了在正确初始化前访问 cookies 导致的崩溃。
  • 修复了中断 Next.js 开发服务器时的错误。
  • 修复了使用 Tailwind CSS 时 DevServer 崩溃的问题。
  • 修复了 TOML 解析器处理内联表后的表数组头的问题。

JavaScript 解析器修复

  • 修复了畸形函数定义导致的崩溃

CSS 解析器修复

  • 修复了嵌套计算导致的 CSS calc() 表达式堆栈溢出
  • 修复了 CSS 转换函数中弧度错误转换为度数的问题

FFI 修复

  • 修复了 bun:ffinew CString() 在未提供 byteLength 时忽略 byteOffset 参数的问题

TLS 修复

  • 改进了 TLS 服务器身份验证
  • 正确处理 IP 范围规范化 (例如 “8.8.8.0/24”)

HTTP/2 修复

  • 修复了 HTTP/2 流控制和协议处理问题

Windows 修复

  • 崩溃处理程序现在使用 abort() 而不是 quick_exit(134) 以便更好地调试
  • 更新了 Windows 构建的 WebKit 和 libpas 依赖项

环境变量

  • 新增 BUN_BE_BUN 环境变量,用于运行 Bun 二进制文件而不是单文件可执行文件的入口点

CLI 改进

  • 改进了包管理器命令的帮助文本格式和文档链接
  • bun pm 帮助中移除了 audit (直接使用 bun audit)

TypeScript 类型

  • 修复了 RedisClient.prototype.del 接受一个或多个键作为参数

最后给大家分享一下我的主打产品,VSCode 编程神器 fnMap (函数地图),欢迎大家体验。

安装地址:https://sourl.cn/zmnsPf


相關推薦

2023-11-05

JavaScript运行时、打包器、转译器和包管理器于一身的 Bun 发布了1.0.8版本。在这次更新中,Bun 团队修复了138个错误,并获得了257个来自社区的👍。这不仅体现了Bun团队对社区需求的重视,也展示了Bun作为一个开源项目的活跃和

2024-06-01

在刚刚过去的五月,Bun团队只发布了三个小版本更新(v1.1.8、v1.1.9和v1.1.10),在不断优化性能和提升稳定性的同时,也为开发者带来了许多新的功能和改进。这些更新不仅修复了大量的bug,还对关键功能进行了显著的优化,尤

2025-03-20

JavaScript 运行时 Bun 近期发布了 v1.2.5 版本,这是自 v1.2 以来的一次重要更新,主要聚焦于 性能优化、稳定性增强 及 开发者体验改进。以下从核心更新内容出发,解读这一版本的关键特性。 一、版本亮点速览 75 项关键 Bug

2023-12-25

使Bun成为构建安全应用程序的更加多功能的平台。 性能优化 Bun 1.0.19引入了几项性能增强。setTimeout和setInterval的实现在Linux x64系统上现在快了四倍,这要归功于一种新的计时器堆,它有效地管理计时器。对于严重依赖计时器操

2023-07-23

近日,新型JavaScript运行时Bun正式发布了0.7版本,带来了重大的升级。据悉,Bun是一个配套齐全的JavaScript解决方案,集运行时、打包器、转译器和包管理器于一体,追求极致的运行速度。此次更新主要集中在与Node.js的兼容性提升

2024-01-18

Bun这个兼具运行时、打包工具、转译器和包管理器多重功能的JavaScript工具,在日前迎来了1.0.23版本的更新。本次更新针对社区反馈修复了40个bug,共计获得了194个赞。更新使Bun在打包部署等方面的易用性有所提升。 引入SQLite数

2024-01-11

Bun 1.0.22版本终于面世了!这个小巧玲珑的JavaScript运行时可谓是编程界的“黑马”,短短一年多时间就以其独特的魅力吸引了众多开发者。这一次的更新再次印证了Bun背后的团队充满激情与执着,他们一如既往地致力于让Bun成为J

2023-08-26

会」北京站,聊聊 AI 大模型与底层技术 >>> Bun v0.8.1版本发布。这一版在0.8.0发布一天后发布,重点主要是修复了多个存在的问题和bug。 首先,新版本解决了一个很关键的问题:在处理格式错误的版本名时,bun install会崩溃。这

2023-09-10

2022年9月8日,Javascript运行时Bun正式发布1.0版本,标志着这个由前Facebook工程师创建的项目正式进入稳定生产可用阶段。 Bun的愿景是通过深度整合,让Javascript开发“快如闪电”。这个新生力量是否能撼动Javascript界老牌霸主Node的

2023-11-18

,以及其他潜在的稳定性问题。 综合来看,Bun v1.0.12的发布是该项目在打造更加强大、易用工具方面的一大步。这些更新和改进预期将使Bun在JavaScript开发社区中的作用更为重要,为开发者提供更高效、更可靠的编程体验。

2024-04-03

JavaScript开发者们瞩目已久的Bun 1.1版本终于正式发布了!这次大版本更新带来了一系列令人兴奋的新特性和显著的性能提升,将为开发者们提供更加顺畅、高效的开发体验。 首先,让我们为Bun 1.1支持Windows而欢呼吧!是的,你没

2024-02-05

d Sumner宣布了JavaScript运行时环境Bun的最新版本——1.0.26的发布。Bun不仅是一个运行时环境,还集成了打包器、转译器和包管理器的功能。在这个新版本中,Bun带来了一系列的改进和修复,包括解决了30个bug,增加了对bun:sqlite中多

2023-08-08

器,集多种功能于一身。在过去的几个月里,Bun团队频繁发布更新,不断提升Bun的强大与稳定。Bun 0.7.3版本带来了哪些重要更新呢?让我们来看看。 测试覆盖率报告 Bun测试现在内置支持代码覆盖率报告。只需添加--coverage参数

2024-05-07

自从 Bun 1.1 版本发布以来的一个多月里,Bun 开发团队持续高频率地推出了多个小版本更新,从 1.1.1 一直到最新的 1.1.7,累计修复了上百个 bug,满足了大量用户的需求。 在这一系列的更新中,Bun 的安装依赖速度和可靠性得到了