Состоялся релиз web-браузера Firefox 88. Кроме того, сформировано обновление ветки с длительным сроком поддержки 78.10.0. На стадию бета-тестирования в ближайшее время будет переведена ветка Firefox 89, релиз которой намечен на 1 июня.

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

  • В просмотрщике PDF добавлена поддержка интегрированных в PDF-файлы форм ввода, в которых для обеспечения интерактивного взаимодействия с пользователем используется JavaScript.
  • Введено ограничение на интенсивность показа запроса полномочий для доступа к микрофону и камере. Подобные запросы не будут показываться, если в течение последних 50 секунд пользователь уже предоставлял доступ к тому же устройству, для того же сайта и той же вкладки.
  • Вызов инструмента для создания скриншотов удалён из меню «Page Actions», показываемого при нажатии на многоточие в адресной строке. Для создания скриншотов рекомендуется вызывать соответствующий инструмент для контекстного меню, показываемого при клике правой кнопкой мыши или разместить ярлык в панели через интерфейс настройки внешнего вида.

  • Добавлена поддержка масштабирования щипком на тачпадах в Linux с графическими окружениями на базе протокола Wayland.
  • В системе вывода на печать выполнена локализация единиц измерения, используемых для задания полей.
  • При запуске Firefox в окружениях Xfce и KDE активировано использование движка композитинга WebRender. В Firеfox 89 ожидается включение WebRender для всех остальных пользователей Linux, включая все версии Mesa и системы с драйверами NVIDIA (ранее webRender был включён только для GNOME при наличии драйверов Intel и AMD). WebRender написан на языке Rust и позволяет добиться существенного увеличения скорости отрисовки и снижения нагрузки на CPU за счёт выноса на сторону GPU операций отрисовки содержимого страницы, которые реализованы через выполняемые в GPU шейдеры. Для принудительного включения в about:config следует активировать настройку «gfx.webrender.enabled» или запустить Firefox с выставленной переменной окружения MOZ_WEBRENDER=1.
  • Началось поэтапное включение протоколов HTTP/3 и QUIC. Вначале поддержка HTTP/3 будет активирована лишь для небольшого процента пользователей и, если не возникнет непредвиденных проблем, будет доведена до всех к концу мая. Для использования HTTP/3 требуется поддержка на стороне клиента и сервера одной и той же версии чернового стандарта QUIC и HTTP/3, которая указывается в заголовке Alt-Svc (Firefox поддерживает черновики спецификации с 27 по 32).
  • Отключена по умолчанию поддержка протокола FTP. Настройка network.ftp.enabled по умолчанию установлена в значение false, а параметр для расширений browserSettings.ftpProtocolEnabled переведён в режим только для чтения. В следующем выпуске будет удалён весь код, связанный с FTP. В качестве причины называется снижение рисков атак на старый, имеющий историю выявления уязвимостей и имеющий проблемы с сопровождением код с реализацией поддержки FTP. Также упоминается избавление от протоколов, не поддерживающих шифрование, которые незащищены от модификации и перехвата транзитного трафика при совершении MITM-атак.

  • Для блокирования возможных межсайтовых утечек обеспечена изоляция значения свойства «window.name» первичным сайтом, с которого открыта страница.
  • В JavaScript для результата выполнения регулярных выражений добавлено свойство «indices», которое содержит массив c начальными и конечными позициями групп совпадений. Свойство заполняется только при выполнении регулярного выражения с флагом «/d».

    let re = /quick\s(brown).+?(jumps)/igd;
    let result = re.exec(‘The Quick Brown Fox Jumps Over The Lazy Dog’);

    // result.indices[0] === Array [ 4, 25 ]
    // result.indices[1] === Array [ 10, 15 ]
    // result.indices[2] === Array [ 20, 25 ]

  • В Intl.DisplayNames() и Intl.ListFormat() ужесточена проверка того, что опции, передаваемые в конструктор, являются объектами. При попытке передачи строк или других примитивов будет генерироваться исключения.
  • Для DOM предоставлен новый статический метод AbortSignal.abort(), возвращающий AbortSignal, для которой уже выставлен параметр aborted.
  • В CSS реализованы новые псевдо-классы «:user-valid» и «:user-invalid», определяющие состояние проверки элемента формы, для которого после взаимодействия пользователя с формой была выполнена проверка корректности указанных значений. Ключевым отличием
    «:user-valid» и «:user-invalid» от псевдо-классов «:valid» и «:invalid» является то, что проверка начинается только после того, как пользователь перешёл на другой элемент (например, переключился табуляцией на другое поле).

  • CSS-функция image-set(), позволяющая выбрать изображение из набора вариантов с разным разрешением, наиболее подходящее для текущих параметров экрана и пропускной способности сетевого подключения, теперь может использоваться в CSS-свойствах
    «content» и «cursor».

    h2::before {
    content: image-set(
    url(«small-icon.jpg») 1x,
    url(«large-icon.jpg») 2x);
    }

  • В CSS-свойстве outline обеспечено соответствие контуру, установленному при помощи свойства border-radius.
  • Для macOS моноширинный шрифт по умолчанию изменён на Menlo.
  • В инструментах для web-разработчиков в панели инспектирования сети появилась новая кнопка для переключения между показом HTTP-ответов в формате JSON и в неизменном виде, в котором ответы переданы по сети.

  • Включение по умолчанию поддержки формата изображений AVIF (AV1 Image Format), в котором задействованы технологии внутрикадрового сжатия из формата кодирования видео AV1, отложено до следующего выпуска. В версии Firefox 89 также планируется предложить обновлённый интерфейс пользователя и интегрировать в адресную строку калькулятор (включается через suggest.calculator в about:config)

Кроме новшеств и исправления ошибок в Firefox 88 устранено 17 уязвимостей, из которых 9 помечены как опасные. 5 уязвимостей (собраны под CVE-2021-29947) вызваны проблемами работы с памятью, такими как переполнения буферов и обращение к уже освобождённым областям памяти. Потенциально данные проблемы способны привести к выполнению кода злоумышленника при открытии специально оформленных страниц.