Firefox 54

Встречаем летний выпуск веб-браузера Firefox.

CSS

  • Поддержка геометрических фигур (окружность, эллипс, многоугольник) в качестве масок, реализуемых свойством clip-path.
  • Реализация свойств align-items / align-self и justify-items / justify-self в отношении определения статического положения абсолютно позиционированных дочерних элементов Flex- и Grid-контейнеров приведена в соответствие с текущими спецификациями CSS Flexbox и CSS Alignment.
  • Исправлено неправильное положение нижней (базовой) линии шрифта элементов INPUT с display: block внутри элементов с display: inline-block.
  • Восстановлено ранее временно отключённое применение color и background-color к элементам OPTION в много­процессном режиме Firefox (e10s). В Linux пока по-прежнему отключено ввиду проблем с некоторыми GTK-темами.
  • Исправлена ошибка, из-за которой полностью прозрачные цвета (с нулевым значением альфа-составляющей) в некоторых случаях трактовались идентично ключевому слову transparent. В результате значения CSS-свойств, получаемые с помощью свойства style элемента и метода window.getComputedStyle(), не соответствовали исходному CSS-коду. Теперь реализация приведена в соответствие со спецификацией и поведением других браузеров.
  • Удалена поддержка снабжённых префиксом -moz- версий значений isolate, isolate-override и plaintext свойства unicode-bidi.

JavaScript, DOM

  • При прерывании CSS-анимаций теперь возникает событие animationcancel.
  • Метод Date.UTC() при вызове менее чем с двумя аргументами теперь возвращает значение NaN в соответствии со специ­фикацией ECMAScript 2017. Метод Date.UTC() создаёт объект Date на основе компонентов всеобщего скоординированного времени UTC.
  • Поддержка метода toJSON() объекта URL. Метод возвращает полный URL-адрес как строку (аналогично свойству href) и используется методом JSON.stringify() для генерации строкового представления объекта.
  • Время возникновения события, доступное с помощью свойства timeStamp объекта Event, теперь представлено значением повышенной точности DOMHighResTimeStamp вместо обычного DOMTimeStamp.

WebExtensions API

  • Поддержка переопределения страницы новой вкладки.
  • Расширения теперь могут задавать собственные обработчики протоколов: например, irc://.
  • В расширениях теперь доступен нестандартный метод drawWindow() объекта CanvasRenderingContext2D, позволяющий осуществлять видеозахват отображаемой веб-страницы.

Многопроцессность

Архитектура Firefox теперь полностью многопроцессная: поддерживается использование произвольного количества контент-процессов, отвечающих за обработку отображаемых в браузере документов.

Это помогает эффективно использовать ресурсы многоядерных процессоров и повышает стабильность, устраняя риск аварийного завершения работы (падения) всего браузера при падении отдельного контент-процесса. В перспективе благодаря обработке веб-документов в режиме «песочницы» (sandboxing) также повысится безопасность.

Во избежание излишнего расхода памяти новый контент-процесс не создаётся для каждой новой вкладки, в отличие, например, от Chrome. Вместо этого максимальное количество контент-процессов ограничено и по умолчанию равно 4. Изменить это значение можно с помощью параметра dom.ipc.processCount на странице скрытых настроек, доступной по псевдо-URL-адресу about:config.

Прочее

  • Неполные URL-адреса, содержащие только протокол, теперь считаются некорректными, например, в конструкторе JS-объекта URL и в значении HTML-элемента INPUT типа url.
  • Поддержка видеокодека VP9 в зашифрованных потоках с использованием незашифрованного ключа Clear Key и модуля Widevine. VP9 позицинируется как открытый аналог проприетарного H.265.
  • Расширения MSE при использовании в сочетании с видео в формате WebM/VP8 теперь доступны вне зависимости от быстро­действия компьютера.

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