Parmi les nombreuses applications qui ont été optimisées très rapidement pour l'architecture Apple Silicon, il y a plusieurs navigateurs, dont Firefox. Dans un long billet de blog, l'ingénieur Gian-Carlo Pascutto retrace les étapes qui ont mené à la réalisation d'une version native de Firefox sur les Mac M1.
Mozilla a été grandement aidée par le fait qu'elle disposait déjà d'une version de Firefox conçue pour d'autres plateformes ARM 64 bits, en l'occurrence Android, Linux et même Windows depuis 2019. Cela a considérablement facilité le travail, mais il restait des choses à faire. Il a d'abord fallu passer en revue les différents composants pour voir comment ils réagissaient au fait qu'un Mac tourne avec une puce ARM.
Les développeurs de Mozilla ont ensuite adapté et corrigé les parties bas niveau du navigateur, en particulier le code Rust, un langage de programmation mis au point par la fondation (lire aussi : Avec ou sans Mozilla, le projet Rust cherche à rassurer sur son avenir). L'indispensable compilateur Rust fonctionnant sur Apple Silicon est arrivé mi-août, débloquant ainsi la situation.
Si l'éditeur a eu évidemment les mains entièrement libres pour modifier le code Firefox, un élément échappait à son contrôle, à savoir le module de DRM, qui est une boîte noire propriétaire fournie par Google. Sans visibilité sur l'adaptation de cet élément indispensable pour regarder des vidéos sur Netflix et d'autres services, Mozilla a utilisé la même astuce que pour la version Windows ARM de Firefox.
Le navigateur fait appel à la version Intel du module DRM qui fonctionne grâce à Rosetta 2 et qui est compris dans le binaire universel. L'éditeur avait en effet le choix entre créer deux versions distinctes de Firefox pour Mac (l'une pour Intel, l'autre pour Apple Silicon), ou bien une seule qui soit universelle. C'est la seconde solution qui a été retenue par simplicité pour l'utilisateur — ce qui arrange aussi pour tirer parti du module Widevine x64.
Le binaire universel comprenait toutefois son lot de complications pour l'éditeur, comme le fait que Firefox 83 « rosettisé » ne lance pas immédiatement la version Apple Silicon de Firefox 84 après la mise à jour automatique, mais toujours le binaire Intel. Les utilisateurs ont alors été informés qu'ils devaient fermer complètement Firefox pour bénéficier de la version Apple Silicon après la mise à jour automatique. Autre aléa rencontré, certains antivirus identifiaient à tort le nouveau binaire universel comme un malware, un problème que Mozilla a réglé en contactant les éditeurs.
La fondation aurait pu distribuer la version Apple Silicon de Firefox dans la foulée de la sortie des Mac M1 en novembre, mais elle a préféré la programmer en décembre, afin de faire des tests avec les « vraies » machines et pas seulement le DTK. C'est Firefox 84, sorti le 15 décembre, qui a inauguré l'optimisation pour Apple Silicon, avec à la clé des performances doublées par rapport à la version traduite par Rosetta.
Mais le travail n'est pas encore terminé, il reste des composants à huiler. WebRender, qui tire parti du GPU pour accélérer le rendu des pages, vient d'être réactivé dans la mouture 85 parue cette semaine. Outre des bugs qui restent à corriger (dont un pénible avec le mode sombre, même s'il n'est pas spécifique à ARM), Mozilla va chercher à exploiter au mieux les caractéristiques de la puce M1 et des autres à venir, par exemple en attribuant aux cœurs économes les tâches légères.