Тестирование Firefox 53-beta и Firefox Developer Edition 54


Firefox 53 перешёл на стадию бета-тестирования, что ознаменовало прекращение формирования базовой функциональности и сосредоточение всего внимания на выявлении ошибок и контроле качества. Кроме того сформирован выпуск Firefox Developer Edition 54, который заменил собой aurora-ветку, в рамках которой проводится оценка готовности тех или иных новшеств для последующего бета-выпуска. Загрузить бета-выпуск можно на данной странице, а Firefox Developer Edition здесь. Релиз Firefox 53 намечен на 18 апреля, а Firefox 54 на 13 июня.

Изменения, представленные в бета-версии Firefox 53:

-Полностью переработано оформление уведомлений для подтверждения предоставления web-приложению или сайту дополнительных полномочий, таких как доступ к определению местоположения, микрофону, камере, API для offline-хранения, выводу уведомлений и т.п. Уведомления о запросе расширенных полномочий стали более заметными, наглядными и простыми для понимания. В адресной строке предусмотрена возможность быстрого доступа к полномочиям с возможностью их изменения в любой момент и доступом к расширенным настройкам сайта, позволяющим заблокировать загрузку изображений, обработку cookie и использование плагинов.


-Поддержка многопроцессного режима расширена наработками проекта Quantum Compositor (e10s-gpu), в рамках которого код композитинга и интерфейса для взаимодействия с GPU вынесен в отдельный процесс, что позволяет защитить браузер от проблем, возникающих из-за графических драйверов и сбоев в графическом API. В случае сбоя графического драйвера процесс композитинга автоматически перезапускается без негативного влияния на работу остальных частей браузера. Проведённый в ночных сборках эксперимент показал, что тестовое включение Quantum Compositor привело к сокращению общего числа жалоб на крахи браузера на 1.2%, крахов в процессе завершения работы на 5.1%, крахов плагинов на 5.5% и число отчётов о крахах GPU-драйверов уменьшилось на 45%. Отдельный процесс для отрисовки пока активирован только для платформы Windows;

-В дополнение к ранее применяемой базовой теме оформления в основной состав включены две новые темы оформления - Compact Dark и Compact Light, созданные по мотивам тем оформления для Firefox Developer Edition. Новые темы можно активировать через Appearance в менеджере дополнений (about:addons) или через меню настройки внешнего вида (Menu/Customize). Новые темы являются первым шагом на пути к реализации плана по визуальному обновлению Firefox в 2017 году.


-По умолчанию активирована блокировка воспроизведения мультимедийного контента в фоновых вкладках. Звук и видео теперь начинают воспроизводиться только после того, как пользователь явно перейдёт на вкладку (воспроизведение не начнётся, пока вкладка не станет видимой);
-Обеспечена возможность применения легковесных тем оформления для окон, открытых в режиме приватного просмотра;
-В режиме читателя (Reader Mode) реализовано отображение приблизительного времени чтения страницы;
-Изменён метод отображения обрезанной части заголовка страницы на вкладках - вместо многоточия реализован эффект смазывания (затухания) последних букв;

-Обновлены элементы интерфейса для управления воспроизведением мультимедийного содержимого;

-Добавлена поддержка канала прозрачности для видео в формате WebM, что позволяет организовать воспроизведение с просвечивающим фоном;
-Для очень больших меню, включающих более 40 элементов, реализована функция inline-поиска элементов меню;
-В дополнениях запрещена загрузка бинарных компонентов и разделяемых библиотек непосредственно в процесс Firefox. Разработчикам дополнений, в которых используется нативный код, рекомендуется перейти на технологии WebExtensions и API Native Messaging, который подразумевает запуск связанного с дополнением исполняемого файла в отдельном процессе и организацию канала связи с ним. Начиная с Firefox 53 все дополнения, использующие JS-ctypes или напрямую загружающие бинарные данные в процесс будут занесены в чёрный список;
-По умолчанию включен интерфейс для навигации по структурированным данным в формате JSON. В интерфейсе предоставлена возможность раскрытия блоков в соответствии с заданным фильтром и сохранения или копирования выделенных областей. В состав кодовой базы просмотрщик JSON добавлен ещё в Firefox 44, но до сих пор был отключен по умолчанию (devtools.jsonview.enabled в about:config);

-Продолжено усовершенствование API WebExtensions для разработки дополнений, совместимых с браузером Chrome. В новой версии реализована большая часть API browser.browsingData, которое позволяет удалять из Firefox накопленные в процессе навигации данные, такие как данные форм, cookie, пароли, загрузки, содержимое кэша, история посещений. Частично реализован API browser.identity, предоставляющий средства для аутентификации с использованием OAuth. Добавлен новый API browser.contextualIdentities с реализацией системы контейнеров для изоляции параметров идентификации (например, в разных вкладках можно использовать разные учётные записи к одному сайту). Успешно прошёл тестирование и включён по умолчанию API browser.storage.sync. Началась реализация API browser.devtools. Существенно расширены возможности по созданию контекстных меню.
Добавлена система детализированного подтверждения полномочий, которые требуют дополнения на базе WebExtensions. Перед установкой дополнения, или в случае изменений списка полномочий при доставке обновлений, пользователь должен подтвердить предоставление дополнению расширенных прав, таких как доступ к пользовательским данным или содержимому вкладок;

-В сборках для платформы Linux прекращена поддержка процессоров x86, не поддерживающих инструкции SSE2 (процессоры старее Pentium 4 и AMD Opteron, в том числе Pentium 3, Athlon XP и VIA C3);
-Прекращена поддержка платформ Windows XP и Vista, а также 32-разрядных версий macOS. Последним LTS-выпуском для данных систем является Firefox 52, который будет поддерживаться до апреля 2018 года;
-Уменьшен размер обновлений к сборкам для macOS;
-В about:config добавлена опция network.http.referer.userControlPolicy, позволяющая определить применяемую по умолчанию политику отправки заголовка Referrer: 0 - не заполнять, 1 - заполнять только для того же домена (same-origin), 2 - отправлять обрезанным на другие хосты (strict-origin-when-cross-origin), 3 - отправлять за исключением случая обращении из области HTTPS к HTTP (no-referrer-when-downgrade, по умолчанию);
-Добавлен API Intersection Observer, позволяющий увеличить производительность сайта за счёт применения техники отложенной загрузки контента и значительного снижения накладных расходов при проверке видимости контента;
-Включена по умолчанию поддержка CSS-свойств "mask-*" (mask-clip, mask-border, mask-image, mask-position, mask-origin, mask-size и т.п.) для полного или частичного скрытия видимых элементов. В частности, можно описать как использовать другой графический элемент или изображение в качестве маски для изменения яркости или прозрачности;
Добавлено CSS-свойство caret-color, через которое можно изменить цвет курсора для форм ввода;
-Добавлены комбинированные CSS-свойства place-items, place-self и place-content, позволяющие одним действием установить пары свойств align-items и justify-items, e align-self и justify-self;
-В CSS-свойство display добавлена поддержка значения flow-root, позволяющего сгенерировать блочный элемент, соответствующий новой технике блочного форматирования контента;
-В экспериментальном CSS-свойстве tab-size (-moz-tab-size) появилась возможность задания произвольного размера табуляции в пикселях, а не только через определения числа пробелов;
-Специфичный для движка Gecko префикс "-moz-" удалён для псевдокласса ":dir()", свойства text-align-last и метода calc();
-Добавлена описанная в спецификации ECMAScript 2015 семантика для свойств Function.name, включая возможность определения имён для анонимных функций (var foo = function() {});
-Блокирован перебор свойств объектов MimeTypeArray, Plugin и PluginArray для предотвращения использования для косвенной идентификации пользователя;
-Добавлена поддержка WebGL-расширения WEBGL_compressed_texture_astc;
-Удалены Wifi information API, Speaker Manager API, Tethering API и Settings API, применявшиеся в Firefox OS;
-В средствах для web-разработчиков появилась опция "Copy CSS Path" для копирования CSS-селектора, представляющего полный путь к элементу;
-На 64-разрядных системах Windows 7+ теперь по умолчанию устанавливаются 64-разрядные сборки Firefox;
-На платформе Windows возобновлена поддержка событий сенсорного экрана;
Прекращена поддержка 32-разрядных версий Mac OS X. Для платформы macOS теперь формируются только 64-разрядные сборки Firefox, создание универсальных сборок прекращено;
-После выхода Firefox 53 в апреле 2017 года в каталоге дополнений Mozilla планируют прекратить генерацию цифровых подписей для новых классических дополнений, написанных с использованием XUL, SDK и XPCOM. Приниматься будут только дополнения на базе WebExtensions. -Ограничение касается только новых дополнений для настольных сборок Firefox, обновления к ранее добавленным дополнениям смогут быть подписаны, как и дополнения к Firefox для Android, Thunderbird и Seamonkey.
-В версии для платформы Android предоставлена возможность включения размещения вкладок в две колонки, при работе в портретном режиме. При удержании нажатия на предложенный вариант поискового запроса (search suggestion), данный запрос будет удалён из истории посещений. Код для декодирования звука и видео выделен в отдельный процесс, что положительно скажется на стабильности воспроизведения. Пользователю предоставлена возможность размещения на домашний экран Android ярлыков со ссылками на сайты c предопределёнными пиктограммами.



-Улучшения, ожидаемые в Firefox 54:
Активирована sandbox-изоляция, ограничивающая доступ дочерних процессов Firefox к системным вызовам, файловой системе и сторонним процессам. Для изоляции в Linux применяется ограничение доступа к системным вызовам при помощи Seccomp-bpf, также для изоляции используются PID namespace и chroot в пустую директорию. В Windows применяются разработанные Google библиотеки sandboxbroker и sandboxtarget, используемые в Chromium и Chrome;
-Запрещено автоматическое воспроизведение мультимедийного контента в новых вкладках, открытых в фоне;
-В редакции для настольных систем в окне "Библиотека" обеспечено отображение закладок, созданных на синхронизированных мобильных устройствах;
-В средствах для web-разработчика в режиме адаптивного дизайна ("Responsive Design Mode") появилась возможность создания собственных устройств для тестирования сайта в его окружении (задаётся разрешение экрана, DPI, параметры сенсорного экрана, пропускная способность сети и т.п.);
-Добавлена поддержка конструкции ‹script type="module"› для определения содержимого модульных скриптов, тестируемых вместе с флагом "dom.moduleScripts.enabled" в настройках;
-Добавлен метод URL.toJSON(), возвращающий определённый в "href" URL в виде конструкции JSON ('{"key": "https://www...."}');
-Добавлено событие onanimationcancel, которое генерируется при отмене или сбое воспроизведения анимации, заданной через CSS Animation;
-В версии для Android включена по умолчанию поддержка объекта Intl, предоставляющего доступ к API интернационализации (сравнение строк, форматирование чисел, времени и дат с учётом локали);