Доступен выпуск Firefox 54.
Основные изменения
- Отныне Firefox использует несколько процессов при обработке веб-страниц, что позволяет ускорить работу (нагрузка разносится на разные ядра процессора), повысить стабильность (падение вкладки не закроет остальные вкладки) и уменьшить фрагментацию памяти при длительной работе. Многопроцессный режим для веб-содержимого автоматически отключается при обнаружении несовместимых дополнений (за это отвечает настройка
extensions.e10sMultiBlocksEnabling
). По умолчанию число процессов ограничивается четырьмя (в отличие от подхода Chromium, где выделяется отдельный процесс для каждой вкладки), впрочем, это значение можно изменять с помощью настройкиdom.ipc.processCount
. - Задействована изоляция для ограничения доступа процессов браузера к системным вызовам и файловой системе. На платформе Linux это реализовано с помощью Seccomp-bpf, пользовательского пространства имён и chroot. В Windows применяются библиотеки sandboxbroker и sandboxtarget, разработанные в рамках проекта Chromium.
- Сведения о загрузках в панели загрузок стали отображаться в более понятном и подробном виде.
- В меню закладок добавлена папка с закладками, созданными на мобильных устройствах.
- Включена поддержка объёмного звука (5.1) в Windows, macOS и Linux (1334508, 1321502, 1323659).
- Удалена поддержка конвейерной обработки HTTP. Усилия, ранее тратившиеся на поддержку конвейерной обработки и решение проблем с её производительностью, целесообразнее пустить на работу над HTTP/2. Все настройки, начинающиеся с «network.http.pipelining», отныне игнорируются (1340655).
- Добавлено системное дополнение, позволяющее сделать скриншот выделенной или видимой области страницы, а также всей страницы целиком. Скриншоты автоматически загружаются на screenshots.firefox.com, где пользователь может установить срок хранения изображения, получить на него ссылку, либо удалить. Следует учитывать, что дополнение посылает на свой сервер различную информацию (в т. ч. уникальный идентификатор пользователя) ещё до создания скриншота, уже при выборе области (впрочем, информация перестаёт посылаться, если отключить
datareporting.healthreport.uploadEnabled
). Для включения встроенного скриншотера необходимо установить настройкеextensions.screenshots.system-disabled
значение «false». - Добавлена бирманская (my) локализация.
- Исправлены различные уязвимости.
Инструменты разработки
- В мониторинг сетевой активности добавлена сводка с количеством в действительности переданных данных (1168376).
- Для HTTP-заголовков добавлены ссылки на документацию (1320233).
- В режиме адаптивного дизайна теперь можно создавать собственные устройства (для тестирования сайтов с заданным разрешением и прочими параметрами устройства).
CSS
- clip-path теперь поддерживает базовые контуры (1247229).
- В соответствии со спецификациями CSS Flexbox и CSS Alignment обновлено взаимодействие между свойствами align-items и align-self, а также между justify-items и justify-self (1340309).
- Элементы <input> типа checkbox и radio с установленным на них
-moz-appearance: none;
теперь являются незаменяемыми (605985). - Исправлена ошибка, из-за которой элемент с
display: inline-block
, имеющий дочерний элемент типа HTMLInputElement сdisplay:block
, имел некорректную базовую линию (1330962). - Поддержка стилизованных элементов <option> ранее была удалена из-за проблем с мультипроцессным режимом. Теперь снова можно применять цвета переднего и заднего плана к элементу <option>, используя атрибуты color и background-color (910022).
- Анимации теперь отсылают событие animationcancel, если анимация завершается преждевременно (1302648).
- Прозрачные цвета (с нулевым альфа-каналом) всегда сериализовывались в «transparent», что противоречило спецификации (1339394).
- Проприетарный псевдокласс
:-moz-table-border-nonzero
больше недоступен веб-содержимому; он доступен лишь внутренним дефолтным таблицам стиля браузера (1341925). - Внутреннее содержимое с
overflow:auto
больше не перекрывает друг друга (1348857). - Удалены префиксы у значений
isolate
,isolate-override
иplaintext
свойства unicode-bidi property (1333675).
JavaScript
- Добавлена поддержка модульных скриптов (
<script type="module">
), скрытая за отключённой по умолчанию настройкойdom.moduleScripts.enabled
(1330657). \b
и\B
в RegExp с флагами «u» (Unicode) и «i» теперь обрабатывают U+017F (LATIN SMALL LETTER LONG S) и U+212A (KELVIN SIGN) как словарные символы (1338373).- Конструктор DataView теперь выбрасывает RangeError, если параметр
byteOffset
не укладывается в Number.MAX_SAFE_INTEGER (>= 2^53) (1317382). - Поведение метода Date.UTC() в случаях, когда передано менее двух аргументов, приведено в соответствие со спецификацией ECMAScript 2017 (1050755).
DOM
- Добавлен метод URL.toJSON() (1337702).
- Конструктор URLSearchParams() теперь принимает в качестве объекта инициализации запись, содержащую USVStrings (1331580).
- Удалена настройка
dom.workers.latestJSVersion
, предназначенная для решения проблем, связанных с использованием let в воркерах (1219523). - Свойство event.timeStamp теперь возвращает DOMHighResTimeStamp вместо DOMTimeStamp.
Воркеры
- WorkerGlobalScope.close теперь доступен лишь в DedicatedWorkerGlobalScope и SharedWorkerGlobalScope. Это сделано для того, чтобы
close()
не был доступен в сервисных воркерах, поскольку он не должен там использоваться и всегда выдаёт исключение при вызове (1336043). - Реализованы свойства WindowOrWorkerGlobalScope.origin (1306170) и Client.type (1339844).
- Clients.matchAll() теперь возвращает объекты Client в сфокусированном порядке (1266747).
Звук и видео
- Streams API: использование объекта MediaStream в качестве входного параметра для URL.createObjectURL() объявлено устаревшим — в консоли будет выведено предупреждение (1334564). Вместо этого следует использовать HTMLMediaElement.srcObject.
- Web Audio API: теперь метод AnalyserNode.getFloatFrequencyData() корректно отражает сэмплы тишины в возвращённом буфере со значением -Infinity (1336098).
- Web Audio API: AudioParam.setValueCurveAtTime() теперь выбрасывает исключение TypeError, если любое из указанных значений не является конечной величиной (1308437).
- Encrypted MediaExtensions API: строка
MediaKeySession.keySystem
удалена из спецификации (1335555). - Encrypted MediaExtensions API: реализована поддержка кодека VP9 в зашифрованных потоках, использующих Clear Key и Widevine (1338064).
- Encrypted MediaExtensions API: кодек WebM/VP8 теперь активируется независимо от производительности компьютера.
- WebRTC: включена поддержка TCP ICE, позволяющая работать в сетях, где блокируется UDP (1176382).
>>> Примечания к выпуску для разработчиков
>>> Подробности