Plan działania dotyczący ulepszenia obsługi Waylanda w przeglądarce Firefox

Martin Stransky, opiekun pakietów Firefoksa dla Fedory i RHEL, który przenosi Firefoksa do Wayland, opublikował raport przeglądający najnowsze zmiany w Firefoksie działającym w środowiskach opartych na protokołach Wayland.

W nadchodzących wydaniach Firefoksa planowane jest rozwiązanie problemów zaobserwowanych w kompilacjach Waylanda ze schowkiem i obsługą wyskakujących okienek. Funkcje te nie mogły zostać od razu zaimplementowane ze względu na różnice w podejściu do ich implementacji w X11 i Wayland. W pierwszym przypadku trudności pojawiły się w związku z asynchronicznym działaniem schowka Waylanda, co wymagało stworzenia osobnej warstwy w celu abstrakcyjnego dostępu do schowka Waylanda. Określona warstwa zostanie dodana do przeglądarki Firefox 93 i domyślnie włączona w przeglądarce Firefox 94.

Jeśli chodzi o wyskakujące okna dialogowe, główna trudność polegała na tym, że Wayland wymaga ścisłej hierarchii wyskakujących okienek, tj. okno nadrzędne może utworzyć okno podrzędne z wyskakującym okienkiem, ale następne wyskakujące okienko zainicjowane z tego okna musi powiązać się z oryginalnym oknem podrzędnym, tworząc łańcuch. W przeglądarce Firefox każde okno może wyświetlać kilka wyskakujących okienek, które nie tworzą hierarchii. Problem polegał na tym, że przy korzystaniu z Waylanda zamknięcie jednego z wyskakujących okienek wymagało odbudowania całego łańcucha okien z innymi wyskakującymi okienkami, pomimo faktu, że obecność kilku otwartych wyskakujących okienek nie jest rzadkością, ponieważ menu i wyskakujące okienka są zaimplementowane w formie wyskakujące podpowiedzi, okna dialogowe dodatków, prośby o uprawnienia itp. Sytuację komplikowały także wady Waylanda i GTK, przez które drobne zmiany mogły prowadzić do różnych regresji. Jednakże kod obsługujący wyskakujące okienka w Wayland został zdebugowany i planuje się go włączyć do przeglądarki Firefox 94.

Inne ulepszenia związane z Waylandem obejmują dodanie 93 zmian skalowania do Firefoksa na ekranach o różnej rozdzielczości DPI, co eliminuje migotanie podczas przesuwania okna do krawędzi ekranu w konfiguracjach z wieloma monitorami. Firefox 95 planuje rozwiązać problemy pojawiające się podczas korzystania z interfejsu przeciągnij i upuść, na przykład podczas kopiowania plików ze źródeł zewnętrznych do plików lokalnych i podczas przenoszenia kart.

Planuje się, że wraz z wydaniem Firefoksa 96 port Firefoksa dla Wayland osiągnie ogólny poziom funkcjonalności z wersją X11, przynajmniej podczas działania w środowisku GNOME Fedory. Następnie uwaga programistów zostanie skierowana na doskonalenie pracy w środowiskach Wayland procesu GPU, który zawiera kod do interakcji z kartami graficznymi i który chroni główny proces przeglądarki przed awarią w przypadku awarii sterowników. W procesie GPU planowane jest także uwzględnienie kodu do dekodowania wideo przy użyciu VAAPI, który obecnie uruchamiany jest w procesach przetwarzania treści.

Dodatkowo możemy zauważyć włączenie trybu ścisłej izolacji witryn, opracowanego w ramach projektu Fission, dla niewielkiego odsetka użytkowników stabilnych gałęzi Firefoksa. W przeciwieństwie do stosowanego dotychczas arbitralnego podziału przetwarzania kart w dostępnej puli procesów (domyślnie 8), tryb linii izolacji umieszcza przetwarzanie każdej witryny w osobnym procesie, oddzielonym nie zakładkami, ale domeną (Public Suffix), co pozwala na dodatkową izolację treści zewnętrznych skryptów i bloków iframe. Włączenie trybu rozszczepienia jest kontrolowane za pomocą zmiennej „fission.autostart=true” w about:config lub na stronie about:preferences#experimental.

Tryb ścisłej izolacji pomaga chronić przed atakami typu side-channel, takimi jak te związane z lukami Spectre, a także zmniejsza fragmentację pamięci, efektywniej zwraca pamięć do systemu operacyjnego, minimalizuje wpływ wyrzucania elementów bezużytecznych i intensywnych obliczeń na stronach w innych procesach oraz zwiększa efektywność rozkładu obciążenia na różne rdzenie procesora i zwiększa stabilność (awaria procesu przetwarzającego ramkę iframe nie będzie miała wpływu na stronę główną i inne zakładki).

Wśród znanych problemów, które pojawiają się podczas korzystania z trybu ścisłej izolacji, zauważalny jest wzrost zużycia pamięci i deskryptorów plików podczas otwierania dużej liczby zakładek, a także zakłócenia w pracy niektórych dodatków, zniknięcie zawartości iframe podczas drukowanie i wywoływanie funkcji nagrywania zrzutów ekranu, zmniejszona wydajność buforowania dokumentów z iframe, Utrata zawartości wypełnionych, ale nie przesłanych formularzy w przypadku przywrócenia sesji po awarii.

Inne zmiany w Firefoksie obejmują zakończenie migracji do systemu lokalizacji Fluent, ulepszenia trybu wysokiego kontrastu, dodanie możliwości rejestrowania profili wydajności procesów jednym kliknięciem do about:process oraz usunięcie ustawienia przywracania starego styl strony nowej karty, który był używany przed wersją Firefox 89.

Źródło: opennet.ru

Dodaj komentarz