Martin Stransky, mainteneur des paquets Firefox pour Fedora et RHEL, travaillant sur le portage de Firefox pour Wayland, a publié un rapport sur les dernières avancées concernant le fonctionnement de Firefox dans des environnements basés sur le protocole Wayland.
Les prochaines versions de Firefox devraient résoudre les problèmes d'échange de données et de gestion des fenêtres pop-up dans les versions pour Wayland. Ces fonctionnalités n'ont pas pu être mises en œuvre immédiatement en raison des différences dans leur réalisation entre X11 et Wayland. Dans le premier cas, les difficultés sont survenues en raison du fonctionnement asynchrone du presse-papiers de Wayland, ce qui a nécessité la création d'une couche intermédiaire pour abstraire l'accès au presse-papiers de Wayland. Cette couche sera intégrée dans Firefox 93 et activée par défaut dans Firefox 94.
Concernant les fenêtres dialoguelles, la principale difficulté résidait dans le fait que Wayland exige le respect d'une hiérarchie stricte des fenêtres pop-up, c'est-à-dire qu'une fenêtre parent peut créer une fenêtre enfant avec un pop-up, mais le pop-up suivant initié à partir de cette fenêtre doit être attaché à la fenêtre enfant d'origine, formant ainsi une chaîne. Dans Firefox, chaque fenêtre pouvait générer plusieurs pop-ups sans établir de hiérarchie. Le problème était que, lorsque Wayland était utilisé, la fermeture de l'un des pop-ups nécessitait de reconstruire toute la chaîne de fenêtres avec d'autres pop-ups, étant donné que la présence de plusieurs pop-ups ouverts n'est pas rare, car des menus, des infobulles, des dialogues d'extensions, des demandes d'autorisation, etc., sont réalisés sous forme de pop-ups. La situation était également compliquée par des lacunes dans Wayland et GTK, qui faisaient que de petites modifications pouvaient conduire à diverses régressions. Néanmoins, le code de gestion des fenêtres pop-up pour Wayland a été affiné et il est prévu de l'intégrer dans Firefox 94.
Parmi les autres améliorations liées à Wayland, on mentionne l'ajout dans Firefox 93 de modifications relatives à l'échelle sur des écrans avec des DPI différents, ce qui a permis d'éliminer le scintillement lors du déplacement d'une fenêtre vers le bord de l'écran dans des configurations multi-moniteurs. Dans Firefox 95, il est prévu de résoudre les problèmes rencontrés lors de l'utilisation de l'interface de glisser-déposer, par exemple lors du transfert de fichiers depuis des sources externes vers des systèmes de fichiers locaux et lors du déplacement d'onglets.
Dans la version Firefox 96, l'objectif est d'atteindre un parité fonctionnelle entre la version de Firefox pour Wayland et celle pour X11, au moins dans l'environnement GNOME de Fedora. Après cela, l'attention des développeurs sera tournée vers l'optimisation du fonctionnement du processus GPU sous Wayland, qui contient le code pour interagir avec les cartes graphiques et qui protège le processus principal du navigateur des plantages en cas de défaillance des pilotes. Le processus GPU est également prévu pour inclure le code de décodage vidéo via VAAPI, qui est actuellement exécuté dans les processus de traitement de contenu.
On peut également noter l'inclusion, pour un petit pourcentage d'utilisateurs des branches stables de Firefox, d'un mode de stricte isolation des sites, développé dans le cadre du projet Fission. Contrairement à la distribution aléatoire actuelle du traitement des onglets entre un pool de processus disponible (par défaut 8), le mode d'isolation traite chaque site dans son propre processus séparé, non pas selon les onglets, mais selon les domaines (Public Suffix), permettant ainsi d'isoler davantage le contenu des scripts externes et des blocs iframe. L'activation du mode Fission se fait via la variable « fission.autostart=true » dans about:config ou sur la page about:preferences#experimental.
Le mode de stricte isolation permet de se protéger contre les attaques par canaux latéraux, par exemple ceux liés aux vulnérabilités de type Spectre, et réduit la fragmentation de la mémoire, renvoyant plus efficacement la mémoire au système d'exploitation, minimisant l'impact de la collecte des déchets et des calculs intensifs sur les pages des autres processus, augmentant l'efficacité de la répartition de la charge sur différents cœurs de CPU et améliorant la stabilité (le plantage du processus traitant un iframe ne mettra pas à mal le site principal et les autres onglets).
Parmi les problèmes connus lors de l'utilisation du mode de stricte isolation, une augmentation notable de la consommation de mémoire et de descripteurs de fichiers est mentionnée lors de l'ouverture d'un grand nombre d'onglets, ainsi que des dysfonctionnements de certaines extensions, la disparition du contenu des iframes lors de l'impression et de l'appel de la fonction de capture d'écran, une diminution de l'efficacité du mise en cache des documents avec iframes, ainsi que la perte du contenu des formulaires remplis mais non soumis lors du rétablissement de la session après un plantage.
Parmi les autres changements dans Firefox, on note la finalisation de la migration vers le système de localisation Fluent, l'amélioration du mode haute-contraste (High Contrast Mode), l'ajout dans about:processes de la possibilité d'enregistrer des profils de performance des processus en un clic, et la suppression de l'option permettant de revenir à l'ancien style d'affichage de la page d'ouverture d'un nouvel onglet, utilisé jusqu'à Firefox 89.
Source : opennet.ru
