Доступен выпуск Firefox 55.
Основные изменения:
- Необратимо изменился формат профиля. Профиль, единожды запущенный в Firefox 55, уже не получится использовать с более ранними версиями.
- Существенно ускорено восстановление сессий с большим числом вкладок. С 1691 открытой вкладкой открытие браузера теперь занимает 15 секунд вместо 5-8 минут, а потребляемая память снизилась в два раза (сами страницы при этом не загружались).
- Боковая панель (закладки, история) теперь может быть перемещена к правому краю экрана (раньше она принудительно размещалась слева).
- Поисковые подсказки включены по умолчанию для всех пользователей, которые явно их не отключили в настройках.
- Внизу выпадающего списка, появляющегося при вводе текста в адресную строку, размещены значки установленных поисковых систем, что позволяет производить поиск прямо из адресной строки (убрать их можно, установив настройке
browser.urlbar.oneOffSearches
значение «false»). - При наборе адреса сайта без указания протокола Firefox cначала постарается зайти на страницу по протоколу HTTPS, а потом уже по HTTP.
- Встроенная в браузер защита от отслеживания пользователя теперь в 10 раз замедляет работу скриптов, следящих за пользователем (таких, как Google Analytics), когда пользователь переключается на другую вкладку.
- В «Настройки → Основные» добавлен раздел «Производительность», позволяющий настроить использование аппаратного ускорения и числа процессов, используемых для обработки контента. Дополнительные процессы улучшают скорость работы с большим числом вкладок, но увеличивают потребление памяти. Кроме того, по умолчанию включено использование отдельного процесса для обработки локальных (file://) файлов, что защитит от чтения локальных файлов при компрометации браузера. Пользователи Windows 10 Anniversary Edition могут там же включить аппаратное ускорение VP9.
- Для части пользователей включено по умолчанию добавленное в прошлом выпуске системное дополнение, позволяющее сделать скриншот выделенной или видимой области страницы, а также всей страницы целиком. Скриншоты автоматически загружаются на screenshots.firefox.com, где пользователь может установить срок хранения изображения, получить на него прямую ссылку, удалить, поделиться в соцсетях. Для включения дополнения (тем, у кого оно ещё не включилось) необходимо установить настройке
extensions.screenshots.system-disabled
значение «false». Для отключения добавлена настройкаextensions.screenshots.disabled
. Исходный код серверной части доступен на условиях лицензии MPL 2.0. - Flash-содержимое теперь отображается лишь после явного нажатия на него пользователем (с возможностью запомнить выбор для конкретного сайта). Это изменение будет поэтапно (через соответствующее системное дополнение) доведено до всех пользователей, которые пока могут от него отказаться, переключив настройку
plugins.flashBlock.enabled
. Кроме того, flash-содержимое будет работать лишь на страницах, загруженных по протоколам HTTP и HTTPS. Для ряда сайтов запуск любых плагинов запрещён полностью с целью обеспечения должного уровня приватности и безопасности. Поддержка flash будет полностью удалена в 2020 году, когда Adobe прекратит разработку плагина. - Реализована поддержка устройств виртуальной реальности. Примеры и демо на mozvr.com.
- На платформе Linux доступен запуск в headless-режиме (флаг «--headless»).
- Сайты, работающие по незащищённому протоколу, больше не могут получить доступ к Geolocation API, чтобы определить местоположение пользователя.
- Добавлена настройка
privacy.resistFingerprinting
, включающая подмену различных свойств (как DOM, так и CSS), облегчающих составление уникального портрета пользователя (screenX, screenY, screen.width, screen.height и т. п.) - Упрощён вывод на печать из режима чтения.
- Возвращена белорусская локализация (нашёлся мейнтейнер).
- В интерфейсе управления дополнениями теперь наглядно видны устаревшие дополнения, которые перестанут работать в Firefox 57. Подробное объяснение необходимости этого шага от разработчика дополнений. Дополнения, использующие новый API WebExtensions, при изменении списка запрашиваемых разрешений теперь выдают запрос. В главное меню добавлено уведомление о том, что в браузер были установлены дополнения сторонними программами.
- Пользователи macOS теперь могут назначить собственные горячие клавиши на различные пункты меню Firefox через «Настройки системы → Клавиатура → Горячие клавиши».
Инструменты разработчика:
- Множество изменений в разделе «Сеть»:
- Добавлена возможность фильтрации сетевых запросов по значению столбца и другим свойствам (1041895, 1354508, 1354507), а также с помощью регулярных выражений (1354495).
- Реализована возможность показывать и скрывать отдельные столбцы (862855).
- Добавлены новые столбцы с удалённым адресом (1344523), протоколом (1345489), схемой (1356867), куками (1356869).
- Поддержка HTTP-заголовка X-SourceMap удалена в пользу SourceMap (1346936).
HTML:
- Элементы, у которых contenteditable имеет значение «true», теперь используют <div> для отделения строк текста друг от друга, как в прочих современных браузерах (1297414).
- Атрибут xml:base больше не может использоваться для указания базового URL путей вместе с атрибутом style, например —
<div xml:base="https://example.com/" style="background:url(picture.jpg)"></div>
(1350521). - Поддержка атрибута scoped у элемента <style> скрыта за настройкой (
layout.css.scoped-style.enabled
), поскольку прочие браузеры его не поддерживают. - Удалена поддержка
meta[http-equiv="MSThemeCompatible"]
. Прочие браузеры его не поддерживают, также оно вызывало проблемы совместимости (966240).
CSS:
- Включена поддержка свойства transform-box (1208550).
- Реализована временная функция frames() (1248340).
- Реализовано свойство text-justify (1343512, 276079).
- Включена поддержка логических значений «inline-start» и «inline-end» у float/clear (1253919).
- Удалена настройка
layout.css.variables.enabled
. Поддержка переменных CSS больше не может быть отключена (1312328). - Реализовано проприетарное свойство -moz-context-properties (1058040).
- В linear-gradient() исправлена некорректная интерпретация нулевого значения (0) угла, когда не указана единица измерения (1363292).
- Реализована поддержка псевдоэлемента ::cue (1318542).
- Удалены проприетарный псевдокласс :-moz-bound-element (1350147) и проприетарное значение «-moz-anchor-decoration» у text-decoration-line (1355734).
SVG:
- Реализована поддержка атрибута fr элементом <radialGradient> (1240275).
- Из спецификации и движка удалены интерфейсы SVGZoomEvent и SVGZoomEvents вместе с атрибутом <svg> «onzoom» (1314388).
JavaScript:
- Включена поддержка объектов SharedArrayBuffer и Atomics (подробности).
- Оператор Rest (...) отныне поддерживается в деструктурировании объектов, а оператор Spread (...) работает в литералах объектов (1339395).
- Добавлена поддержка асинхронных методов-генераторов (1353693).
- Методы String.prototype.toLocaleLowerCase() и String.prototype.toLocaleUpperCase() теперь поддерживают необязательный параметр «locale» (1318403).
- Объект Intl.Collator теперь поддерживает опцию «caseFirst» (866473).
- Intl API теперь использует язык браузера, а не операционной системы, когда язык по умолчанию не определён (1346674).
- Конструкторы TypedArray (Int8Array, Float32Array и т. п.) обновлены в соответствии со спецификацией ES2017. Теперь они используют операцию ToIndex и допускают конструкторы без аргументов, возвращающие типизированные массивы нулевой длины (1317383).
API/DOM:
- Включена поддержка Background Tasks API (requestIdleCallback), позволяющего отложить вызов функции до тех пор, пока браузер не войдёт в состояние простоя (1314959).
- На платформе Windows включена поддержка API WebVR 1.1. Этот API позволяет веб-приложениям работать с устройствами виртуальной реальности (например, со шлемами наподобие Oculus Rift и HTC Vive).
- Реализована поддержка Intersection Observer API (1321865).
- Свойства scrollX и scrollY объекта Window (и их синонимы pageXOffset и pageYOffset) обрели субпиксельную точность. Вместо того, чтобы возвращать целое число, теперь они возвращают значение с плавающей запятой (1151421). При необходимости можно преобразовать в целые числа с помощью Math.round().
- MediaQueryList и связанные с ним возможности обновлены в соответствии с последними изменения в спецификации (1354441).
- Методы DOMTokenList теперь автоматически убирают лишние пробелы и удаляют дублирующиеся токены (869788).
- Свойство HTMLInputElement «maxLength» теперь может быть динамически изменено с помощью JavaScript после того, как создан HTML-эквивалент (1352799).
- Конструктор URL() больше не принимает DOMString в качестве базы (2 параметр) — он принимает лишь USVString (1368950).
- В соответствии со спецификацией обновлены типы событий, поддерживаемых методом Document.createEvent() (1251198).
- Значение свойства MessageEvent.origin теперь имеет тип USVString, а не DOMString (1311324).
- Жест «масштабирование щипком» сопоставлен событию wheel + Ctrl (которое обычно используется для масштабирования) (1052253).
- Удалена поддержка свойства UIEvent.isChar. Оно не поддерживается прочими браузерами и было полностью реализовано лишь на платформе macOS.
- Удалена поддержка проприетарного Device Storage API (1299500).
- Удалён параметр «aShowDialog» у нестандартного метода Window.find() (1348409).
- Удалён метод HTMLFormElement.requestAutoComplete() (см. HTMLFormElement) (1270740).
- Удалён метод Window.showModalDialog() (981796).
- HTMLMediaElement и AudioContext лишились поддержки проприетарного Audio Channels API (1358061).
- Многочисленные обновления Selection API (1318312, 1359371).
- Для совместимости с WebKit/Blink добавлены Selection.empty() и Selection.setPosition() в качестве ссылок на Selection.removeAllRanges() и Selection.collapse() (1359387).
- Реализованы методы Storage API StorageManager.persist() и StorageManager.persisted() (1286717).
- Воркеры могут быть созданы с идентифицирующим их свойством «name» (1364297).
- Сервисные воркеры:
- Сообщения, отправленные в контексты сервисных воркеров, теперь представлены объектами MessageEvent вместо ServiceWorkerMessageEvent (1311324).
- Метод PushManager.subscribe() теперь принимает объекты ArrayBuffer и строки, закодированные Base64, в качестве значений «applicationServerKey» (1337348).
- Web Audio API: нестандартный конструктор (который принимал строковое значение, указывающее на цель, с которой будет использован контекст) для интерфейса AudioContext выбрасывал ошибки, когда передавался параметр «options». Этот нестандартный конструктор удалён (1361475).
- WebRTC:
- getUserMedia() теперь предоставляет по умолчанию звуковой стереопоток, если его предоставляет устройство-источник (971528).
- getUserMedia() «autoGainControl» и «noiseSuppression» избавлены от префикса moz- (1366415).
- Исправлена ошибка, из-за которой getUserMedia() некорректно возвращал «NotSupportedError» вместо «TypeError» при вызове с пустым набором ограничений (1349480).
- getStats() теперь можно вызывать напрямую на отправителях и получателях (1355220).
- Поле «mozRtt» словаря RTCInboundRTPStreamStats переименовано в «roundTripTime»; поведение также приведено в соответствие спецификации (1344970).
- Словарь RTCRTPStreamStats теперь включает поля «firCount», «pliCount» и «nackCount». Они предоставляют низкоуровневую информацию, полезную для определения отзывчивости соединения (1348657).
- Словарь RTCOutboundRTPStreamStats теперь включает поле «framesEncoded», отражающее число успешно закодированных кадров; это позволяет вычислять частоту кадров (1348657).
- Нестандартные опции «mozDontOfferDataChannel« и «mozBundleOnly» удалены из словаря RTCOfferOptions. Они больше не поддерживаются RTCPeerConnection.createOffer() (1196974).
- Encrypted Media Extensions API:
- Firefox допускал использование EME в небезопасных контекстах, что противоречит спецификации. Начиная с Firefox 55 такое использование будет приводить к выдаче предупреждения в консоль (1361000).
- Firefox не требовал, чтобы как минимум один объект MediaKeySystemCapabilities был включён в параметр «suggestedConfigurations», переданный Navigator.requestMediaKeySystemAccess(), как того требует спецификация. Теперь в консоль будет выведено предупреждение, когда указана любая конфигурация звука или видео без указания поддерживаемых кодеков (428378).
- WebGL: расширение WEBGL_compressed_texture_s3tc_srgb теперь доступно контекстам WebGL и WebGL2 (1325113).
Безопасность:
- Storage API теперь доступен лишь в безопасных контекстах (1268804).
- Разрешена загрузка смешанного содержимого с локальной машины (903966).
- Повторно запрещено открытие файлов JAR (1329336). См. статью «Безопасность и протокол jar».
- Появилась возможность запретить запросы HTTP-аутентификации при загрузке ресурсов.
>>> Подробности