Подробный список изменений к выпуску 64.0
Появилась возможность управлять сразу несколькими вкладками. Выберите несколько вкладок, последовательно нажимая на их заголовки с зажатой клавишей Ctrl. Поддерживается закрытие, перемещение, добавление в закладки, закрепление и т.д. Кроме того, в контекстном меню вкладки появилось подменю «Переместить вкладку» и пункт «Выбрать все вкладки».
Полностью переработана страница управления расширениями. Возле каждого дополнения сразу видны кнопки «Настройки», «Отключить» и «Удалить». Поле поиска стало заметнее и размещено по центру. Добавлена ссылка для перехода в настройки браузера.
В контекстное меню значков расширений добавлен пункт, позволяющий удалить расширение.
Уведомление об успешной установке расширения теперь показывается не во вкладке, а в главном меню.
Переработана страница about:performance. Теперь она выглядит, как диспетчер задач.
Переработана страница about:crashes, позволяющая увидеть отправленные и не отправленные разработчикам отчёты о сбоях, а также удалить их.
Пользователи (пока только находящиеся в США) будут получать рекомендации установить дополнения или воспользоваться функцией браузера. Рекомендации основываются на поведении пользователя (часто обращается к конкретному сайту — будет предложено установить дополнение, связанное с этим сайтом; часто открывает одни и те же страницы → получит предложение закрепить вкладки). Анализ действий пользователя выполняется локально. Эта возможность отключается в настройках.
Сборки для Linux и macOS теперь формируются с помощью Clang. При сборке включена оптимизация на этапе линковки (Link Time Optimization).
В сборках для Android обеспечена поддержка сервисов автозаполнения (одна из функций, появившихся в Android 8). С его помощью сторонние менеджеры паролей могут автоматически подставлять логины и пароли в соответствующие поля на веб-страницах.
Прекращено доверие сертификатам, выданным удостоверяющими центрами Symantec и её дочерними компаниями GeoTrust, RapidSSL, Thawte, Verisign. Symantec допустила множество нарушений, включая выдачу сертификата для google.com третьим лицам.
Теперь можно использовать Referrer-Policy для управления ресурсами, полученными через таблицы стилей — см. Integration with CSS.
Navigator.buildID больше не отражает истинное время сборки. Например, в Linux это время является уникальным для каждого дистрибутива (время сборки ментейнером пакета) и позволяло легко определить операционную систему пользователя.
Удалена поддержка RSS-лент (обнаружение, предпросмотр) и живых закладок. Обслуживание и улучшение соответствующего кода (живые закладки плохо поддаются синхронизации, а поддержка RSS вовсе не реализована в мобильных версиях браузера) потребовали бы затрат, несоизмеримых с практически нулевой востребованностью этих функций (пользователи, имеющие более одного устройства, предпочитают онлайн-агрегаторы RSS). По данным телеметрии RSS и живые закладки использовало лишь 0.1% пользователей. Эти пользователи могут воспользоваться одним из множества дополнений.
Pocket больше не поставляется в виде отдельного xpi-файла, код перемещён внутрь omni.ja. Это никак не сказалось на возможности отключить Pocket через about:config.
macOS:
Для корпоративных пользователей добавлена поддержка профилей конфигурации.
Снова включён API WebVR 1.1.
Для добавления к текущему адресу www. и .com теперь используется Ctrl+Enter вместо Cmd+Enter.
Windows 10:
У пользователей видеокарт Nvidia включена система композитинга WebRender, написанная на языке Rust. WebRender полностью переносит задачу отрисовки страницы на графический ускоритель. Пользователи других операционных систем и/или другого аппаратного обеспечения могут включить WebRender на свой страх и риск, установив необходимые переменные: MOZ_ACCELERATED=1 MOZ_WEBRENDER=1 ./firefox. Проверить, используется ли WebRender, можно на странице about:support.
Появилась возможность поделиться текущим сайтом средствами ОС (пункт «Поделиться» в меню, вызываемом из значка «...» в адресной строке).
Инструменты разработчика
Информационная панель в инструменте поддержки доступности теперь показывает сведения о соотношении контрастности цветов текста или изображений на странице (1473037).
Выбор устройства в режиме адаптивного дизайна запоминается и сохраняется между сеансами (1248619).
Окончательно удалена панель разработчика (GCLI) (1429421). Её интерфейс был удалён в Firefox 62, а теперь удалён и оставшийся код.
Веб-консоль научилась подсвечивать код JavaScript.
В инспекторе сеток CSS реализована работа с перекрывающимися сетками (до трёх сеток одновременно).
CSS
Включена по умолчанию поддержка полос прокрутки CSS (1492012).
Реализована поддержка Interaction Media Features, включающая pointer:coarse (1035774). Подробности реализации any-pointer и any-hover см в 1483111.
Android-версия обзавелась поддержкой prefers-reduced-motion (1478505).
Значения <gradient> теперь поддерживают мультипозиционный синтаксис остановки цвета, например, yellow 25%, yellow 50% можно записать в виде yellow 25% 50% (1352643).
Свойство text-transform теперь принимает значение full-size-kana (1498148).
Из-за проблем веб-совместимости добавлена поддержка -webkit-appearance (1368555).
Кроме того, удалена большая часть специфичных для Firefox значений -moz-appearance (1496720).
display: list-item отныне поддерживается на элементах <legend> (1486602).
SVG path(), при использовании в offset-path, теперь могут быть анимированными (1486094).
Псевдоэлементы с префиксом -webkit- больше не делают цепочку или группу селекторов недействительной (1424106). См 1486325, чтобы узнать, как включить эту возможность.
Нестандартные значения -moz-box и -moz-inline-box display скрыты от веб-содержимого (1496961).
Нестандартные псевдоэлементы ::-moz-tree скрыты от веб-содержимого (1496961).
Удалена настройка layout.css.filters.enabled — CSS-фильтры отныне нельзя отключить (1408841).
Отменено (1492567) изменение, сделанное в прошлом выпуске — перемена мест значений overflow (1481866).
JavaScript
Реализовано предложение TC39 Well-formed JSON.stringify, чтобы JSON.stringify не мог возвращать плохо сформированные строки Unicode (1469021).
Проксируемые функции теперь могут быть переданы Function.prototype.toString.call() (1440468).
Если значение не указано, конструктор WebAssembly.Global будет использовать типизированный 0. Это определяется алгоритмом DefaultValue (1490286).
API
DOM:
Ряд изменений API Fullscreen:
API лишился префикса (1269276).
Методы Element.requestFullscreen() и Document.exitFullscreen() отныне возвращают Promise, который исполняется, когда завершено изменение режима (1188256, 1491212).
События fullscreenchange и fullscreenerror cначала отправлялись в Document, а затем в Element. Теперь всё стало наоборот. Это поведение отражено в спецификации и совпадает с поведением Google Chrome (1375319).
В качестве ссылок на Window.screenX и Window.screenY добавлены Window.screenLeft и Window.screenTop (1498860).
Метод XMLHttpRequest.getAllResponseHeaders() отныне возвращает имена заголовков в нижнем регистре, в соответствии со спецификацией (1398718).
Устаревший интерфейс HTMLAllCollection обновлён в соответствии с последними изменениями спецификации (1398354).
Сервис-воркеры: реализован метод ServiceWorkerContainer.startMessages() (1263734).
Media, Web Audio и WebRTC:
Свойства PannerNode.refDistance, PannerNode.maxDistance, PannerNode.rolloffFactor и PannerNode.coneOuterGain отныне корректно выбрасывают исключения, когда их значения установлены за пределами допустимого (1487963).
Настройки RTCRtpEncodingParameters, изменённые с помощью RTCRtpSender.setParameters(), не обновлялись, если были изменены во время звонка. Теперь они будут обновляться без переподключения (1253499).
Реализован RTCIceCandidateStats.relayProtocol — стандартная версия RTCIceCandidateStats.mozLocalTransport, который объявлен устаревшим (1435789).
Свойство Window.event, добавленное в Firefox 63 для разрешения проблем веб-совместимости, скрыто за отключённой в релизных версиях настройкой dom.window.event.enabled, поскольку вскрылись иные затруднения (1493869). На самом деле, это было сделано в одном из минорных обновлений Firefox 63, мы просто обращаем на это ваше внимание.
Удалён интерфейс LocalMediaStream и его метод stop() (1258143). См. Stopping a video stream, чтобы узнать, как остановить поток целиком.
Удалены интерфейсы AudioStreamTrack и VideoStreamTrack, поскольку они уже некоторое время объявлены устаревшими (1377146). Их функции перенесены в MediaStreamTrack; дорожки отныне идентифицируются по значению свойств kind, таких, как audio или video.