Bun v1.2.16 发布,内存优化,兼容提升,体验增强
大家好,我是农村程序员,独立开发者,编程记者,前端之虎陈随易。
我会在这里分享代码技术,编程资讯,行业热点等内容,欢迎关注。
- 个人网站 1️⃣:https://chensuiyi.me
- 个人网站 2️⃣:https://me.yicode.tech
- 技术群,搞钱群,闲聊群,自驾群,想入群的在我个人网站联系我。
所有文章都是古法手打,经过了深度思考和总结,不含 AI 添加剂,请放心食用,一起灵魂交流。
一键三连 (点赞
、评论
、转发
),可以给我提供曝光,带来一份早餐收入,谢谢大家~~
VSCode v1.101
和 Bun 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.Socket
和net.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);
内存泄漏修复
本版本修复了几个内存泄漏问题:
- N-API handle scopes:修复了
NapiHandleScopeImpl
中的罕见竞态条件和内存泄漏。 - 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:ffi
中new 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 (函数地图),欢迎大家体验。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
马建仓 AI 助手全流程升级:更聪明的研发搭子,更专业的协作助手
马建仓 AI 助手在近期迎来了一次面向真实研发流程的全链路进化,新增三十余项智能能力,全面覆盖需求、开发、测试、项目管理等关键研发环节。 马建仓现在不仅能听懂业务语言,还能快速生成可落地的任务拆解,串联产品、研发、测试、项目管理等多个角色,是你团队里真正能打的 AI 研发搭子。 本次更新能力覆盖项目管理、需求管理、开发与测试、知识沉淀五大核心场景,不同场景中的马建仓 AI 助手都会根据具体场景推荐对应的对话选项。 马建仓 AI 助手全流程使用实录 以下为三个典型流程展示马建仓 AI 助手如何深度参与每一个关键节点: 从需求到提交 PR 产品经理新建需求后,马建仓 AI 助手识别到该页面为「新建需求」,只能推荐「帮我写需求」功能,快速形成结构化文档。 随后通过「预估工时」,「谁来做更合适」智能排期与分配任务。 研发/UI/测试通过「这个任务要做什么」「需求评论区在说什么」快速理解背景。 完成任务后提交 PR,使用 AI 自动生成「PR 标题/描述」。 测试缺陷到代码合并 测试阶段发现问题,通过「帮我写缺陷」生成标准缺陷记录。 研发收到后,用「缺陷是什么意思」、「可能原因是什么」快速定位问...
- 下一篇
Go-Spring :: Log v0.0.1 发布,基于 Tag 路由的结构化日志库
Go-Spring :: Log 是一个高性能、可扩展的日志处理库,专为 Go 语言设计。它提供了灵活的日志记录功能,支持结构化日志、 上下文字段提取、多级日志配置以及多种输出方式,适用于各种服务端应用场景。 特性 多级日志支持:提供 Trace, Debug, Info, Warn, Error, Panic, Fatal 等日志级别,满足不同场景下的调试和监控需求。 结构化日志:支持以结构化的方式记录日志字段(如 trace_id, span_id),便于日志分析系统解析。 上下文支持:通过 context.Context 提取额外信息(如请求 ID、用户 ID)并自动附加到日志中。 标签系统:使用标签(Tag)机制区分不同模块或业务线的日志。 插件机制: Appender:支持多种日志输出方式,包括控制台输出(Console)、文件写入(File)等。 Layout:提供文本格式(Text)和 JSON 格式(JSON)两种日志布局方式。 Logger:支持同步和异步日志记录器,异步记录器可防止日志写入阻塞主线程。 性能优化:提供缓冲区管理、事件池化(Event Pooling)...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Windows10,CentOS7,CentOS8安装Nodejs环境
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Linux系统CentOS6、CentOS7手动修改IP地址
- Red5直播服务器,属于Java语言的直播服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8安装Docker,最新的服务器搭配容器使用