Plan zur Verbesserung der Unterstützung von Wayland in Firefox

Martin Stransky, Maintainer von Firefox-Paketen für Fedora und RHEL, der mit dem Portieren von Firefox für Wayland beschäftigt ist, veröffentlichte einen Bericht über die neuesten Fortschritte in Bezug auf die Funktionsweise von Firefox in Umgebungen, die auf dem Wayland-Protokoll basieren.

In den kommenden Versionen von Firefox wird geplant, die in den Wayland-Bauten beobachteten Probleme mit der Zwischenablage und der Verarbeitung von Pop-up-Fenstern zu lösen. Diese Funktionen konnten nicht sofort umgesetzt werden, da es Unterschiede in der Herangehensweise an deren Implementierung in X11 und Wayland gibt. Im ersten Fall kamen Schwierigkeiten aufgrund des asynchronen Betriebs der Wayland-Zwischenablage auf, was die Erstellung einer separaten Schicht erforderte, um den Zugriff auf die Wayland-Zwischenablage zu abstrahieren. Diese Schicht wird in Firefox 93 hinzugefügt und standardmäßig in Firefox 94 aktiviert.

Was Pop-up-Dialoge betrifft, so lag die Hauptschwierigkeit darin, dass Wayland eine strikte Hierarchie von Pop-up-Fenstern verlangt, d.h. ein übergeordnetes Fenster kann ein untergeordnetes Fenster mit einem Pop-up erstellen, aber das aus diesem Fenster initiierte nächste Pop-up muss an das ursprüngliche untergeordnete Fenster gebunden werden und eine Kette bilden. In Firefox konnte jedes Fenster mehrere Pop-ups erzeugen, die keine Hierarchie bildeten. Das Problem bestand darin, dass beim Einsatz von Wayland das Schließen eines der Pop-ups eine Neustrukturierung der gesamten Fensterkette mit anderen Pop-ups erforderte, wobei das gleichzeitige Vorhandensein mehrerer geöffneter Pop-ups nicht selten ist, da Menüs, Tooltips, Erweiterungsdialoge, Berechtigungsanfragen usw. in Form von Pop-ups realisiert sind. Die Situation wurde auch durch Mängel in Wayland und GTK kompliziert, durch die selbst kleine Änderungen zu verschiedenen Regressionen führen konnten. Dennoch wurde der Code zur Verarbeitung von Pop-up-Fenstern für Wayland optimiert und soll in Firefox 94 integriert werden.

Unter den anderen Wayland-relevanten Verbesserungen wird die Hinzufügung von Änderungen in Firefox 93 erwähnt, die mit der Skalierung auf Bildschirmen mit unterschiedlichem DPI zu tun haben und das Flimmern beim Verschieben eines Fensters an den Bildschirmrand in Konfigurationen mit mehreren Monitoren beseitigen. In Firefox 95 wird geplant, sich mit Problemen zu befassen, die beim Einsatz der Drag-and-Drop-Oberfläche auftreten, beispielsweise beim Kopieren von Dateien aus externen Quellen in lokale Dateisysteme und beim Verschieben von Tabs.

In der Firefox-Version 96 wird der Firefox-Port für Wayland so weit verbessert, dass er in Bezug auf die Funktionalität mit der X11-Version gleichziehen kann, zumindest im GNOME-Umfeld von Fedora. Danach werden die Entwickler ihre Aufmerksamkeit auf die Optimierung der GPU-Prozesse unter Wayland richten, wobei der Code für die Interaktion mit Grafikadaptern ausgelagert wird, um den Hauptprozess des Browsers vor Abstürzen bei Treiberfehlern zu schützen. Außerdem wird der Code für die Videodekodierung mit VAAPI in den GPU-Prozess verlagert, der derzeit in den Content-Processing-Prozessen läuft.

Zusätzlich ist zu erwähnen, dass für einen kleinen Prozentsatz der Benutzer stabiler Firefox-Zweige der Modus der strengen Webseiten-Isolierung, der im Rahmen des Fission-Projekts entwickelt wurde, aktiviert wird. Im Gegensatz zur bisher angewandten willkürlichen Verteilung der Verarbeitung von Tabs auf den verfügbaren Pool von Prozessen (standardmäßig 8) führt der Modus der strengen Isolierung die Verarbeitung jeder Webseite in ihrem eigenen separaten Prozess durch, und zwar nicht nach Tabs, sondern nach Domains (Public Suffix), was es ermöglicht, den Inhalt von externen Skripten und iframe-Elementen zusätzlich zu isolieren. Die Aktivierung des Fission-Modus erfolgt über die Variable „fission.autostart=true“ in about:config oder auf der Seite about:preferences#experimental.

Der strenge Isolationsmodus schützt vor Angriffen über Seiteneffekte, zum Beispiel im Zusammenhang mit Schwachstellen der Spectre-Klasse, und reduziert die Speicherfragmentierung, gibt den Speicher effizienter an das Betriebssystem zurück, minimiert die Auswirkungen der Garbage Collection und rechenintensiven Prozesse auf Seiten in anderen Prozessen, erhöht die Effizienz der Lastverteilung auf verschiedene CPU-Kerne und verbessert die Stabilität (ein Absturz des Prozesses, der iframes verarbeitet, zieht nicht den Hauptstandort und andere Tabs mit sich).

Zu den bekannten Problemen, die beim Einsatz des strengen Isolationsmodus auftreten, zählen ein deutlich höherer Speicher- und Dateideskriptorverbrauch beim Öffnen einer großen Anzahl von Tabs sowie die Beeinträchtigung der Funktionalität einiger Erweiterungen, das Verschwinden von Inhalten in iframes beim Drucken und bei der Funktion zum Erstellen von Screenshots, eine geringere Effektivität beim Caching von Dokumenten mit iframes und der Verlust von Inhalten in ausgefüllten, aber nicht gesendeten Formularen bei der Wiederherstellung einer Sitzung nach einem Absturz.

In Firefox gibt es mehrere Änderungen, darunter der Abschluss der Migration auf das Fluent-Übersetzungssystem, die Verbesserung des Hochkontrastmodus (High Contrast Mode), die Einführung der Möglichkeit, Leistungsprofile von Prozessen über about:processes mit einem Klick aufzuzeichnen, sowie die Entfernung der Option, den alten Stil der neuen Tab-Seite, der bis Firefox 89 verwendet wurde, wiederherzustellen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4