Martin Stransky, Wartungsbeauftragter für Firefox-Pakete in Fedora und RHEL, der sich mit der Portierung von Firefox für Wayland beschäftigt, hat einen Bericht veröffentlicht, der die neuesten Fortschritte bei der Nutzung von Firefox in Umgebungen auf Basis des Wayland-Protokolls zusammenfasst.
In den kommenden Versionen von Firefox wird geplant, die in den Wayland-Bauten beobachteten Probleme mit der Zwischenablage und der Handhabung von Popup-Fenstern zu beheben. Diese Funktionen konnten zunächst nicht realisiert werden, da es Unterschiede in der Implementierung zwischen X11 und Wayland gibt. Im ersten Fall entstanden Schwierigkeiten durch die asynchrone Arbeitsweise der Wayland-Zwischenablage, was die Schaffung einer separaten Schicht zur Abstraktion des Zugriffs auf die Wayland-Zwischenablage erforderlich machte. Diese Schicht wird in Firefox 93 hinzugefügt und standardmäßig in Firefox 94 aktiviert.
Was die Pop-up-Fenster betrifft, so bestand die Hauptschwierigkeit darin, dass Wayland eine strenge Hierarchie von Pop-up-Fenstern erfordert. Das heißt, ein übergeordnetes Fenster kann ein untergeordnetes Fenster mit einem Pop-up erstellen, aber das nächste Pop-up, das aus diesem Fenster initiiert wird, muss an das ursprüngliche untergeordnete Fenster angebunden werden, wodurch eine Kette entsteht. In Firefox konnte jedes Fenster mehrere Pop-ups erzeugen, ohne eine Hierarchie zu bilden. Das Problem bestand darin, dass beim Schließen eines der Pop-ups unter Wayland die gesamte Kette der Fenster mit den anderen Pop-ups neu aufgebaut werden muss, wobei mehrere offene Pop-ups keine Seltenheit sind, da in Form von Pop-ups Menüs, Tooltips, Erweiterungsdialoge, Berechtigungsanfragen usw. realisiert sind. Die Situation wurde zusätzlich durch Mängel in Wayland und GTK kompliziert, aufgrund derer schon kleine Änderungen zu verschiedenen Regressionen führen konnten. Trotzdem wurde der Code zur Verarbeitung von Pop-up-Fenstern für Wayland optimiert und soll in Firefox 94 integriert werden.
Zu den weiteren Verbesserungen in Bezug auf Wayland gehört die Integration von Änderungen in Firefox 93, die sich mit dem Skalieren auf Bildschirmen mit unterschiedlicher DPI beschäftigen. Diese Anpassungen haben das Flimmern beim Verschieben von Fenstern zum Rand des Bildschirms in Multi-Monitor-Konfigurationen beseitigt. In Firefox 95 ist geplant, Probleme beim Drag-&-Drop-Interface anzugehen, insbesondere beim Kopieren von Dateien aus externen Quellen in lokale Dateisysteme sowie beim Verschieben von Tabs.
In der Version Firefox 96 wird der Wayland-Port von Firefox auf den Funktionsumfang der X11-Version angehoben, zumindest im GNOME-Umfeld von Fedora. Danach wird der Fokus der Entwickler darauf liegen, die GPU-Prozesse in Wayland zu optimieren. In diesen Prozess wird der Code zur Interaktion mit Grafik-Adaptern ausgelagert, was den Hauptprozess des Browsers vor Abstürzen durch Treiberfehler schützt. Außerdem ist vorgesehen, den VAAPI-Code zur Video-Dekodierung in den GPU-Prozess auszulagern, der aktuell in den Content-Processing-Prozessen läuft.
Zusätzlich kann erwähnt werden, dass für einen kleinen Prozentsatz der Benutzer stabile Firefox-Versionen den strengen Isolationmodus für Webseiten aktivieren, der im Rahmen des Fission-Projekts entwickelt wurde. Im Gegensatz zur bisherigen zufälligen Verteilung der Bearbeitung von Tabs auf den verfügbaren Prozesspool (standardmäßig 8) ordnet der Isolationmodus die Bearbeitung jeder Webseite einem eigenen Prozess zu, wobei die Trennung nicht nach Tabs, sondern nach Domains (Public Suffix) erfolgt. Dies ermöglicht eine zusätzliche Isolierung des Inhalts externer Skripte und iframe-Elemente. Die Aktivierung des Fission-Modus erfolgt über die Variable "fission.autostart=true" in about:config oder auf der Seite about:preferences#experimental.
Der Modus der strengen Isolierung schützt vor Angriffen über externe Kanäle, wie sie mit Schwachstellen der Spectre-Klasse verbunden sind. Zudem reduziert er die Fragmentierung des Speichers, gibt den Speicher effizienter an das Betriebssystem zurück, minimiert die Auswirkungen von Garbage Collection und intensiven Berechnungen auf die Seiten anderer Prozesse, erhöht die Effizienz der Lastverteilung auf verschiedene CPU-Kerne und verbessert die Stabilität (ein Absturz des Prozesses, der das iframe verarbeitet, wirkt sich nicht auf die Hauptseite und andere Tabs aus).
Zu den bekannten Problemen beim Einsatz des strengen Isolationsmodus gehört ein deutlich erhöhter Speicher- und Dateideskriptorverbrauch beim Öffnen vieler Tabs sowie die Beeinträchtigung der Funktion einiger Erweiterungen, das Verschwinden von iframe-Inhalten beim Drucken und beim Aufruf der Screenshot-Funktion, die Verringerung der Effizienz beim Caching von Dokumenten mit iframes und der Verlust des Inhalts ausgefüllter, aber nicht gesendeter Formulare beim Wiederherstellen der Sitzung nach einem Absturz.
Zu den weiteren Änderungen in Firefox gehört der Abschluss der Migration auf das Fluent-Localization-System, die Verbesserung des hochkontrastierenden Modus (High Contrast Mode), die Möglichkeit, im Bereich about:processes durch einen Klick Leistungsprofile des Prozesses aufzuzeichnen, sowie die Entfernung der Einstellung zur Wiederherstellung des alten Stils für die Seite zum Öffnen eines neuen Tabs, der bis Firefox 89 verwendet wurde.
Quelle: opennet.ru
