Firefox 52

Представительниц прекрасной половины человечества поздравляем с Международным женским днём, программистов — с долгожданным выходом Visual Studio 2017, а пользователей передового веб-браузера Firefox — с его первым весенним выпуском, готовым порадовать нас внушительным набором новшеств.

CSS, HTML

  • Поддержка CSS Grid Layout — нового механизма взаимного расположения блоков, позволяющего создавать виртуальные группы блоков, не объединённых явным образом на уровне HTML-разметки. Параллельно в инструментарий разработки Firefox добавлен новый Grid Inspector, призванный облегчить работу с Grid путём наглядной визуализации виртуальных строк и столбцов.
  • Поддержка Flexbox, Grid и многоколоночного вывода текста внутри кнопок, выполненных как элементы BUTTON.
  • Поддержка псевдокласса :focus-within, соответствующего элементам, на которые установлен фокус либо которые содержат элемент, на который установлен фокус, в том числе в Shadow DOM.
  • Поддержка интерполяции в CSS Transitions значений между явно заданным цветом и цветом, заданным ключевым словом currentColor, соответствующим текущему значению свойства color и определённым в спецификации CSS Color Module Level 3.
  • В CSS-анимациях теперь можно использовать свойства, к которым неприменимо вычисление промежуточных значений (интерполяция) — например, background-image и border-collapse.
  • Поддержка значения space-evenly свойств justify-content и align-content для Flex-контейнеров, позволяющего задать равномерное распределение элементов с одинаковым расстоянием между элементами и с внешних сторон крайних элементов.
  • Поддержка значений left, right, first baseline, last baseline и stretch свойств align-self и justify-self для элементов внутри Flex-контейнеров.
  • Поддержка применения масок к элементам SVG с помощью свойства clip-path.
  • Поддержка субпиксельного сглаживания при использовании CSS-свойств mask и clip-path.
  • Свойства, касающиеся многоколоночного вывода текста (CSS Columns), теперь доступны без префикса.
  • Поддержка новых возможностей из спецификации CSS Color Module Level 4:

    • функции rgb() и hsl() теперь являются псевдонимами rgba() и hsla() соответственно;
    • четвёртый аргумент функций rgba() и hsla() теперь необязателен;
    • прозрачность теперь можно задавать в процентах;
    • в качестве разделителя трёх первых составляющих вместо запятой теперь можно использовать пробел, значение прозрачности при этом отделяется от них символом /.
  • Поддержка атрибута rel="noopener" у элементов A и AREA, инструктирующего браузер при открытии такой ссылки создать новый браузерный контекст (browsing context). При этом предотвращается передача страницам, открываемым в новом окне или вкладке, ссылки на родительское окно с помощью доступного в JavaScript свойства window.opener, которое при использовании rel="noopener" возвращает null. Эффект от этого атрибута идентичен rel="noreferrer", за исключением отключения передачи собственно HTTP-заголовка запроса Referer. При этом непустые значения атрибута target, отличные от _top, _self и _parent, трактуются как _blank при принятии браузером решения, открывать ли новое окно или вкладку. Параллельно реализована поддержка соответствующего параметра noopener JavaScript-метода window.open().

JavaScript, DOM

  • Включена по умолчанию поддержка WebAssembly — стандарта промежуточного двоичного кода, разработанного совместными усилиями Mozilla, Google, Microsoft и Apple и по сравнению с JavaScript способного обеспечить значительно более высокое быстродействие, сравнимое с быстродействием исполняемого файла. Функции WebAssembly можно вызывать из JS, и наоборот. Источником кода WebAssembly могут служить не только сценарии JavaScript, но и программы на таких языках низкого уровня, как C/C++ и Rust, например, с помощью компилятора Emscripten. В корпоративной ESR-версии Firefox 52 поддержка WebAssembly пока отключена, т. к. текущая реализация в Firefox соответствует спецификации не полностью.
  • Поддержка программного интерфейса (API) Battery Status теперь доступна только для собственного кода браузера и расширений и недоступна для обычных веб-страниц, т. к. данная функциональность могла использоваться для идентификации пользователя, а также в корыстных целях (например, для завышения цены в интернет-магазине при низком уровне заряда устройства).
  • Поддержка завершающей запятой в списке параметров и аргументов функции в соответствии со стандартом ES2017. Возможность может быть потенциально полезна в контексте использования систем управления версиями (VCS, SCM) типа Git и Mercurial, помогая при добавлении нового параметра в определение функции или аргумента в её вызов исключить наличие по сути фиктивных изменений, состоящих лишь в добавлении запятой после параметра или аргумента, который до этого был в списке последним.
  • Поддержка оператора ... (rest parameter destructuring), позволяющего внутри функции получить список её аргументов в виде массива без необходимости вручную преобразовывать в массив необходимую часть элементов, доступных через итерируемый объект arguments.
  • Поддержка нового оператора **, служащего для возведения числа в степень. Ранее для этого использовалась функция Math.pow().
  • Escape-коды Юникода вида \u{61} теперь можно использовать не только в строках, но и в названиях переменных и функций.
  • Поддержка Selection API, в том числе событий selectstart и selectionchange с говорящими названиями.
  • Возобновлена поддержка событий прикосновений (Touch events) в версии Firefox для настольных компьютеров. Изначально поддержка была реализована в Firefox 18, но затем была отключена начиная с Firefox 24 ввиду проблем совместимости с некоторыми популярными сайтами (Google, Twitter), проявлявшихся в невозможности прокрутки с помощью тач-экрана и происходившем вместо этого выделении текста.
  • Поддержка событий focusin и focusout, возникающих соответственно перед получением и потерей элементом фокуса и дожидавшихся реализации в Firefox более шести лет.
  • Поддержка свойства isSecureContext вспомогательного интерфейса WindowOrWorkerGlobalScope, соответствующего интерфейсам Window и WorkerGlobalScope. Свойство служит для определения, доступны ли в текущем браузерном контексте возможности, определённые в спецификации Secure Contexts.
  • Свойство DataTransfer.types из Drag and drop API теперь возвращает обычный массив (Array) строк (DOMString) вместо устаревшего объекта DOMStringList.
  • Поддержка событий loadstart и loadend для изображений (элементов IMG). Событие loadstart соответствует началу загрузки изображения. Событие loadend отличается от load тем, что возникает не только по факту успешной загрузки изображения, но и при ошибке (событие error) или отмене загрузки (событие abort).
  • Объект MediaError, возвращаемый свойством HTMLMediaElement.error при возникновении ошибки при обработке элемента AUDIO или VIDEO, теперь снабжён свойством message, содержащим описание конкретной возникшей ошибки.
  • Документам SVG теперь соответствует интерфейс XMLDocument вместо SVGDocument в соответствии с изменением спецификации SVG 2.

Прочее

  • Запрещены плагины (сторонние программные модули) класса NPAPI, за исключением Flash. В версиях ESR для корпоративных пользователей, которым могут быть нужны такие плагины, как Java, поддержку планируется сохранить до мая 2018 года.
  • В значении заголовка ответа сервера Referrer-Policy, первичная поддержка которого доступна начиная с Firefox 50, теперь поддерживаются директивы same-origin, strict-origin и strict-origin-when-cross-origin.
  • В соответствии с текущей версией спецификации Strict Secure Cookies страницам, открытым по обычному, незащищённому протоколу HTTP, при установке cookie-записей теперь недоступна директива secure, предписывающая браузеру отправлять cookie на сервер только при использовании защищённого протокола HTTPS.
  • В Firefox для Windows для отрисовки веб-страниц при невозможности использования программного интерфейса Direct2D теперь используется открытая кроссплатформенная графическая библиотека Skia, развиваемая компанией Google и используемая в том числе в операционной системе Android, браузере Chrome и Firefox для Linux.
  • На Firefox 52 основана новая корпоративная версия Firefox с длительным сроком поддержки (ESR). Причём в этот раз пользователи, использующие обычную версию Firefox в устаревших операционных системах Windows XP и Vista, будут автоматически переведены на ветвь ESR, благодаря чему смогут получать обновления безопасности ещё более года несмотря на то, что начиная с Firefox 53 поддержку Windows XP и Vista планируется прекратить.

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