Firefox 60

В День Победы — юбилейный Firefox 60.

JavaScript

  • Включена по умолчанию поддержка стандартизированного в ECMAScript 2015 (ECMAScript 6, ES6) механизма разбиения кода на независимые модули. На уровне HTML функциональность реализуется с помощью атрибутов type="module" и nomodule элемента SCRIPT, а в JavaScript — новыми директивами import и export. Возможность может быть полезна как минимум в дополнениях (расширениях) для браузеров, где, в отличие от сайтов, нет накладных расходов в виде HTTP-запроса при загрузке каждого отдельного файла и при этом не требуется ждать поддержки во всех распространённых браузерах.
  • Возвращена поддержка метода Array.prototype.values(). Метод возвращает итератор, позволяющий перебирать значения элементов массива с использованием цикла for…of или с помощью метода next() итератора. Ранее поддержка уже была реализована в Firefox 48, но в Firefox 49.0.2 (по другим данным — 52) её отключили из-за несовместимости с некоторыми устаревшими веб-приложениями, в том числе Microsoft Dynamics CRM 2011 и Outlook. Но теперь метод поддерживают другие браузеры — Safari, Edge и Chrome 66, поэтому возможность восстановили и в Firefox.
  • Включена по умолчанию в версии Firefox для операционной системы macOS поддержка WebVR API — программного интерфейса для работы с устройствами виртуальной реальности типа Oculus Rift и HTC Vive. В версии для Windows поддержку включили в Firefox 55.
  • Поддержка программного интерфейса (API) Web Authentication, позволяющего использовать аутентификацию на сайтах с помощью USB-ключей типа YubiKey.
  • Нажатие клавиши Enter в режиме визуального редактирования (WYSIWYG), включаемого DOM-свойством designMode документа или атрибутом contenteditable элемента, теперь по умолчанию заключает фрагмент текста в элемент DIV вместо вставки BR. Это соответствует поведению других браузеров — Chrome, Opera, Edge и Safari.
  • При значении nosniff заголовка ответа сервера X-Content-Type-Options Firefox теперь следует спецификации MIME Sniffing в отношении JavaScript-файлов. В частности, теперь считаются некорректными MIME-типы text/json и application/json.

CSS

  • Приведён в соответствие с текущей спецификацией «CSS Box Alignment Module Level 3» перечень значений, поддерживаемых свойствами align-content, align-items, align-self, justify-content и place-content. В частности, значения left и right теперь допустимы только в свойстве justify-content, а значения типа baseline — в align-content.
  • Поддержка свойства paint-order. Свойство позволяет управлять взаимным расположением заливки (fill), обводки (stroke) и маркеров (например, стрелок) (markers) текста как слоёв по перпендикулярной экрану оси. Это позволяет сделать обводку средствами CSS полезной: в отличие от Photoshop, в CSS нет возможности выбрать расположение обводки (снаружи, внутри, посередине), она всегда отрисовывается посередине штриха символа, а благодаря свойству paint-order со значением stroke fill можно расположить заливку текста выше обводки, тем самым получив имитацию внешней обводки вдвое меньшей толщины относительно заданной. Обводка реализуется нестандартным свойством -webkit-text-stroke, которое Firefox поддерживает начиная с версии 49.
  • Удалена поддержка нестандартного синтаксиса значений свойства -moz-transform, в рамках которого было допустимо указание единиц (px, %) в функциях matrix() и matrix3d(). Свойство с префиксом теперь является псевдонимом стандартного свойства transform.

Прочее

  • Теперь новый CSS-движок Stylo (Quantum CSS) используется и для интерфейса браузера, в том числе в версии Firefox для Android, потенциально положительно сказываясь на его отзывчивости. Ранее планировалось включить возможность в Firefox 59, но это было решено отложить в связи со снизившимся в некоторых ситуациях быстродействием по сравнению с исходным CSS-движком Gecko: разбор HTML-атрибута style на ARM-устройствах в 5-10 раз медленнее; и примерно вдвое снизилась скорость поиска элементов по сложным селекторам с помощью JS-метода querySelectorAll(), что увеличило воспринимаемое время загрузки страниц GitHub. Проблемы пока не решены, но применительно к интерфейсу Firefox признаны некритичными. Для веб-страниц Stylo используется начиная с Firefox 57. Stylo написан на языке программирования Rust, поддерживает многопоточность и обеспечивает прирост быстродействия вплоть до двукратного.
  • Экспериментальная поддержка механизма «Trusted Recursive Resolver» (TRR) на основе спецификации «DNS Queries over HTTPS» (DNS-over-HTTPS, DoH), призванного повысить безопасность при определении соответствия доменного имени и IP-адреса. Для управления функциональностью предназначены настройки с префиксом network.trr, доступные через страницу скрытых настроек about:config.
  • На Firefox 60 основана очередная корпоративная версия с увеличенным примерно до года сроком поддержки (ESR). Важное отличие от предыдущей ESR-версии на основе Firefox 52 — отказ от поддержки устаревших операционных систем Windows XP и Vista.
  • В Firefox для Android — возможность просмотра исходного кода страницы с помощью пункта меню «Страница» → «Исходный код страницы». Ранее функция была неявно доступна через ручное добавление псевдопротокола view-source: перед адресом страницы.

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

P. S. Если некоторые ссылки у вас в этот раз не открываются, благодарите Роскомнадзор.