Прокрутить к контенту ↓


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.
  • Повышено быстродействие на системах, где нет возможности задействовать аппаратное ускорение средствами видеоядра.

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