Mozilla a récemment révélé que depuis la version Firefox 151 publiée en mai de cette année, le navigateur a largement utilisé la bibliothèque zlib-rs dans le traitement de compression et de décompression Gzip. Il s'agit d'un ensemble d'implémentations de Zlib écrites en Rust, visant à améliorer la sécurité de la mémoire et les performances globales tout en maintenant la compatibilité.
Selon une note technique publiée aujourd'hui par la Trifecta Tech Foundation, ils ont communiqué avec l'équipe Mozilla au sujet de l'introduction de zlib-rs pendant près de deux ans avant de finalement intégrer la bibliothèque dans la version officielle de Firefox.

zlib-rs est présenté comme une solution « plug-and-play » pouvant remplacer directement Zlib implémenté en langage C. Cependant, au cours du processus de mise en œuvre proprement dit, Mozilla a rencontré des complications inattendues. Étant donné que zlib-rs utilise différentes implémentations d'algorithmes à différents niveaux de compression, son comportement n'est pas complètement cohérent avec le Zlib traditionnel, ce qui pose certains défis en termes de vérification de compatibilité et de déploiement réel. De plus, zlib-rs a également été affecté par des problèmes de stabilité sur les processeurs Intel Core de 13e et 14e génération. Afin de corriger ces défauts liés au processeur, Firefox a dû introduire une petite quantité de code « dangereux » dans certains chemins de code afin de contourner des défauts matériels spécifiques.
Bien que le processus ne se soit pas déroulé sans heurts, Mozilla et la Trifecta Tech Foundation soulignent que les avantages du passage à zlib-rs sont importants. D'une part, par rapport à la version C traditionnelle de Zlib, la migration vers Rust offre une meilleure sécurité de la mémoire pour la logique de compression et de décompression, réduisant ainsi le risque potentiel d'accès hors limites ou de corruption de la mémoire. D'autre part, zlib-rs apporte également des améliorations significatives en termes de performances, notamment sur la plateforme x86_64, avec des améliorations considérables du débit de compression et de décompression.
Sur la plateforme AArch64, les gains de performances apportés actuellement par zlib-rs sont relativement faibles, mais la Trifecta Tech Foundation souligne qu'il y a encore place à l'optimisation dans le futur. Par rapport à l'implémentation Zlib fournie par Apple dans macOS, zlib-rs a la possibilité d'améliorer encore l'efficacité grâce à un réglage du code plus raffiné dans certains scénarios, obtenant ainsi des performances multiplateformes plus cohérentes sur la plateforme Arm.
La Trifecta Tech Foundation a détaillé l'ensemble du processus d'introduction de zlib-rs dans Firefox dans un article de blog, y compris des années de communication avec Mozilla, des compromis dans la sélection des algorithmes et des tests de compatibilité, ainsi que des compromis d'ingénierie faits pour résoudre les problèmes de processeur Intel. Mozilla espère qu'en adoptant progressivement l'implémentation de Rust dans les composants de base clés, Firefox pourra consolider davantage sa réputation en matière de sécurité tout en continuant à rechercher des performances.
Plus de détails techniques et de résultats de référence sont disponibles sur le blog de la Trifecta Tech Foundation :
https://trifectatech.org/blog/zlib-rs-in-firefox/
Actuellement, les utilisateurs de Firefox bénéficient déjà de manière transparente de ce remplacement de bibliothèque sous-jacente dans leur utilisation quotidienne.