План покращення підтримки Wayland у Firefox

Мартін Странський (Martin Stransky), мейнтейнер пакетів з Firefox у Fedora і RHEL, який займається портуванням Firefox для Wayland, опублікував звіт з оглядом останніх досягнень у сфері роботи Firefox в оточеннях на базі протоколу Wayland.

У найближчих випусках Firefox планується вирішити проблеми з буфером обміну та обробкою спливаючих вікон (popup). Зазначені можливості не вдавалося відразу втілити через відмінності у підході до їх реалізації в X11 та Wayland. У першому випадку проблеми виникли через роботу буфера обміну Wayland в асинхронному режимі, що зажадало створення окремого прошарку для абстрагування доступу до буфера обміну Wayland. Зазначений прошарок буде доданий до складу Firefox 93 і включений за замовчуванням у Firefox 94.

Що ж до спливаючих діалогів, то основна складність у тому, що Wayland вимагає дотримання суворої ієрархії спливаючих вікон, тобто. батьківське вікно може створити дочірнє вікно з popup-ом, але ініційований з цього вікна наступний popup повинен прив'язатися до початкового дочірнього вікна, утворюючи ланцюжок. У Firefox кожне вікно могло породжувати кілька popup-ів, які не утворюють ієрархію. Проблема полягала в тому, що при використанні Wayland закриття одного з popup-ів вимагає перебудови всього ланцюжка вікон з іншими popup-ами, при тому що наявність декількох відкритих popup-ів не є рідкістю, тому що у вигляді popup-ів реалізовані меню, що спливають підказки, діалоги доповнень, запити повноважень тощо. Ситуацію також ускладнювали недоробки у Wayland та GTK, через які внесення невеликих змін могло призвести до появи різних регресій. Тим не менш, код для обробки спливаючих вікон для Wayland був налагоджений і його планується включити до Firefox 94.

З інших поліпшень, що мають відношення до Wayland, згадується додавання в Firefox 93 змін, пов'язаних з масштабуванням на екранах з різним DPI, які дозволили позбутися мерехтіння при переміщенні вікна до краю екрана в багатомоніторних конфігураціях. Firefox 95 планує розібратися з проблемами, що виникають при використанні інтерфейсу drag&drop, наприклад, при копіюванні файлів із зовнішніх джерел в локальні ФС і при переміщенні вкладок.

У випуску Firefox 96 порт Firefox для Wayland планують довести до загального паритету у функціональності зі складанням для X11, принаймні при роботі в GNOME-оточенні Fedora. Після цього увага розробників буде переключена на відточування роботи в оточеннях Wayland процесу GPU, до якого винесено код для взаємодії з графічними адаптерами та який захищає основний процес браузера від краху у разі збоїв у драйверах. У процес GPU також планується винести код для декодування відео за допомогою VAAPI, який зараз запускається в процесах обробки контенту.

Додатково можна відзначити включення для невеликого відсотка користувачів стабільних гілок Firefox режиму суворої ізоляції сайтів, що розвивався в рамках проекту Fission. На відміну від застосовуваного до теперішнього часу довільного розподілу обробки вкладок по доступному пулу процесів (за замовчуванням 8), режим рядком ізоляції виносить обробку кожного сайту у свій окремий процес з поділом не по вкладках, а по доменам (Public Suffix), що дозволяє додатково ізолювати вміст зовнішніх скриптів та iframe-блоків. Управління включенням режиму Fission здійснюється через змінну fission.autostart=true в about:config або на сторінці about:preferences#experimental.

Режим суворої ізоляції дозволяє захиститися від атак по сторонніх каналах, наприклад, пов'язаних з уразливістю класу Spectre, а також знижує фрагментацію пам'яті, ефективніше повертає пам'ять операційній системі, мінімізує вплив складання сміття та інтенсивних обчислень на сторінки в інших процесах, збільшує ефективність розподілу навантаження на різні ядра CPU і підвищують стабільність (крах процесу, що обробляє iframe, не потягне за собою основний сайт та інші вкладки).

Серед відомих проблем, що виникають при використанні режиму суворої ізоляції, відзначається помітне збільшення споживання пам'яті та файлових дескриптрів при відкритті великої кількості вкладок, а також порушення роботи деяких доповнень, пропадання вмісту iframe при друку та виклик функції запису скріншота, зниження ефективності кешування документів з iframe, втрата вмісту заповнених, але не надісланих форм при відновленні сеансу після краху.

З інших змін Firefox відзначається завершення міграції на систему локалізації Fluent, покращення висококонтрастного режиму (High Contrast Mode), додавання в about:processes можливості запису профілів продуктивності процесу в один клік і видалення налаштування для повернення старого стилю оформлення сторінки відкриття нової вкладки, який використовувався до Firefox 89

Джерело: opennet.ru

Додати коментар або відгук