Мартин Странский (Martin Stransky), мэйнтейнер пакетов с Firefox в Fedora и RHEL, занимающийся портированием Firefox для Wayland, опубликовал отчёт с обзором последних достижений в области работы Firefox в окружениях на базе протокола Wayland.
В ближайших выпусках Firefox планируется решить наблюдаемые в сборках для Wayland проблемы с буфером обмена и обработкой всплывающих окон (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, не потянет за собой основной сайт и другие вкладки).
Среди известных проблем, возникающих при использовании режима строгой изоляции, отмечается заметное увеличение потребления памяти, соединений X11 и файловых дескриптров при открытии большого числа вкладок, а также нарушение работы некоторых дополнений, пропадание содержимого iframe при печати и вызове функции записи скриншота, снижение эффективности кэширования документов с iframe, потеря содержимого заполненных, но не отправленных форм при восстановлении сеанса после краха.
Из других изменений в Firefox отмечается завершение миграции на систему локализации Fluent, улучшение высококонтрастного режима (High Contrast Mode), добавление в about:processes возможности записи профилей производительности процесса в один клик и удаление настройки для возвращения оформления страницы открытия новой вкладки в стиле до Firefox 89.