Firefox sur Apple Silicon : dans les coulisses du portage

Les futurs Mac auront-ils des écrans tactiles ? Mozilla se l’est demandé en juin dernier, à l’heure où Apple officialisait la transition vers Arm.

À la mi-décembre, la fondation livrait un premier portage stable de Firefox. Elle fait désormais le point sur quelques-uns des défis qu’elle a dû relever pour en arriver là.

Le code du navigateur était déjà adapté à l’architecture Arm64. C’est à plus bas niveau qu’il a fallu travailler. Notamment sur les interfaces entre JavaScript et C++. Le compilateur Rust, en particulier, a posé des problèmes. Il a fallu attendre la mi-août pour disposer d’une version fonctionnelle.

Autre point délicat : la gestion des DRM pour les plates-formes de streaming vidéo. Mozilla a opté pour la même implémentation qu’avec Windows sur Arm. Elle a utilisé les versions x64 des modules de décodage, isolés et exécutés sur la couche d’émulation Rosetta 2.
Les processus qui chargent les modules en question dépendent de bibliothèques dont il a fallu récupérer les versions x64. La fourniture de Firefox sous forme de binaire universel – alliant versions Arm et Intel – a facilité les choses… au prix d’un installeur plus lourd.

Quelle roadmap pour Firefox ?

La bêta de macOS Big Sur a rassuré Mozilla : Apple n’abandonnait aucune des API majeures dont dépend le browser.
La numérotation des versions de l’OS (passage de 10.x à 11.0) a en revanche engendré quelques soucis. La mise à jour des installations existantes de Firefox x64 aussi. Et pour cause : les applications émulées sur Rosetta lancent obligatoirement leurs processus sur cette même couche.

La version native de Firefox se montre deux fois plus performante « sur certains benchmarks », affirme Mozilla. Le démarrage, en particulier, est beaucoup plus rapide. Cela tient probablement au compilateur JavaScript JIT. Sur Rosetta, le code qu’il produit doit obligatoirement être traduit pour l’architecture Arm64.

Mozilla a, sur sa feuille de route à court terme, un autre compilateur : celui qui gère WebAssembly. Une version plus rapide (Cranelift) est en cours de test sur le canal Nightly. La fondation en développe également un en interne (Ion) et entend en finaliser le portage Arm64 « sous quelques semaines ».

Sur la roadmap, il y a également WebRender, pour le moment inactif à cause de bugs graphiques. Son retour devrait intervenir avec Firefox 85. Mozilla entend aussi moderniser son usage des API de rendu héritées de macOS (problèmes, entre autres, avec le mode sombre). Et exploiter l’architecture de la puce Apple M1 (4 cœurs haute performance et 4 cœurs moins énergivores).

Photo d’illustration © flod – CC BY-NC-SA 2.0

Recent Posts

Numérisation de l’État : sprint engagé jusqu’à la présidentielle 2022

De FranceConnect au programme DcANT, tour d'horizon des chantiers prioritaires engagés par le Gouvernement d'ici…

1 jour ago

AIOps : quelles opérations IT sont optimisées ?

L'adoption de l'intelligence artificielle pour les opérations informatiques (AIOps) progresse au sein de grands groupes.…

1 jour ago

PC : vers une croissance sans précédent en Europe

Dans la zone EMEA, la demande soutenue de PC pour le travail et l'enseignement à…

2 jours ago

SolarWinds : de nouvelles armes du crime mises au jour

FireEye et Microsoft font la lumière sur divers malwares qui ont - ou semblent avoir…

2 jours ago

GAIA-X : comment se pilote l’infrastructure de données européenne

Avec la nomination d'un CEO et d'un CTO, GAIA-X lance ses opérations. Tour d'horizon de…

2 jours ago

Emploi : quelle place pour les femmes dans le numérique ?

Valoriser la reconversion des femmes dans les métiers du numérique n'est pas un luxe, mais…

2 jours ago