План улучшения поддержки Wayland в Firefox
2 октября 2021 года
Мартин Странский (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-блоков.
Режим строгой изоляции позволяет защититься от атак по сторонним каналам, например, связанными с уязвимостями класса Spectre, а также снижает фрагментацию памяти, более эффективно возвращает память операционной системе, минимизирует влияние сборки мусора и интенсивных вычислений на страницы в других процессах, увеличивает эффективность распределения нагрузки на разные ядра CPU и повышает стабильность (крах процесса, обрабатывающего iframe, не потянет за собой основной сайт и другие вкладки).
Среди известных проблем, возникающих при использовании режима строгой изоляции, отмечается заметное увеличение потребления памяти, соединений X11 и файловых дескриптров при открытии большого числа вкладок, а также нарушение работы некоторых дополнений, пропадание содержимого iframe при печати и вызове функции записи скриншота, снижение эффективности кэширования документов с iframe, потеря содержимого заполненных, но не отправленных форм при восстановлении сеанса после краха. Управление включением режима Fission осуществляется через переменную "fission.autostart=true" в about:config или на странице about:preferences#experimental.
Из других изменений в Firefox отмечается завершение миграции на систему локализации Fluent, улучшение высококонтрастного режима (High Contrast Mode), добавление в about:processes возможности записи профилей производительности процесса в один клик и удаление настройки для возвращения оформления страницы открытия новой вкладки в стиле до Firefox 89.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.