Firefox 51

Вторую половину первой сотни версий свободного веб-браузера Firefox открывает его первый выпуск в 2017 году с россыпью интересных ново­введений.

JavaScript

  • Поддержка WebGL 2 включена по умолчанию. WebGL 2 поднимает возможности по выводу трёхмерной графики в браузере на новый уровень, предоставляя улучшенные возможности работы с текстурами, новый язык написания шейдеров и проч. Функцио­нальность WebGL 2 соответствует стандарту OpenGL ES 3.0, пред­став­ляющему собой подмножество OpenGL, ориентированное на встраиваемые и мобильные устройства.
  • Полная поддержка IndexedDB версии 2, пред­став­ляющей собой транзак­ционную объектно-ориенти­рованную СУБД, пред­на­зна­ченную для хранения на клиентской стороне больших объёмов структури­рованных данных в виде доступных по ключу объектов, поддер­живаемых алгоритмом структурного клонирования, который по сравнению с JSON поддерживает сериализацию объектов с циклическими ссылками. В IndexedDB 2 добавлены методы IDBObjectStore.getKey(), IDBCursor.continuePrimaryKey(), поддержка двоичных ключей и проч.
  • Номинально полная экспери­ментальная поддержка WebVR API, реализующего функции виртуальной реальности в браузере. Пока по умолчанию отключена, включается параметром dom.vr.enabled на странице скрытых настроек, доступной по псевдо-URL-адресу about:config.
  • Свойства selectionStart и selectionEnd элементов INPUT и TEXTAREA при отсутствии выделения теперь возвращают текущую позицию курсора вместо нуля.
  • Доступно без префикса свойство CanvasRenderingContext2D.imageSmoothingEnabled, позволяющее отключать размытие масштаби­рованных изображений при их отрисовке средствами элемента CANVAS.
  • Поддержка назначения обработчиков событий animationstart, animationiteration, animationend и transitionend с помощью соответ­ствующих on-свойств.
  • Прекращена поддержка префикси­рованного варианта Page Visibility API, позволяющего веб-приложениям учитывать, является ли текущая вкладка активной, благодаря чему можно, например, экономить вычисли­тельные ресурсы компьютера пользователя путём приостановки анимаций или воспроизведения видео в фоновых вкладках.
  • Из движка Gecko удалена поддержка нестандартных программных интерфейсов (API) Simple Push и Alarms, в основном пред­на­зна­чавшихся для использования в операционной системе Firefox OS, активная разработка которой прекращена. Вместо них предлагается использовать стандартный Push API.
  • Ограничение (throttling, clamping) частоты срабатывания JS-таймеров в фоновых вкладках теперь не применяется к страницам, содержащим объекты AudioContext, вне зависимости от того, воспро­изводят ли они звук. Аналогичная мера, ранее предпринятая в Firefox 50 применительно к страницам, воспро­изводящим звук непосредственно в момент пере­ключения вкладок, в некоторых случаях оказалась недостаточной.

CSS, HTML

  • Поддержка элемента HR для вывода разделителя в меню, реализуемых элементом MENU.
  • Поддержка псевдо­класса :indeterminate для radio-кнопок. Псевдо­класс соответствует кнопкам в составе групп, в которых ни одна из кнопок не выбрана как текущая (checked).
  • Поддержка псевдо­класса :placeholder-shown для одно­строчных текстовых полей. Псевдо­класс соответствует состоянию поля формы, текущее значение которого пусто, вследствие чего отображается строка из HTML-атрибута placeholder.
  • Псевдо­элемент ::placeholder, позволяющий настраивать оформление строки, отображаемой в поле формы при пустом значении поля, теперь доступен без префикса.
  • Псевдо­класс :valid теперь корректно работает применительно к правильно заполненным формам.
  • Поддержка значений fill-box и stroke-box свойства clip-path, позволяющего скрывать части элемента путём применения к нему маски на основе SVG-изображения или фигуры, описанной одной из CSS-функций inset(), circle(), ellipse(), polygon(). Ранее значения fill-box и stroke-box работали как border-box.
  • Приведено в соответствие с изменением в специ­фикации вычисление высоты элементов в одно­строчных Flexbox-контейнерах при наличии заданного значения свойства max-height.

SVG

WebExtensions API

  • Средствами WebExtensions API теперь можно копировать строки в буфер обмена, а благодаря поддержке разрешения (permission) clipboardWrite копирование не обязательно должно быть следствием действия (например, щелчка) пользователя. К сожалению, в отличие от Chrome, в фоновых скриптах эта возможность пока недоступна, а чтение из буфера в Firefox пока не поддерживается вовсе.
  • Теперь возможна интеграция WebExtensions-расширений в bootstrapped-расширения и расширения на основе Add-on SDK. Пред­полагается, что это облегчит перевод таких расширений на новый API и/или внедрение поддержки много­процессности благодаря возможности осуществлять их постепенную переработку.

Прочее

  • Поддержка воспро­изведения аудио­записей в формате FLAC, работающем по принципу архиватора с возможностью прямого воспро­изведения и широко используемом для хранения аудио­записей без потерь качества наряду с Monkey’s Audio (APE), обеспечи­вающим несколько более высокую степень сжатия. FLAC поддер­живается как для аудио­файлов в контейнерах FLAC и Ogg, так и для видео­файлов в контейнерах Ogg и MP4 (в том числе в режиме MSE). Практически одно­временно поддержка FLAC также реализована в параллельно вышедшем браузере Chrome 56.
  • Включена по умолчанию поддержка современного видео­кодека VP9 (свободного аналога H.265) в рамках WebRTC. Изначально поддержка была реализована в Firefox 46, но отключена по умолчанию. Ввиду слишком высокой ресурсо­ёмкости VP9 приоритет по-прежнему имеет кодек предыдущего поколения VP8.
  • Повышено быстро­действие на системах, где нет возможности задействовать аппаратное ускорение средствами видео­ядра.

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