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


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

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

-Изменён вывод предупреждения о проблемах с безопасностью в случае обращения к страницам, содержащим форму ввода пароля, без использования HTTPS. Вместо индикатора наличия проблем с безопасностью в адресной строке реализовано контекстное предупреждение, выводящееся непосредственно рядом с полем ввода пароля;

-Реализована спецификация Strict Secure Cookies, запрещающая установку cookie с атрибутом "secure" при открытии сайта через http:// без создания защищённого соединения. Новая возможность также не позволяет открытому по http:// сайту установить cookie с теми же именами, что и имеющиеся безопасные ("secure") cookie, уже выставленные для текущего домена;
-Модернизирован интерфейс управления загрузками: В случае сбоя загрузки обеспечен вывод соответствующего уведомления на панель инструментов. Список быстрого доступа к недавним загрузкам расширен с трёх до пяти элементов. Увеличены кнопки отмены загрузки и перезапуска загрузки;
-Добавлена возможность обработки контента в нескольких процессах и началась интеграция наработок из проекта Quantum, в котором производится работа по переносу в движок Gecko возможностей, изначально развиваемых для движка Servo. Если ранее при включении многопроцессного режима осуществлялось разделение на два процесса - один для обработки содержимого вкладок и один для формирования интерфейса, то теперь появилась возможность запуска нескольких процессов для обработки контента (число запускаемых процессов для обработки контента задаётся через переменную dom.ipc.processCount в about:config);
-В средства для web-разработчиков добавлен режим адаптивного дизайна (включается через меню "Responsive Design Mode" в разделе "Web Developer"), позволяющий протестировать работу сайта в окружении, симулирующем работу на устройствах с различным экранным разрешением и DPI, с управлением через сенсорный экран, с разными значениями User-Agent и в условиях ограниченной пропускной способности сети и повышенных задержках доставки пакетов (например, можно симулировать доступ по GPRS со скоростью 50 KB/s и задержкой в 500 мс);

-Представлен новый отладчик для JavaScript - debugger.html, развиваемый в рамках инициативы по замене отладчика, встроенного в Firefox. Debugger.html реализован в виде web-приложения, которое может выполняться в web-браузерах Firefox и Chrome, а также запускаться в обособленном режиме под управлением Node.js или встраиваться в другие web-приложения. Основным отличием нового отладчика является поддержка одновременной отладки нескольких web-приложений. Поддерживается удалённая отладка с использованием протоколов Firefox RDP и Chrome Debugging Protocol.
Основной экран отладчика разделён на три области: Панель с исходными текстами, показывает древовидное представление исходных текстов всех отлаживаемых web-приложений; -Область редактирования, позволяет редактировать конкретные файлы проекта и даёт возможность устанавливать точки останова в коде и приводить упакованный код в читаемый вид; Боковая панель, отображает список текущих точек останова, состояние стека вызовов и значения переменных на момент приостановки выполнения приложения. Поддерживаются операции остановки, пошаговой отладки, входа в функции и другие типовые возможности. Интерфейс разработчики попытались сделать доступным, предсказуемым, простым для изучения и понятным, но при этом предоставить максимальную функциональность. Debugger.html написан на JavaScript с использованием фреймворков React и Redux.


-Для пользователей Firefox Sync реализована возможность целевой отправки вкладки на заданное устройство, с автоматическим открытием данной вкладки на данном устройстве;
-Реализованы средства для автоматического определения перенаправления на страницы аутентификации для подключения к сети (captive portal);
-В многопроцессном режиме появилась поддержка систем озвучивания содержимого экрана (screen reader) и сенсорных экранов Windows 8;
-Прекращена поддержка API Battery Status. Изначально разработчики полагали, что данный API, позволяющий получить информацию об уровне заряда аккумулятора, будет использован в web-приложениях для экстренного сохранения данных или для отключения требующих интенсивных вычислений операций при исчерпании заряда аккумулятора. Но на деле, данный API получил распространение лишь для отслеживания пользователей (уровень заряда аккумулятора как дополнительный параметр для выделения пользователя в общем потоке) и жульничества (например, Uber повышал цены для пользователей с низким зарядом аккумулятора);
-Прекращена по умолчанию поддержка плагинов с интерфейсом NPAPI, в том числе Silverlight, Java, Acrobat, Unitym, Gnome Shell Integration и плагинов с поддержкой мультимедийных кодеков (список активных плагинов можно посмотреть через URL about:plugins). Исключение сделано только для Adobe Flash, так как данная технология ещё остаётся востребована большим числом пользователей. Для пользователей пока оставлена специальная опция, которая позволяет вернуть NPAPI, но в Firefox 53 данная опция будет удалена. В более отдалённом будущем разработчики намереваются полностью удалить поддержку NPAPI, а для пользователей Flash предоставить возможность использования плагина с интерфейсом PPAPI.

-Добавлен API для проверки видимости рекламных блоков силами JavaScript, без необходимости использования для этого Flash;
-Продолжено усовершенствование API WebExtensions для разработки дополнений, совместимых с браузером Chrome. Из новых программных интерфейсов отмечается реализация API для управления сеансами (sessions.getRecentlyClosed и sessions.restore), позволяющего получить информацию о недавно закрытых вкладках и восстановить их при необходимости. Добавлен API topSites, предоставляющий дополнениям доступ к списку наиболее часто открываемых сайтов. -Также представлен API omnibox через который можно зарегистрировать ключевое слово, предоставив для него собственный набор операций в адресной строке. -Готов для тестирования API storage.sync, через который дополнение может организовать обмен данными между разными устройствами. Добавлены события onRemoved, onMoved, onCreated и onChanged для перехвата действий с закладками;
-Добавлен метод window.requestIdleCallback, позволяющий отложить вызов функции на время, когда браузер будет находится в состоянии простоя (idle). Например, при помощи данной возможности можно организовать выполнение низкоприоритетных и фоновых задач, без их негативного влияния на выполнение чувствительных к задержкам операций, таких как вывод анимации и ввод;
-Представлена поддержка нового типа функций "async", определённого в спецификации ECMAScript 7 и позволяющего упростить написание кода, выполняемого в асинхронном режиме;
-Добавлен API Intersection Observer, позволяющий увеличить производительность сайта за счёт применения техники отложенной загрузки контента и значительного снижения накладных расходов при проверке видимости контента;
На платформе Windows возобновлена поддержка событий сенсорного экрана.
-Включена поддержка CSS Grid Layout, новой техники многослойной компоновки элементов страницы, основанной на идее разбиения страницы на области по аналогии с табличной компоновкой с выравниванием по столбцам и строкам. Но в отличие от таблиц при CSS Grid Layout не определяет структуру содержимого, что позволяет выстраивать произвольные макеты, которые недостижимы с использованием обычных таблиц (например, дочерние элементы могут перекрывать друг друга). Для упрощения манипуляции с CSS-элементами Grid в средства для разработчиков добавлен инструмент grid highlighter;


-По умолчанию включена поддержка спецификации TLS 1.3, которая пока находится в состоянии черновика. В последующих ESR-сборках Firefox 52 с длительным сроком поддержки TLS 1.3 будет отключен.
-Добавлен новый тип ссылок rel="noopener", который может применяться для перехода к не заслуживающим доверия страницам. При использовании данного типа для открываемой страницы не выставляется свойство Window.opener и не открывается доступ к контексту из которого была открыта ссылка;
-В средствах совместного доступа к экрану (WebRTC Screen Sharing) обеспечен пока эскизов и отменено требование присутствия домена в белом списке;
-В версии для платформы Android более чем на 5 Мб сокращён размер установочного APK-архива. Улучшены элементы интерфейса для управления воспроизведение звука.



-Улучшения, ожидаемые в Firefox 53:

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

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


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

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

-Для очень больших меню, включающих более 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 3, Athlon XP, VIA C3 и т.п.);
-Прекращена поддержка платформ Windows XP и Vista. Последним LTS-выпуском для данных систем станет Firefox 52, который будет поддерживаться до апреля 2018 года;
-На платформе Windows 10 поддержка многопроцессного режима включена для устройств с сенсорными экранами и средствами для людей с ограниченными возможностями;
-На 64-разрядных системах Windows 7+ теперь по умолчанию устанавливаются 64-разрядные сборки Firefox;
-Прекращена поддержка 32-разрядных версий Mac OS X. Для платформы macOS теперь формируются только 64-разрядные сборки Firefox, создание универсальных сборок прекращено;
-После выхода Firefox 53 в апреле 2017 года в каталоге дополнений Mozilla планируют прекратить генерацию цифровых подписей для новых классических дополнений, написанных с использованием XUL, SDK и XPCOM. Приниматься будут только дополнения на базе WebExtensions. Ограничение касается только новых дополнений для настольных сборок Firefox, обновления к ранее добавленным дополнениям смогут быть подписаны, как и дополнения к Firefox для Android, Thunderbird и Seamonkey.