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 (函数地图),欢迎大家体验。 安装地址:https://sourl.cn/zmnsPf