谷歌为了一张新图,被迫用 Rust 重写 10 万行 C++

谷歌为了一张新图,被迫用 Rust 重写 10 万行 C++

firefoxjpeg-xlrustc++browser-security

数据源:Mozilla Hacks + HN

2026 年 8 月,Mozilla Hacks 发布了一份意料之外的上线声明:从 Firefox 157 版本开始,默认在所有平台上开启对下一代网络图像格式 JPEG XL 的支持。在这项关乎数亿用户的底层变更背后,隐藏着一场浏览器巨头之间的技术博弈——推动 Firefox 改变态度的关键力量,来自 Google 接受了 Mozilla 的硬性安全要求,用 Rust 语言将原本 10 万行 C++ 的底层解析代码彻底重做一遍。

10万行C++代码构筑的安全红线

早在 2021 年,Firefox 就在实验性配置中测试过 JPEG XL 支持,但随后迅速放缓了推进节奏。当时主导该格式的官方库 libjxl 是一套包含了 10 万行 C++ 代码、具备复杂多线程处理能力的解析引擎。在现代浏览器工程中,如此庞大且复杂的 C++ 图像解析器始终是内存安全漏洞的重灾区。

复杂媒体解码器在处理不受信任的网络图片输入时,极易诱发缓冲区溢出与堆内存失效问题。在笔者看来,Mozilla 当时面临的选择非常清晰:一旦直接引入庞大的 C++ 基础设施,后续将付出无休止的 CVE 漏洞修补成本。

因此,Mozilla 向 Google 团队提出了一个近乎苛刻的条件。如果希望 JPEG XL 成为 Firefox 的默认选项,Google 必须交付一个安全、高效、紧凑且完全兼容的 Rust 语言解码器。

用 Rust 重塑解码器:从 jxl-rs 看工程拆解

Google Research 的 JPEG XL 团队接下了这个 Rust 重构任务,并最终打造出 jxl-rs 解析组件。这一工程实践证明,在底层渲染管线中,使用类型安全的语言完全可以替代传统的 C++ 指针操作,同时保证极其出色的解码效率。

jxl-rs 在工程架构上彻底剥离了复杂多线程交织带来的并发安全隐患,在沙盒化的内存模型中完成了渐进式流解析与 VarDCT 变换。它将内存安全边界提到了编译期,使得原本可能在运行时引发崩溃的非法内存访问被消除在编译阶段。

社区对此展现出了极高的关注度。在 Hacker News 的技术讨论中,该话题迅速获得了 311 分和 84 条深度研讨。 社区共识表明,浏览器厂商正利用自身的入口分发杠杆,强力推动底层基础设施向内存安全语言迁移,传统 C++ 实现正迎来加速替代的历史阶段。

画质与渐进渲染:为什么 JPEG XL 值得重写?

从技术性能来看,JPEG XL 的确展现出了覆盖全场景的综合能力。Mozilla Hacks 公布的基准测试数据显示,针对同一张狐狸样例图片,116 kB 的 AVIF 与 134 kB 的 JPEG XL 在视觉画质上相当。这说明在常规有损压缩场景中,JPEG XL 与成熟的 AVIF 处于同一性能梯队。

真正的性能拉开在无损压缩与网络加载体验上。无损压缩测试中,JPEG XL 文件体积仅为 1.45 MB,明显优于 WebP 的 1.55 MB 与 AVIF 的 1.76 MB。这证明 JPEG XL 在保存原始像素层级的信息时拥有更优异的熵编码效率,更适合高清无损图像的处理与存储。

JPEG XL 渐进式渲染过程 图:图片被分成四栏,展示 JPEG XL 从 4% 模糊到 100% 清晰的渐进渲染过程。来源:Mozilla Hacks

与此同时,JPEG XL 具备出色的渐进式渲染能力。客户端在仅接收到 4% 文件数据量的情况下,就能快速绘制出清晰可辨认的图像轮廓。这种网络加载特性极大地提升了弱网环境下的首屏视觉体验,使得浏览器无需等待整个文件传输完毕即可展现画面细节。

JPEG XL 完整画质显示 图:蜷缩在草丛中睡觉的狐狸完整画质图。来源:Mozilla Hacks

从「漏洞修补」到「内存安全防御」的规矩重塑

这场关于 JPEG XL 的交锋,标志着浏览器安全策略发生了一场根本变革。过去二十年里,面对图像解析器中的内存溢出问题,行业的标准做法是反复打补丁、加强模糊测试或嵌入隔离沙盒。然而,这类事后修剪漏洞的模式,始终无法阻挡高危 CVE 的产生。

通过强制要求 Rust 实现,Mozilla 将图像格式的准入门槛提升到了语言安全的层级。这给整个软件基础设施供应链树立了新的准入标准:任何打算进入数亿终端的核心组件,必须首先在底层提供内存安全保证。

在笔者看来,这一范式转移给网络技术演进带来了深远影响。 尽管 Rust 重写需要付出可观的初期工程成本,且部分 unsafe 代码块仍需持续审计,但这种从源头消除内存隐患的模式已经成为不可逆转的趋势。

结尾:论点回扣

Mozilla 为 Google 设立的 Rust 准入条件,展现了当代软件架构演进的一个缩影。网络图像格式的落地规则已经被重塑:软件安全的基石正在建立在内存安全的语言基础之上,跨过了依赖事后修剪漏洞的传统阶段。jxl-rs 的成功集成,正是在这一新规则下跑通的典型范例。

参考链接:

  • Mozilla Hacks 官方发布声明 (Intent to Ship: JPEG XL)
  • Hacker News 社区讨论 (item?id=49437946)