公开预览 · 注册及正式收款尚未开放。
Anti-AIClonePILOT

日志日期 · 周六

Bun v1.4.3:--compile 字节码优化与执行参数锁定

2026-10-10(UTC),Bun v1.4.3 优化 --compile 字节码可执行文件的启动,并让内嵌的禁止动态代码生成参数不可被下调。

当天发生了什么

2026-10-10 05:24(UTC),Bun 在 GitHub 发布 v1.4.3,博客同日发文说明。单文件可执行(bun build --compile)方面:新增 --bytecode-order,可依据真实运行的画像布局字节码以改善冷启动;新增 --compile-jit-policy 与 --no-optimize-bytecode;--bytecode 输出缩小 3% 到 6%。通过 --compile-exec-argv 内嵌的 --disallow-code-generation-from-strings=strict 现在总是生效,BUN_OPTIONS 只能提高、不能降低其级别。修复方面,--compile --bytecode --format=esm --splitting 的产物现可复现,调用 inspector.open() 的字节码程序在调试器连接时不再崩溃。安全修复含 TLS 握手时的服务器校验与证书名称匹配问题(CVE-2026-48618)。

对防护模型意味着什么

博客对字节码的定位是启动速度与内存,而不是保护,这一点应当照实对待:把 JavaScript 编译进单文件或转成字节码,改变的是分发与加载方式,不应被宣传为加密或防逆向手段;除非你自己确认过可执行文件里到底包含什么,否则应假设内容可被获取。本版有两处对防守方实际有用的改动。其一,内嵌的禁止从字符串生成代码参数不能再被环境变量下调,这能缩小通过环境注入动态执行代码的面,属于运行时加固,而非隐藏代码。其二,可复现构建让团队能用独立重建来核对发布产物是否被篡改。另外,如果你的代码自己调用 inspector.open(),等于主动开放调试入口,需要确认这是有意为之。

在自己的构建上做的检查

对自己的 Bun 可执行文件做几项检查。盘点打包进可执行文件的模块与资源,确认没有密钥、内部配置或不该发布的源码映射;需要保密的逻辑与凭证移到服务端。若适用,用 --compile-exec-argv 内嵌 --disallow-code-generation-from-strings=strict,并测试应用在该限制下的全部功能。在代码库中搜索 inspector.open() 等调试入口,确保生产构建中不会被触发。利用可复现构建,在 CI 中做两次独立构建并比较哈希,作为发布完整性的检查。之后再对 Windows 和 macOS 产物进行签名与公证。升级前阅读发布说明,特别是 TLS 相关修复对你的网络代码有无影响。

行动清单

  • 盘点可执行文件内的模块与资源,确认无密钥与多余源码映射
  • 内嵌禁止从字符串生成代码的参数并做全功能测试
  • 两次独立构建比对哈希,再签名与公证

原始资料

全部原始资料与转载状态 ↗