Релиз Firefox 52


Состоялся релиз web-браузера Firefox 52, а также мобильной версии Firefox 52 для платформы Android. Выпуск отнесён к категории веток с длительным сроком поддержки (ESR), обновления для которых выпускаются в течение года. В ближайшие часы ожидается обновление прошлой ветки с длительным сроком поддержки 45.8. Выпуск SeaMonkey 2.48 планировалось сформировать в феврале, но от так и не был выпущен. В скором времени на стадию бета-тестирования перейдёт ветка Firefox 53 и будет отделён Firefox Developer Edition 54. В соответствии с шестинедельным циклом разработки релиз Firefox 53 намечен на 18 апреля, а Firefox 54 на 13 июня.

Основные новшества:

-В состав браузера добавлена технология WebAssembly, которая предоставляет не зависящий от браузера универсальный низкоуровневый промежуточный код для выполнения в браузере приложений, скомпилированных из различных языков программирования. Бинарный формат и JavaScript API зафиксированы и в дальнейшем будут развиваться с сохранением обратной совместимости. Для наглядной оценки оптимизаций в процессе выполнения проектов на WebAssembly разработчиками Firefox подготовлен инструмент WebAssembly Explorer;
-Модернизирован интерфейс управления загрузками: В случае сбоя загрузки обеспечен вывод соответствующего уведомления на панель инструментов. Список быстрого доступа к недавним загрузкам расширен с трёх до пяти элементов. Увеличены кнопки отмены загрузки и перезапуска загрузки;
-Реализована спецификация Strict Secure Cookies, запрещающая установку cookie с атрибутом "secure" при открытии сайта через http:// без создания защищённого соединения. Новая возможность также не позволяет открытому по http:// сайту установить cookie с теми же именами, что и имеющиеся безопасные ("secure") cookie, уже выставленные для текущего домена;
-Изменён вывод предупреждения о проблемах с безопасностью в случае обращения к страницам, содержащим форму ввода пароля, без использования HTTPS. Вместо индикатора наличия проблем с безопасностью в адресной строке реализовано контекстное предупреждение, выводящееся непосредственно рядом с полем ввода пароля. Кроме того, при открытии страницы с формой входа по HTTP теперь отключается автозаполнение имени пользователя и пароля;

-Добавлена возможность обработки контента в нескольких процессах и началась интеграция наработок из проекта Quantum, в котором производится работа по переносу в движок Gecko возможностей, изначально развиваемых для движка Servo. Если ранее при включении многопроцессного режима осуществлялось разделение на два процесса - один для обработки содержимого вкладок и один для формирования интерфейса, то теперь появилась возможность запуска нескольких процессов для обработки контента (число запускаемых процессов для обработки контента задаётся через переменную dom.ipc.processCount в about:config);
-В Firefox Sync расширены средства синхронизации вкладок - пользователь теперь может отправить вкладки на другое устройство, а также инициировать автоматическое открытие выбранной вкладки на другом устройстве;
-Прекращена по умолчанию поддержка плагинов с интерфейсом NPAPI, в том числе Silverlight, Java, Acrobat, Unitym, Gnome Shell Integration и плагинов с поддержкой мультимедийных кодеков (список активных плагинов можно посмотреть через URL about:plugins). Исключение сделано только для Adobe Flash, так как данная технология ещё остаётся востребована большим числом пользователей. Для пользователей пока оставлена специальная опция, которая позволяет вернуть NPAPI, но в Firefox 53 данная опция будет удалена. В более отдалённом будущем разработчики намереваются полностью удалить поддержку NPAPI, а для пользователей Flash предоставить возможность использования плагина с интерфейсом PPAPI.

-Для всех пользователей ведена блокировка сертификатов, заверенных с использованием алгоритма хэширования SHA-1, для которого недавно была продемонстрирована возможность практической генерации коллизий. При обращении к сайтам, использующим сертификаты с SHA-1, отныне будет выводиться ошибка и соединение будет помечаться незащищённым. Как и в случае с самоподписанными сертификатами, ошибку можно обойти через специальный диалог. Поддержка SHA-1 для вручную импортированных сертификатов пока сохранена;
-Включена поддержка CSS Grid Layout, новой техники многослойной компоновки элементов страницы, основанной на идее разбиения страницы на области по аналогии с табличной компоновкой с выравниванием по столбцам и строкам. Но в отличие от таблиц при CSS Grid Layout не определяет структуру содержимого, что позволяет выстраивать произвольные макеты, которые недостижимы с использованием обычных таблиц (например, дочерние элементы могут перекрывать друг друга). Для упрощения манипуляции с CSS-элементами Grid в средства для разработчиков добавлен инструмент grid highlighter;


-Включена поддержка двух новых ключевых слов async и await, предложенных в черновике спецификаци ECMAScript 7 и позволяющих упростить написание кода, выполняемого в асинхронном режиме. Конструкции с async/await значительно проще для восприятия и более читаемы, по сравнению с аналогичными конструкциями на основе механизма Promise;
-В средства для 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.


-Реализованы средства для автоматического определения перенаправления на страницы аутентификации для подключения к сети (captive portal);
-В многопроцессном режиме появилась поддержка систем озвучивания содержимого экрана (screen reader) и сенсорных экранов Windows 8;
На платформе Windows, если не используется Direct2D, для отрисовки содержимого теперь применяется графическая библиотека Skia, которая ранее была задействована только для Linux и Android;
-Пользователи Windows XP и Windows Vista будут автоматически переключены на текущую ESR-ветку, так как в дальнейших релизах поддержка данных систем будет прекращена;
-Прекращена поддержка API Battery Status. Изначально разработчики полагали, что данный API, позволяющий получить информацию об уровне заряда аккумулятора, будет использован в web-приложениях для экстренного сохранения данных или для отключения требующих интенсивных вычислений операций при исчерпании заряда аккумулятора. Но на деле, данный API получил распространение лишь для отслеживания пользователей (уровень заряда аккумулятора как дополнительный параметр для выделения пользователя в общем потоке) и жульничества (например, Uber повышал цены для пользователей с низким зарядом аккумулятора);
-Добавлен API для проверки видимости рекламных блоков силами JavaScript, без необходимости использования для этого Flash;
-Включён по умолчанию оператор JavaScript для возведения в степень (x**n);
-Продолжено усовершенствование API WebExtensions для разработки дополнений, совместимых с браузером Chrome. Из новых программных интерфейсов отмечается реализация API для управления сеансами (sessions.getRecentlyClosed и sessions.restore), позволяющего получить информацию о недавно закрытых вкладках и восстановить их при необходимости. Добавлен API topSites, предоставляющий дополнениям доступ к списку наиболее часто открываемых сайтов. Также представлен API omnibox через который можно зарегистрировать ключевое слово, предоставив для него собственный набор операций в адресной строке.
-Готов для тестирования API storage.sync, через который дополнение может организовать обмен данными между разными устройствами.
-Добавлены события onRemoved, onMoved, onCreated и onChanged для перехвата действий с закладками;
-Добавлен метод window.requestIdleCallback, позволяющий отложить вызов функции на время, когда браузер будет находится в состоянии простоя (idle). Например, при помощи данной возможности можно организовать выполнение низкоприоритетных и фоновых задач, без их негативного влияния на выполнение чувствительных к задержкам операций, таких как вывод анимации и ввод. По умолчанию метод отключен и может быть активирован через флаг dom.requestIdleCallback.enabled в about:config;
-В массивах и объектах теперь разрешено оставлять запятые после последнего элемента (например, "var arr = [1, 2, 3,];"), в массивах также можно оставлять незаполненные элементы (например, "var arr = [1, 2, 3,,,];") вместо которых останутся пустые значения;
-Добавлена поддержка HTTP-заголовока Large-Allocation, предназначенный для информирования браузера о том, что загружаемая страница потребует много памяти (например, "Large-Allocation: -500" информирует, что приложению на WebAssembly или asm.js потребуется непрерывный блок памяти, размером 500 Мб);
-По умолчанию включена поддержка спецификации TLS 1.3, которая пока находится в состоянии черновика. В последующих ESR-сборках Firefox 52 с длительным сроком поддержки TLS 1.3 будет отключен.
-Добавлен новый тип ссылок rel="noopener", который может применяться для перехода к не заслуживающим доверия страницам. При использовании данного типа для открываемой страницы не выставляется свойство Window.opener и не открывается доступ к контексту из которого была открыта ссылка;
-В средствах совместного доступа к экрану (WebRTC Screen Sharing) обеспечен показ эскизов и отменено требование присутствия домена в белом списке;
-В версии для платформы Android более чем на 5 Мб сокращён размер установочного APK-архива. Улучшены элементы интерфейса для управления воспроизведением звука и видео - в область уведомлений добавлены кнопки для остановки и продолжения воспроизведения;
-Внимание! Из-за прекращения поддержка NPAPI-плагинов в Firefox 52 временно ограничена функциональность сервиса Google Hangouts, в котором перестали работать голосовые звонки и видеовызовы. Обмен текстовыми сообщениями в Google Hangouts работает как и раньше.
-Дополнение: По умолчанию в Linux отключена поддержка звуковой подсистемы ALSA (вывод звука теперь осуществляется только чрез PulseAudio). Для возобновления работы через ALSA требуется пересборка с флагом "--enable-alsa";
-Кроме новшеств и исправления ошибок в Firefox 52 устранена серия уязвимостей, из которых несколько помечены как критические, т.е. могут привести к выполнению кода злоумышленника при открытии специально оформленных страниц. В настоящее время информация с подробностями об исправленных проблемах безопасности недоступна, ожидается, что перечень уязвимостей будет опубликован в течение нескольких часов.