Mozilla : Comment nous avons fait fonctionner Firefox sur Apple M1

Spread the love
Mozilla : Comment nous avons fait fonctionner Firefox sur Apple M1

Mozilla a fourni plus de détails sur le travail nécessaire pour que son navigateur Firefox soit porté sur le processeurs d’Apple utilisé dans ses nouveaux Mac.

Gian-Carlo Pascutto, ingénieur en sécurité chez Mozilla Corporation, a expliqué en détail comment il a réussi à porter le navigateur Firefox sur la nouvelle architecture, tout en soulignant des problèmes autour de l’émulateur Rosetta d’Apple, et sur la prise en charge de Netflix et de la gestion des DRM.

Google a très vite sorti une version de Chrome avec un support natif pour les nouveaux processeurs d’Apple. Chrome a battu Firefox d’un mois, mais Mozilla a expliqué avoir évité certains des problèmes de Google en prenant son temps. Les navigateurs sont des logiciels très complexes, il n’est donc pas surprenant que Firefox et Chrome aient rencontré des problèmes dans le portage de leurs applications vers les nouveaux processeurs.

publicité

La difficulté du streaming vidéo

Dans un post de blog long et fascinant, l’ingénieur revient sur les choix et les compromis que les ingénieurs de Mozilla ont dû faire afin de sortir une version de Firefox fonctionnelle sur la nouvelle architecture Apple. Le travail d’ingénierie a commencé lorsque Apple a dévoilé son processeur en juin, mais peu de gens connaissaient la date précise à laquelle Apple sortirait ses premiers Mac basés sur Arm. Apple a finalement annoncé ses Mac Apple Silicon le 17 novembre.

Le problème le plus intéressant concernait Rosetta, et le support de Netflix, Hulu et d’autres services de streaming vidéo sur Firefox. Pour que Firefox soit prêt pour les processeurs d’Apple, il était essentiel de garantir une prise en charge adéquate des logiciels anti-piratage DRM et des décodeurs, comme Widevine de Google. A l’époque, Widevine n’avait pas annoncé de version de son logiciel sur les architectures d’Apple.

« Comme un nombre important de nos utilisateurs utilisent le navigateur pour regarder des vidéos en ligne, cela pouvait constituer un obstacle », écrit Gian-Carlo Pascutto.

Les problèmes de l’émulateur d’Apple

Une partie de la solution a nécessité le recours à Rosetta 2, l’émulateur d’Apple qui permet aux applications pour les puces Intel de fonctionner sur le processeur d’Apple. Apple ne préinstalle pas Rosetta 2 sur ses nouveaux Mac : l’installation est déclenchée lorsqu’un utilisateur essaie d’exécuter une application Intel.

Comme le note Gian-Carlo Pascutto, la première version de Chrome avec le support natif des processeurs d’Apple s’est heurtée à un problème avec Rosetta 2. Google a publié cette version de Chrome le lendemain de la présentation des nouveaux Mac, mais les utilisateurs ont immédiatement signalé que le navigateur se bloquait inopinément.

« Le déclenchement de l’installation de Rosetta fonctionne, mais certains de nos collègues ont découvert à leurs dépens qu’il n’est pas très fiable », écrit Gian-Carlo Pascutto.

L’expérience de Mozilla avec Arm

C’est pourquoi Mozilla a décidé d’adopter une approche différente de celle du projet Chromium et a préféré afficher un message d’erreur conseillant aux utilisateurs d’installer Rosetta.

Les ingénieurs Chrome ont rapidement résolu le problème du crash, mais comme l’indique Gerrit dans ses notes : « ne faites pas confiance aux callbacks de l’installateur de Rosetta. De temps en temps, l’installateur de Rosetta rappelle le bloc “installation terminée” plus d’une fois. Méfiez-vous de cela ».

Par ailleurs, comme le note Gian-Carlo Pascutto, les ingénieurs de Mozilla savaient à peu près à quoi s’attendre avec le processeurs d’Apple : Mozilla avait travaillé avec Arm sur Android et Linux pendant un certain temps. Et en 2019, Mozilla a sorti Firefox pour Windows 10 sur Arm.

Rust

Cependant, il s’est inquiété des parties de Firefox écrites en Rust et de la nécessité de s’assurer qu’il disposait d’un compilateur Rust solide à temps pour les premiers Mac basés sur Arm d’Apple, prévus pour la mi-novembre. Mais alors que la version Rust prenant en charge les nouveaux processeurs d’Apple était en cours de développement, Apple n’avait pas encore révélé la date de sortie ses appareils.

« Bien que le support de Rust par Apple Silicon était en cours de développement, il a fallu attendre la mi-août pour que le compilateur soit fonctionnel, ce qui a limité les progrès possibles pour Firefox », explique Gian-Carlo Pascutto.

« Une fois que le compilateur a fonctionné, un exercice similaire a dû être fait avec toutes les crates Rust (dépendances, NDLR) dont nous dépendons. La nécessité de mettre à jour le compilateur et la dépendance de certaines crates à la version exacte du compilateur, en particulier les parties traitant du support SIMD, nous ont fait perdre du temps. Il était difficile de faire avancer le support des processeurs Apple vers des versions antérieures de Firefox sans affecter potentiellement d’autres plateformes. »

Les ingénieurs ne savaient pas non plus s’il fallait faire de Firefox un binaire universel, ou un binaire qui supporte à la fois le processeurs Arm d’Apple et les Mac équipés de chipsets Intel avec le même exécutable.

Source : ZDNet.com

Leave a Reply