Mozilla は最近、今年 5 月にリリースされた Firefox 151 バージョン以降、ブラウザが Gzip 圧縮および解凍処理で zlib-rs ライブラリを広く使用していることを明らかにしました。これは Rust で書かれた Zlib 実装のセットであり、互換性を維持しながらメモリの安全性と全体的なパフォーマンスを向上させることを目的としています。

Trifecta Tech Foundation が本日リリースしたテクニカル ノートによると、彼らは最終的にこのライブラリを Firefox の正式バージョンにプッシュするまで、2 年近くにわたって zlib-rs の導入について Mozilla チームとやり取りを続けてきました。

画像.webp

zlib-rs は、C 言語で実装された Zlib を直接置き換えることができる「プラグアンドプレイ」ソリューションとして推進されています。しかし、実際の実装プロセス中に、Mozilla は予期しない複雑な問題に遭遇しました。 zlib-rs は異なる圧縮レベルで異なるアルゴリズム実装を使用するため、その動作は従来の Zlib と完全には一致せず、互換性の検証と実際の展開に特定の課題をもたらします。さらに、zlib-rs は、Intel の第 13 世代および第 14 世代 Core プロセッサの安定性の問題の影響を受けています。これらの CPU 関連の障害を修正するために、Firefox は特定のハードウェアの欠陥を回避するために、一部のコード パスに少量の「安全でない」コードを導入する必要がありました。

このプロセスは完全にスムーズではありませんでしたが、Mozilla と Trifecta Tech Foundation は、zlib-rs への移行のメリットが大きいと強調しています。一方で、従来の C バージョンの Zlib と比較して、Rust への移行により圧縮および解凍ロジックのメモリ セキュリティが強化され、境界外アクセスやメモリ破損の潜在的なリスクが軽減されます。一方、zlib-rs は、特に x86_64 プラットフォームでのパフォーマンスも大幅に向上し、圧縮および圧縮解除のスループットが大幅に向上します。

AArch64 プラットフォームでは、現在 zlib-rs によってもたらされるパフォーマンスの向上は比較的小さいですが、Trifecta Tech Foundation は、将来的にはまだ最適化の余地があると指摘しています。 Apple が macOS で提供する Zlib 実装と比較して、zlib-rs には、一部のシナリオでより洗練されたコードチューニングを通じて効率をさらに向上させる機会があり、それによって Arm プラットフォームでより一貫したクロスプラットフォームのパフォーマンスを実現します。

Trifecta Tech Foundation は、Mozilla との長年にわたるコミュニケーション、アルゴリズムの選択と互換性テストにおけるトレードオフ、Intel CPU の問題に対処するために行われたエンジニアリングのトレードオフなど、zlib-rs を Firefox に導入するプロセス全体をブログ投稿で詳しく説明しました。 Mozilla は、主要な基本コンポーネントに Rust 実装を段階的に採用することで、Firefox がパフォーマンスを追求し続けながらセキュリティに関する評判をさらに強化できることを期待しています。

技術的な詳細とベンチマーク結果については、Trifecta Tech Foundation のブログでご覧いただけます。

https://trifectatech.org/blog/zlib-rs-in-firefox/

現在、Firefox ユーザーは、日常の使用において、この基盤となるライブラリの置き換えからすでに透過的に恩恵を受けています。