Представлен релиз web-браузера Firefox 67, а также мобильной версии Firefox 67 для платформы Android. Кроме того, сформировано обновление ветки с длительным сроком поддержки 60.7.0. В ближайшее время на стадию бета-тестирования перейдёт ветка Firefox 68, релиз которой намечен на 9 июля.

Основные новшества:

  • Реализована возможность автоматической выгрузки вкладок для высвобождения ресурсов. Функция активируется при нехватке памяти (менее 400 Мб свободной памяти) и в первую очередь вытесняет давно неиспользуемые вкладки. При этом вкладки не исчезают, а переводятся в состояние готовности к загрузке (режим ожидания), аналогичное тому, что наблюдается после восстановления сеанса. Для управления работой режима в about:config добавлена опция «browser.tabs.unloadOnLowMemory»;
  • Ускорена загрузка страниц при наличии работ, интенсивно нагружающих процессор. Оптимизация реализована через снижение приоритета обработчиков событий таймеров setTimeout во время загрузки страницы (по аналогии с фоновыми вкладками уменьшен предоставляемый бюджет времени, который расходуется на выполнение обработчика событий таймера). Ограничение фоновых обработчиков позволяет выделить больше ресурсов основным обработчикам, влияющим на начальную отрисовку страницы. Например, основные скрипты Instagram, Amazon и Google благодаря добавленной оптимизации запускаются на 40-80% быстрее;
  • На поздние стадии загрузки вынесены некоторые второстепенные обработчики. Например, сканирование альтернативных CSS-стилей теперь выполняется не во время, а после загрузки страницы. Загрузка модуля автодополнения ввода отложена до готовности форм ввода;
  • Изменён подход к отрисовке во время загрузки страницы — вывод теперь начинается на более раннем этапе загрузки, но операции отрисовки вызываются реже;
  • Инициализация некоторых подсистем браузера и связанных с изменением оформления дополнений отложена до окончания основной загрузки, что позволило сократить время между запуском браузера и его готовностью к показу страниц;
  • Реализована возможность блокирования JavaScript-вставок, осуществляющих майнинг криптовалют или отслеживающих пользователей с помощью методов скрытой идентификации («browser fingerprinting»). Блокировка осуществляется по дополнительным категориям (fingerprinting и cryptomining) в списке Disconnect.me, включающим хосты, уличённые в использовании майнеров и кода для скрытой идентификации. По умолчанию новые режимы блокировки отключены, а для их активации в связанные с конфиденциальностью настройки добавлены новые опции «Cryptominers» и «fingerprinters». Проследить за срабатыванием блокировщика можно через
    контекстное меню сайта, отображаемое при клике на пиктограмму с изображением щита в адресной строке;

  • В основное меню и диалог с рекомендациями заполнения форм входа добавлена возможность быстрого перехода к сохранённым для сайта паролям;

  • В состав включена система композитинга Servo WebRender, написанная на языке Rust и выносящая на сторону GPU операции отрисовки содержимого страницы. При использовании WebRender вместо встроенной в движок Gecko системы композитинга, обрабатывающей данные при помощи CPU, для выполнения операций сводной отрисовки элементов страницы используются шейдеры, выполняемые в GPU, что позволяет добиться существенного увеличения скорости отрисовки и снизить нагрузку на CPU.

    По умолчанию WebRender пока активирован примерно для 4% пользователей Windows 10, у которых используются видеокарты NVIDIA. Включение для остальных пользователей будет зависеть от результатов тестирования. Если всё пройдёт гладко то 27 мая охват тестирования будет расширен до 25%, 30 мая до 50%, а в течение первой недели июня до 100%. Проверить активацию WebRender можно на странице about:support. Для принудительного включения в about:config следует активировать настройки «gfx.webrender.all» и «gfx.webrender.enabled» или запустив Firefox с выставленной переменной окружения MOZ_WEBRENDER=1. В Linux поддержка WebRender более-менее стабилизирована для видеокарт Intel c драйверами Mesa 18.2+;

  • Переработан механизм работы с профилями: если раньше при установке нескольких разных экземпляров Firefox по умолчанию использовался один общий профиль с настройкам, дополнениями и информационными базами (закладки, история, сохранённые пароли, cookie и т.д.), то теперь для каждого параллельно установленного экземпляра будет создаваться собственный отдельный профиль. Например, при одновременной установке ESR, бета-версий, ночных сборок, редакции Developer Edition и обычного выпуска Firefox, для них будут созданы раздельные профили.

    Основной причиной перехода к раздельным профилям являются возможные проблемы в случае использования профиля нового выпуска в более старой версии Firefox, а также при одновременном доступе к БД профиля из параллельно запущенных разных экземпляров Firefox, что потенциально может привести к повреждению данных. Для выбора существующего профиля как и раньше можно использовать интерфейс «firefox -ProfileManager». После завершения установки Firefox при обнаружении уже имеющегося в системе профиля выводится специальное предупреждение с предложением синхронизировать настройки через учётную запись в облачном сервисе Mozilla Sync. При попытке использования профиля из более старой версии Firefox теперь будет выводиться ошибка, обойти которую можно через указание опции «-allow-downgrade»;

  • В основной состав включено системное дополнение Firefox Monitor, эксперименты по активации которого для ограниченного числа пользователей проводились начиная с Firefox 62, но финальная активация для всех пользователей произведена только сейчас. Дополнение Firefox Monitor обеспечивает вывод предупреждения в случае компрометации учётной записи (проверка по email) или попытке входа на ранее взломанный сайт. Проверка осуществляется через интеграцию с базой данных проекта haveibeenpwned.com, включающей сведения о 7.8 миллиардах учётных записей, похищенных в результате взломов 364 сайтов. Предупреждение выводится только для сайтов, информация о взломах которых добавлена в базу haveibeenpwned.com в течение последних 12 месяцев. В случае если с момента появления данных о взломе не прошло 2 месяца будет показано повторное предупреждение.

  • Расширено число вызовов API, которые доступны только при открытии страницы в защищённом контексте (Secure Context), т.е. при открытии по HTTPS, через localhost или из локального файла. В Firefox 67 для страниц, открытых вне защищённого контекста, запрещён вывод системных уведомлений через API Notifications, показываемых вне окна браузера;
  • Расширены возможности приватного режима просмотра. Добавлена возможность сохранять пароли в формах на сайтах, открываемых в приватном режиме. Реализованы средства управления активацией дополнений в приватном режиме — в менеджере дополнений пользователь теперь может определить какие дополнения включать в приватном режиме, а какие использовать только в основном сеансе. Для новых дополнений по умолчанию запрещается активация в приватном режиме (для включения требуется изменение настроек);

  • Реализация видеокодека AV1 переведена на использование библиотеки dav1d, развиваемой сообществами VideoLAN и FFmpeg и ориентированной на достижение максимально возможной производительности декодирования и обеспечение качественной работы в многопоточном режиме. По умолчанию активирован декодировщик AV1 в сборках для Linux. Отмечается, что формат AV1 начинает набирать популярность, если в феврале доля просматриваемых в бета-выпусках Firefox роликов AV1 составляя 0.85%, а в марте — 3%, то теперь этот показатель составляет 11.8%;
  • Расширены возможности по управлению браузером при помощи клавиатуры — панелью и выпадающим меню теперь можно управлять только с клавиатуры, включая доступ к размещённым на панели кнопкам дополнений, не влезающим на экран элементам, индикатору загрузки, действиям со страницей и т.п. Навигация по элементам панели осуществляется при помощи клавиши Tab и стрелок на клавиатуре;
  • На панель добавлен индикатор для оценки статуса синхронизации, подключения к учётной записи и совместного доступа к данным с нескольких устройств, а так же для быстрого доступа к операциям, использующим учётную запись в Firefox Account. Имеется возможность отображения вместо типовой пиктограммы своего аватара;

  • Добавлена возможность закрепления вкладок (Pin Tabs) через меню в адресной строке. Закреплённые вкладки остаются всегда активны, запускаются автоматически и позволяют упростить доступ к постоянно используемым сайтам;

  • Реализована система контекстных подсказок, рекомендующая пользователю те или иные возможности, учитывая контекст;
  • В меню «File» добавлена новая кнопка для импорта настроек и данных из других браузеров (поддерживается импорт из Chrome и Chromium);

  • Прекращена поддержка использования в URL протокола «webcal:», связанного с сервисом 30boxes.com;
  • Убрана возможность загрузки скриншотов на сервер Firefox Screenshots и организации совместного доступа к скриншотам через сервер Mozilla. В ближайшие месяцы сервер со скриншотами будет отключен и пользователям рекомендуется экспортировать с него имеющиеся данные;
  • Обновлён включённый в поставку шрифт Twemoji. В новой версии добавлена поддержка спецификации Emoji 11.0;
  • Дополнительным категориям пользователей предложено принять участие в экспериментах c выводом дополнительного информационного контента, рекомендованного сервисом Pocket, а также с изменением раскладки размещения информации на стартовой странице. Например, у некоторых пользователей будет изменён размер блоков и число рекомендаций, предложены новые тематические секции (Здоровье, Наука, Технологии и Развлечения). Для отказа от участия в эксперименте следует в верхнем правом углу страницы новой вкладки отключить опцию «Content Discovery»;
  • Запрещено использование дополнительных протоколов в URL, используемых в качестве источника для загрузки iframe. Речь ведётся о внешних протоколах, не возвращающих какие-либо данные, таких как «mailto:», «ircs://» и «itms://». Блокировка предпринята для защиты от возможных DoS-атак, направленных на исчерпание имеющихся ресурсов при открытии страниц, содержащих большое число iframe-блоков, ссылающихся на внешние обработчики. Например, при указании конструкций вида ‹iframe src=»mailto:support@example.com»&#8250 ; можно инициировать запуск большого числа экземпляров почтового клиента;
  • В оптимизирующем компиляторе JavaScript добавлена поддержка устройств на базе архитектуры ARM64, работающих под управлением Windows;

  • Включен по умолчанию API FIDO U2F, предназначенный для организации работы двухфакторной аутентификации в различных web-сервисах. Разрешено применение U2F для учётных записей Google;
  • Добавлена поддержка динамического импорта модулей JavaScript при помощи выражения import;
  • Реализован и включен по умолчанию метод String.prototype.matchAll() для сопоставления с использованием регулярных выражений. При использовании метода match с флагом «/g» возвращается простой массив строк, но при единичном сопоставлении (без флага «/g») выводится объект с расширенными свойствами. Метод matchAll отличается от выполнения метода match с флагом «/g» тем, что он возвращает массив объектов со свойствами всех совпадений, а не массив строк;
  • В JavaScript-файлах реализована возможность использования комментария «#!» (hashbang), задаваемого в первой строке и определяющего интерпретатор для запуска. Например, по аналогии с другими скриптовыми языками файл JavaScript может начинаться со строки «#!/usr/bin/env node»;
  • Добавлены свойства InputEvent.data (строка DOMString с введёнными символами) и InputEvent.dataTransfer (объект DataTransfer с информацией о текстовых данных, добавленных или удалённых из формы редактирования);
  • Реализована поддержка HTTP-заголовка Cross-Origin-Opener-Policy;
  • В HTML-теги input добавлено свойство «autocomplete=new-password», позволяющее запретить использование ранее сохранённых паролей для автозаполнения поля;
  • В CSS реализовано ключевое слово «revert», которое сбрасывает значение свойства к унаследованному значению или к значению, устанавливаемому браузером по умолчанию;
  • В CSS-свойстве «word-break» добавлена поддержка значения «break-word» («word-break: break-word»), разрешающего разрывать слова в произвольной позиции, если они не вмещаются в ширину блока и отсутствует возможность корректного разрыва содержимого строки (например, когда встречается очень длинное слово, занимающее всю строку);
  • Добавлено media-свойство prefers-color-scheme, позвляющее через CSS определить использование тёмной или светлой темы оформления;
  • В CSS запрещено использование пользовательских курсоров, размером больше 32 пикселей;

  • В средствах для web-разработчиков обеспечена поддержка произвольного выделения строк и копирования в буфер обмена содержимого из панели «Changes», на которой отражается история всех изменений CSS, произведённых через панель Rules в рамках текущего сеанса работы в инструментах для разработчиков;

  • Заметно расширены возможности встроенного отладчика JavaScript. Добавлена возможность сопоставления разных представлений кода (source map), позволяющая просматривать переменные из оригинальных исходных текстов при отладке итоговых модулей (например, можно в процессе отладки сгенерированного JavaScript работать с изначальным кодом на Babel, Webpack, TypeScript, vue.js). Примерно на 30% увеличена производительность и скорость запуска отладчика, значительно снижены накладные расходы при работе отладчика. Добавлена панель Threads с инструментами для отладки Web Worker-ов.

    Улучшено качество обработки выставляемых в коде (inline) точек останова — добавлена возможность установки точек останова в привязке к отдельным частям сложных выражений в строке (column breakpoint), например, в цепочке вызовов функций;

    Добавлена поддержка точек журналирования (Log points), позволяющих сбрасывать информацию о номере строки в коде и значениях выбранных переменных в web-консоль в момент срабатывания метки, но в отличие от точек останова без приостановки выполнения скрипта;

  • В режиме инспектирования сети (Network monitor) обеспечена пометка ресурсов, связанных с известными сервисами отслеживания перемещений. В списке сетевых запросов добавлена поддержка сортировки по заданным столбцам и управления отображением столбцов. В контекстное меню добавлен элемент для сброса параметров сортировки в значение по умолчанию;
  • Удалены отладчик Canvas, редактор шейдеров и редактор WebAudio, которые ранее были объявлены устаревшими. В разряд устаревших переведены WebIDE и страница «Connect»;
  • В версии для платформы Android поведение, связанное с обработкой параметров видимой области (Viewport), приведено в соответствие с другими браузерами. Добавлена возможность добавления на домашний экран поискового виджета Firefox с функциями голосового ввода. Прекращена поддержка гостевого сеанса (Guest Session), вместо которого рекомендуется использовать режим приватного просмотра.

Кроме новшеств и исправления ошибок в Firefox 67 устранена серия уязвимостей, из которых несколько помечены как критические, т.е. могут привести к выполнению кода злоумышленника при открытии специально оформленных страниц. В настоящее время информация с подробностями об исправленных проблемах безопасности недоступна, ожидается, что перечень уязвимостей будет опубликован в течение нескольких часов. Дополнение: устранено 25 критических уязвимостей (8 под CVE-2019-9814 и 17 под CVE-2019-9800).