Доступен выпуск Firefox 57.
Разработчики с гордостью называют этот релиз Firefox Quantum. Благодаря новому многопоточному CSS-движку (Stylo), написанному на языке Rust, и полному переходу на мультипроцессный режим работы (отказу от старого API дополнений и прослоек совместимости) удалось удвоить показатели в тесте Speedometer 2.0 (по сравнению с Firefox 52 ESR) и обогнать Chrome. Кроме того, браузер заметно выигрывает у Chrome по потреблению памяти.
В будущем ожидается переход к многопоточной обработке DOM и JavaScript, а также включение новой системы рендеринга.
- Полностью переработаны графический интерфейс (Photon) и логотип:
- Главное меню стало более простым и понятным.
- Значки дополнений перемещены на панель. Их можно выносить в отдельное меню (кнопка >>).
- Прямоугольные вкладки.
- Домашняя страница заменена на Activity Stream, где пользователю кроме часто посещаемых сайтов предлагаются новости про Firefox, интернет-культуру и случайные мемы от сервиса Pocket. Прежний вид главной страницы остаётся доступным с помощью настройки
browser.newtabpage.activity-stream.enabled = false
. - Панель поиска скрыта по умолчанию для новых установок, её можно включить в настройках, но разработчики рекомендуют попробовать поиск из адресной строки (при вводе поискового запроса установленные поисковые движки доступны в нижней части выпадающего списка).
- В адресной строке появилась кнопка, позволяющая скопировать текущий адрес, добавить страницу в закладки, сохранить её в Pocket, отправить по эл. почте, на мобильное устройство или сделать скриншот.
- Новая кнопка «Библиотека» (содержит подменю «Закладки», «Загрузки», «Журнал», «Облачные вкладки», «Скриншоты»). Отдельные кнопки для показа загрузок, истории и закладок можно вернуть, войдя в режим настройки.
- Добавлены «Компактные» и «Мобильные» наборы значков (уменьшают или увеличивают размер элементов интерфейса, выбираются в режиме настройки).
- Кнопка «Загрузки» теперь автоматически скрывается при отсутствии элементов в меню загрузок (
browser.download.autohideButton = true
). - Функция «создать копию вкладки» встроена в браузер, больше не нужно пользоваться для этого сторонними дополнениями.
- Реализована возможность по умолчанию открывать закладки в новых вкладках (
browser.tabs.loadBookmarksInTabs = true
). По умолчанию закладки по-прежнему открываются в текущей вкладке. - Появилась возможность отключить автозакрытие меню закладок после открытия закладки в новой вкладке (
browser.bookmarks.openInTabClosesMenu = false
).
- Прекращена поддержка старого API дополнений:
- Поддерживаются лишь дополнения, написанные с помощью API WebExtensions, совместимого с Chrome. Дополнения, авторы которых не позаботились о переходе, отключены и вынесены в отдельный раздел в менеджере дополнений, где пользователю будет предложена замена (если существует обновлённое дополнение с похожими возможностями). Для этой цели введён в строй специальный сайт. Кроме того, пользователи Reddit составили таблицу (местами устаревшую, но полезную), отражающую ход портирования популярных дополнений. Автор этой новости тоже сделал небольшой список, куда вошли дополнения, проигнорированные на Reddit. Не все обновлённые дополнения одинаково полезны. Например, дополнение Stylish сменило владельца (оригинальный автор продал проект и сайт userstyles.org). Новый владелец встроил туда код, передающий адреса посещённых пользователем сайтов. Разработчик популярного дополнения Classic Theme Restorer создал репозиторий с CSS-твиками, отчасти заменяющими функции этого дополнения.
- Устаревшие дополнения разрешается устанавливать в «ночные» версии Firefox (
extensions.legacy.enabled = true
), но многие из них не будут работать из-за изменений, произошедших в движке браузера. - Полностью изменился дизайн каталога дополнений addons.mozilla.org.
- Для пользователей устаревших версий браузера энтузиасты создали дополнение, представляющее собой каталог старых дополнений, написанных на XUL/XPCOM. В планах - полная независимость от репозитория Mozilla и самостоятельный хостинг всех устаревших дополнений, поскольку в июне 2018 года все XUL-дополнения будут убраны из репозитория Mozilla (в связи с прекращением поддержки XUL в ESR-ветке браузера).
- Включена долгожданная поддержка
<input type=time>
и<input type=date>
(1399036). - В настройки добавлено управление сайтами, которым пользователь разрешил доступ к местоположению, камере, микрофону. Кроме того, добавлено управление данными, которые сайты сохранили (с помощью Web Storage API) на компьютере пользователя.
- Появилась возможность включить защиту от отслеживания постоянно, а не только в приватном режиме. Блокируется обращение к скриптам, изображениям, счётчикам, виджетам, занесённым в чёрные списки проекта disconnect.me. В отдельных случаях это повышает скорость загрузки страниц на 44%.
- При использовании служб поддержки (экранный диктор и прочие средства для людей с ограниченными возможностями) в заголовке окна появляется индикатор. Кроме того, в настройках появилась возможность полностью запретить использование служб поддержки, поскольку такие приложения и возможности могут использоваться для вредоносных действий.
- Автопрокрутка (автоскроллинг) переведена на асинхронный режим (например, так уже давно работает прокрутка колесом мыши). В результате, она стала более плавной (заранее отрисовывается содержимое, находящееся за пределами экрана).
- В Linux теперь применяются более строгие ограничения песочницы (уровень 3).
- В Linux щелчок средней кнопкой мыши по странице больше не приводит к загрузке ссылки, содержащейся в буфере обмена (366945). Это причиняло неудобства пользователям, когда они пытались щёлкнуть по ссылке, но промахивались, попадая вместо этого по самой странице. Поддержка вставки средней кнопкой в адресную строку сохранена.
- Полностью удалена поддержка проприетарного Social API (1388902). Эти возможности практически не используются. Функция «Поделиться в соц. сетях» вынесена в отдельное дополнение.
- headless-режим обзавёлся поддержкой флага -screenshot, позволяющего делать снимки экрана из командной строки (1378010).
- Устранена утечка данных, вызываемая ссылками resource:// (863246).
- Включена предварительная установка соединений со всеми сайтами, которые предлагаются пользователю в выпадающем списке при вводе текста в адресную строку. Разработчики заявляют, что осуществляются лишь DNS-запросы и получение хендшейков.
- Firefox научился использовать аппаратное ускорение воспроизведение VP9 на платформах AMD.
- В реализацию WebGL добавлена порция улучшений, препятствующих отслеживанию пользователя (1217290).
- Шрифтом для японского языка по умолчанию теперь является Meiryo.
- Firefox 57 может внезапно падать, если в системе установлен мобильный процессор поколения Broadwell-U и не обновлён микрокод для него. Рекомендуется установить обновления ОС (Windows) или установить свежую версию пакета intel-microcode (Linux).
Инструменты разработчика:
- Сетевой монитор, веб-консоль и отладчик переписаны с использованием React и Redux.
- Множество новых возможностей в Инспекторе, отладчике и веб-консоли.
- Улучшения интерфейса: новая подсветка синтаксиса, менее кричащие цвета, упрощённая навигация, лучшая читаемость кода.
HTML:
- Отключена поддержка <link rel=«preload»>, вызывавшая различные проблемы совместимости (1405761). Они будут исправлены в следующей версии.
CSS:
- Включена поддержка значений «minimal-ui» и «standalone» медиа-запроса display-mode (1369815).
- grid-row-gap и grid-column-gap больше не сбрасываются сокращённым свойством grid (1387410).
- Множество изменений, связанных с новым CSS-движком.
JavaScript:
- Удалена поддержка нестандартного выражения for each...in. Вместо него следует использовать for...of (1083470).
- Объявлены устаревшим методы Object.prototype.watch() и unwatch() (934669).
- Удалена поддержка нестандартных объектов Iterator и StopIteration (1098412).
API:
- Включена поддержка PerformanceObserver (1386021).
- Добавлены интерфейсы AbortController и AbortSignal (Abort API), позволяющие DOM-запросам прерываться при необходимости (1378342).
DOM:
- Реализовано свойство Selection API Selection.type (1359157).
- Добавлена поддержка Document.createEvent('FocusEvent') (1388069).
- Теперь можно задать значение свойству «files» интерфейса HTMLInputElement (1384030).
- Метод HTMLDocument.getSelection() перемещён в интерфейс Document, что сделало его доступным для XML-документов (718711).
- Реализовано событие messageerror, которое, будучи вызванным, может запускать код через обработчики событий — см. MessagePort.onmessageerror, DedicatedWorkerGlobalScope.onmessageerror, Worker.onmessageerror, BroadcastChannel.onmessageerror и Window.onmessageerror (1359017).
- Когда значения Headers повторяются, они автоматически сортируются в лексикографическом порядке, а значения из дублирующихся заголовков объединяются (1396848).
WebRTC:
- RTCDataChannel теперь поддерживает сообщения произвольного размера (вплоть до гигабайта). Учтите, что сообщения большого размера могут вызывать существенные задержки SCTP-трафика, поскольку Firefox не поддерживает протокол ndata, позволяющий организовать чередование SCTP-сообщений, поступающих из нескольких источников (979417).
- Метод RTCDataChannel.send() выбрасывает исключение TypeError, если размер сообщения, которое вы пытаетесь отправить, не совместим с юзерагентом получателя (979417).
- События MediaStream Recording API error, которые отправляются для отчёта о проблемах, возникающие во время записи, теперь имеют тип, а не являются общими событиями.
- Обновлена документация по OfflineAudioContext, поскольку входы его конструкторов могут быть определены в объекте, а не как список параметров (1388591).
>>> Подробности