Состоялся релиз web-браузера Firefox 94. Кроме того, сформировано обновление веток с длительным сроком поддержки – 91.3.0. На стадию бета-тестирования переведена ветка Firefox 95, релиз которой намечен на 7 декабря.
- Реализована новая служебная страница “about:unloads” на которой пользователь для сокращения потребления памяти может принудительно выгрузить из памяти наиболее ресурсоёмкие вкладки, не закрывая их (содержимое будет перезагружено при переходе на вкладку). На странице “about:unloads” имеющиеся вкладки перечислены в порядке приоритета вытеснения при нехватке оперативной памяти. Приоритет в списке выбирается в зависимости о времени доступа к вкладке, а не на основе потребляемых ресурсов. При нажатии кнопки Unload из памяти будет вытеснена первая вкладка из списка, при следующем нажатии – вторая и т.п. Вытеснить вкладку на свой выбор пока нельзя.
- При первом запуске после установки обновления запускается новый интерфейс для выбора шести сезонных цветовых тем, для которых предложено три уровня применения тёмного оттенка, влияющих на отображение в тёмных тонах области контента, панелей и строки переключения вкладок.
- Предложен режим строгой изоляции сайтов, развивавшийся в рамках проекта Fission. В отличие от применяемого до настоящего времени произвольного распределения обработки вкладок по доступному пулу процессов (по умолчанию 8), режим строгой изоляции выносит обработку каждого сайта в свой отдельный процесс с разделением не по вкладкам, а по доменам (Public Suffix). Режим активирован не для всех пользователей, для отключения или включения может использоваться страница “about:preferences#experimental” или настройка “fission.autostart” в about:config.
Новый режим обеспечивает более надёжную защиту от атак класса Spectre, снижает фрагментацию памяти, позволяет дополнительно изолировать содержимое внешних скриптов и iframe-блоков.
более эффективно возвращает память операционной системе, минимизирует влияние сборки мусора и интенсивных вычислений на страницы в других процессах, увеличивает эффективность распределения нагрузки на разные ядра CPU и повышает стабильность (крах процесса, обрабатывающего iframe, не потянет за собой основной сайт и другие вкладки). Ценой является общее повышение потребления памяти при большом числе открытых сайтов. - Пользователям предложено дополнение Multi-Account Containers с реализацией концепции контекстных контейнеров, которые можно использовать для гибкой изоляции произвольных сайтов. Контейнеры предоставляют возможность изоляции различных типов контента без создания отдельных профилей, что позволяет отделить между собой информацию отдельных групп страниц. Например, можно создать отдельные, изолированные друг от друга, области для персонального общения, работы, покупок и банковских операций или организовать одновременное использование разных учётных записей пользователя на одном сайте. В каждом контейнере используются отдельные хранилища для Cookies, Local Storage API, indexedDB, кэша и содержимого OriginAttributes. Кроме того, при использовании Mozilla VPN для каждого контейнера можно использовать разные VPN-сервер.
- Убран запрос подтверждения операции при выходе из браузера или закрытии окна через меню и кнопки закрытия окна. Т.е. ошибочное нажатие кнопки “[x]” в заголовке окна теперь приводит к закрытию всех вкладок, в том числе с открытыми формами редактирования, без предварительного вывода предупреждения. После восстановления сеанса данные в web-формах не теряются. При нажатии Ctrl+Q продолжает выводиться предупреждение. В настройках данное поведение можно изменить (панель General/ секция Tabs/ параметр “Confirm before closing multiple tabs”).
- В сборках для платформы Linux для графических окружений, использующих протокол X11, по умолчанию включён новый бэкенд отрисовки, который примечателен использованием для вывода графики интерфейса EGL вместо GLX.
Бэкенд поддерживает работу с открытыми OpenGL-драйверами Mesa 21.x и c проприетарными драйверами NVIDIA 470.x. Проприетарные OpenGL-драйверы AMD пока не поддерживаются. Применение ЕGL решает проблемы с gfx-драйверами и позволяет расширить спектр устройств, для которых доступно ускорение видео и WebGL. Новый бэкенд подготовлен путём разделения бэкенда DMABUF, изначально созданного для Wayland и позволяющего напрямую выводить кадры в память GPU, которая может отражаться во фреймбуфер EGL и отрисовываться как текстура при сведении элементов web-страницы. - В сборках для Linux включена по умолчанию прослойка, решающая проблемы с буфером обмена в окружениях на базе протокола Wayland. В состав также включены изменения, связанные с обработкой всплывающих окон (popup) в окружениях на базе протокола Wayland. Wayland требует соблюдения строгой иерархии всплывающих окон, т.е. родительское окно может создать дочернее окно с popup-ом, но инициированный из этого окна следующий popup должен привязаться к исходному дочернему окну, образуя цепочку. В же Firefox каждое окно может порождать несколько popup-ов, не образующих иерархию. Проблема заключалась в том, что при использовании Wayland закрытие одного из popup-ов требует перестроения всей цепочки окон с другими popup-ами, при том что наличие нескольких открытых popup-ов не является редкостью, так как в виде popup-ов реализованы меню, всплывающие подсказки, диалоги дополнений, запросы полномочий и т.п.
- Снижены накладные расходы при использовании API performance.mark() и performance.measure() с большим числом анализируемых метрик.
- Поведение отрисовки в процессе загрузки страниц изменено для повышения производительности “тёплой” загрузки ранее открывавшихся страниц в режиме строгой изоляции.
- Для ускорения загрузки страниц повышен приоритет загрузки и показа изображений.
- В JavaScript-движке немного снижено потребление памяти и повышена производительность перебора свойств.
- Улучшены операции планирования вызова сборщика мусора, что позволило сократить время загрузки страниц в некоторых тестах.
- Снижена нагрузка на CPU в процессе poll-инга сокетов при обработке HTTPS-соединений.
- Ускорена инициализация хранилища и сокращено время начального запуска за счёт сокращения операций ввода/вывода в основном потоке.
- При закрытии инструментов для разработчиков обеспечено высвобождение большего чем раньше объёма памяти.
- В CSS-правиле @import добавлена поддержка функции layer(), выводящей определения каскадного слоя, заданного при помощи правила @layer.
- В функции structuredClone() реализована поддержка копирования сложных объектов JavaScript.
- Для форм реализован атрибут “enterkeyhint“, позволяющий определить поведение при нажатии клавиши Enter на виртуальной клавиатуре.
- Реализован метод HTMLScriptElement.supports(), при помощи которого можно проверять наличие поддержки браузером определённых типов скриптов, таких как модули JavaScript или классические скрипты.
- Добавлено свойство ShadowRoot.delegatesFocus для проверки установки свойства delegatesFocus в отдельном Shadow DOM.
- На платформе Windows вместо отвлекающих пользователя запросов на установку обновления браузер теперь обновляется в фоне при закрытии. В окружении Windows 11 реализована поддержка новой системы меню (Snap Layouts).
- В сборках для macOS для полноэкранного видео задействован режим низкого потребления энергии.
- В версии для платформы Android:
- Упрощено возвращение к ранее просмотренному и закрытому содержимому – на новой базовой домашней странице предоставлена возможность просмотра недавно закрытых вкладок, добавленных закладок, поисковых запросов и рекомендаций сервиса Pocket.
- Предоставлена возможность настройки содержимого, показываемого на домашней странице. Например, можно настроить показ списков наиболее часто посещаемых сайтов, недавно открытых вкладок, недавно сохранённых закладок, поисковых запросов и рекомендаций Pocket.
- Добавлена поддержка перемещения давно неактивных вкладок в отдельную секцию Inactive Tabs, чтобы не загромождать основную панель вкладок. В Inactive Tabs помещаются вкладки, к которым не было обращения больше 2 недель. Указанное поведение можно отключить в настройках “Settings->Tabs-> Move old Tabs to inactive.”
- Расширена эвристика при выводе рекомендация во время набора в адресной строке.
Кроме новшеств и исправления ошибок в Firefox 94 устранено 16 уязвимостей, из которых 10 помечены как опасные. 5 уязвимостей вызваны проблемами работы с памятью, такими как переполнения буферов и обращение к уже освобождённым областям памяти. Потенциально данные проблемы способны привести к выполнению кода злоумышленника при открытии специально оформленных страниц.