Firefox 58

Firefox 58 — первый выпуск свободного веб-браузера в 2018 году.

HTML, CSS

  • Прекращена поддержка использования HTML-элементов A внутри элементов MAP для создания областей-ссылок. Вместо этого следует использовать предназначенные для этого элементы AREA.
  • Включена по умолчанию поддержка CSS-свойства font-display, позволяющего управлять схемой отрисовки текста внедрёнными нестандартными шрифтами.
  • Ряд нестандартных псевдоклассов и ключевых слов для Media Queries с префиксом -moz- теперь недоступны на веб-страницах, а доступны только в расширениях.

JavaScript, DOM

  • Поддержка программного интерфейса (API) PerformanceNavigationTiming для измерения скорости загрузки страниц. При необходимости можно отключить путём установки параметра dom.enable_performance_navigation_timing в значение false на странице скрытых настроек, доступной по служебному URL-адресу about:config.
  • Поддержка метода finally() объектов Promise, позволяющего назначить один и тот же обработчик для ситуаций успешного разрешения Promise-объекта (then()) и его отклонения (catch()).
  • Поддержка объекта Intl.PluralRules, призванного облегчить генерацию строкового представления количества и порядковых номеров в зависимости от языка.
  • Поддержка метода formatToParts() объектов Intl.NumberFormat, возвращающая список лексем числа, позволяя обрабатывать или оформлять их по отдельности.
  • Включён (в предварительных сборках Firefox Nightly и Developer Edition) по умолчанию API виртуальной реальности WebVR для операционной системы macOS.

WebExtensions API

  • Исправлена ошибка, из-за которой чтение адреса начальной («стартовой») страницы браузера средствами расширений не работало, если начальная страница не была переопределена пользователем.
  • browsingData.localStorage теперь поддерживает удаление данных localStorage для конкретного домена. Из авторского расширения UsableHomeButton удалены временные решения для обхода ошибок Firefox 57, ставшие ненужными благодаря этому и предыдущему исправлениям Firefox 58.
  • Поддержка метода browser.tabs.discard() для выгрузки заданной фоновой вкладки из памяти.
  • Режим чтения:
    • Поддержка свойств isArticle, isInReaderMode объекта Tab, а также метода toggleReaderMode() для включения и выключения режима чтения. Свойство isArticle позволяет определить, можно ли страницу отобразить в режиме чтения, свойство isInReaderMode — отображается ли страница уже в режиме чтения.
    • Поддержка параметра openInReaderMode метода browser.tabs.create() для открытия новой вкладки в режиме чтения.
    • Обработчики browser.tabs.onUpdated теперь вызываются при включении или выключении режима чтения.
  • В рамках webRequest.onBeforeRequest API в объектах, содержащих данные о запрошенном ресурсе, теперь поддерживается параметр frameAncestors. webRequest.onBeforeRequest API служит для перенаправления или предотвращения загрузки определённых ресурсов. Параметр frameAncestors содержит список объектов с информацией (URL-адрес и идентификатор фрейма) обо всех документах в иерархии фреймов. Если запрошенный документ является документом верхнего уровня, список пуст.
  • Поддержка pkcs11 API для работы с криптографическими устройствами с открытым ключом.

Быстродействие

  • Новая схема на основе ограниченного, автоматически растущего бюджета времени для ограничения частоты срабатывания таймеров в фоновых вкладках.
  • Реализовано кэширование байт-кода JavaScript, благодаря чему загрузка популярных сайтов ускорилась на 5-12%.
  • WebAssembly-скрипты теперь компилируются в 10-15 раз быстрее благодаря новому двухуровневому компилятору.
  • Отрисовка графики вынесена из основного потока исполнения (Off-Main-Thread Painting), что дало выигрыш в быстродействии браузерных игр до 30%.

Прочее

  • Поддержка директивы worker-src в заголовках ответа сервера Content-Security-Policy. Директива позволяет задать правила для URL-адресов скриптов, исполнение которых разрешено в качестве Worker-скриптов.

См. также официальные примечания к выпуску и информацию для разработчиков.