Состоялся релиз web-браузера Firefox 78, а также мобильной версии Firefox 68.10 для платформы Android. Выпуск Firefox 78 отнесён к категории веток с длительным сроком поддержки (ESR), обновления для которых выпускаются в течение года. Кроме того, сформировано обновление прошлой ветки с длительным сроком поддержки 68.10.0 (в дальнейшем ожидается ещё два обновления 68.11 и 68.12). В ближайшее время на стадию бета-тестирования перейдёт ветка Firefox 79, релиз которой намечен на 28 июля. Основные новшества: Расширена сводная страница (Protections Dashboard) с отчётами об эффективности работы механизмов защиты от отслеживания перемещений, проверки компрометации учётных данных и управления паролями. В новом выпуске появилась возможность просмотреть статистику использованию скомпрометированных учётных данных, а также отследить возможные пересечения сохранённых паролей с известными утечками пользовательских баз. Проверка осуществляется через интеграцию с базой данных проекта haveibeenpwned.com, включающей сведения о 9.7 миллиардах учётных записей, похищенных в результате взломов 456 сайтов. Сводка предоставляется на странице "aboutrotections" или через меню, вызываемое через клик на значок щита в адресной строке (вместо Show Report теперь показывается Protections Dashboard). В Uninstaller добавлена кнопка "Refresh Firefox", позволяющая сбросить в исходное состояние настройки и удалить все дополнения без потери накопившихся данных. В случае проблем пользователи часто пытаются решить их переустановкой браузера. Кнопка Refresh позволит добиться подобного эффекта не потеряв закладки, историю посещений, сохранённые пароли, Cookie, подключённые словари и данные для автозаполнения форм (при нажатии кнопки создаётся новый профиль и в него переносятся указанные БД). После нажатия Refresh будут потеряны дополнения, темы оформления, сведения о правах доступа, подключённые поисковые движки, локальные DOM-хранилища, сертификаты, изменённые настройки, пользовательские стили (userChrome, userContent). В показываемое для вкладок контекстное меню добавлены элементы для отмены закрытия нескольких вкладок, а также для закрытия вкладок справа от текущей и закрытия всех вкладок, кроме текущей. Обеспечено отключение срабатывания хранителя экрана во время осуществления видеозвонков и конференций на базе WebRTC. На платформе Windows для GPU Intel при любых разрешения экрана включена система композитинга WebRender, написанная на языке Rust и позволяющая добиться существенного увеличения скорости отрисовки и снижения нагрузки на CPU. WebRender выносит на сторону GPU операции отрисовки содержимого страницы, которые реализованы через выполняемые в GPU шейдеры. Ранее WebRender был включён на платформе Windows 10 для GPU Intel при использовании небольших экранных разрешений, а также на системах с APU AMD Raven Ridge, AMD Evergreen и на ноутбуках с видеокартами NVIDIA. В Linux WebRender пока активируется для карт Intel и AMD только в ночных сборках, и не поддерживается для карт NVIDIA. Для принудительного включения в about:config следует активировать настройки "gfx.webrender.all" и "gfx.webrender.enabled" или запустить Firefox с выставленной переменной окружения MOZ_WEBRENDER=1. До 100% доведена доля пользователей из Великобритании, для которых на странице новой вкладки включено отображение контента, рекомендованного сервисом Pocket. Ранее подобные страницы показывалась только пользователям из США, Канады и Германии. Оплаченные спонсорами блоки показывается только в США и явно помечены как реклама. Связанная с подбором контента персонализация выполняется на стороне клиента и без передачи сведений о пользователе третьим лицам (в браузер загружается весь список рекомендованных ссылок на текущий день, который ранжируется на стороне пользователя, отталкиваясь от данных истории посещений). Для отключения рекомендованного Pocket контента предусмотрена настройка в конфигураторе (Firefox Home Content/Recommended by Pocket) и опция "browser.newtabpage.activity-stream.feeds.topsites" в about:config. Включены патчи, влияющие на производительность и стабильность аппаратного ускорения декодирования видео при помощи VA-API (поддерживается только в окружениях на базе Wayland). Повышены требования к системным компонентам Linux. Для запуска Firefox в Linux теперь требуется как минимум Glibc 2.17, libstdc++ 4.8.1 и GTK+ 3.14. Следуя плану по прекращению поддержки устаревших криптоалгоритмов по умолчанию отключены все наборы шифров TLS на базе DHE (TLS_DHE_*, протокол обмена ключей Диффи — Хеллмана). Для снижения возможного негативного влияния от отключения DHE добавлено два новых набора шифров AES-GCM на базе SHA2. Отключена поддержка протоколов TLS 1.0 и TLS 1.1. Для обращения к сайтам по защищённому каналу связи сервер должен предоставить поддержку как минимум TLS 1.2. По данным Google в настоящее время около 0.5% загрузок web-страниц продолжает осуществляться с использованием устаревших версий TLS. Отключение произведено в соответствии с рекомендациями IETF (Internet Engineering Task Force). Причиной отказа от поддержки TLS 1.0/1.1 является отсутствие поддержки современных шифров (например ECDHE и AEAD) и требование поддержки старых шифров, надёжность которых на современном этапе развития вычислительной техники поставлена под сомнение (например, требуется поддержка TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA, для проверки целостности и аутентификации используется MD5 и SHA-1). Вернуть возможность работы с устаревшими версиями TLS можно через настройку security.tls.version.enable-deprecated = true или при помощи кнопки на странице с ошибкой, выводимой при заходе на сайт со старым протоколом. Существенно улучшено качество работы с экранными ридерами для людей с нарушением зрения (решились проблемы с позиционированием курсора, устранены подвисания, ускорена обработка очень больших таблиц и т.п.). Для пользователей с мигренью и эпилепсией сокращены анимационные эффекты, такие как подсвечивание вкладок и расширение поисковой панели. Для предприятий в групповые политики добавлены новые правила для настройки внешних приложений-обработчиков, отключения режима картинка-в-картинке, обязательности задания мастер-пароля. В JavaScript-движке SpiderMonkey обновлена подсистема обработки регулярных выражений, которая синхронизирована с реализацией из JavaScript-движка V8, применяемого в браузерах на основе проекта Сhromium. Изменение позволило реализовать поддержку следующих возможностей, связанных с регулярными выражениями: Именованные группы позволяют связать сопоставленные регулярным выражением части строки с определёнными именами вместо порядковых номеров совпадений (например, вместо "/(\d{4})-(\d{2})-(\d{2})/" можно указать "/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/" и получить доступ к году не через result[1], а через result.groups.year). Экранирование классов Unicode-символов добавляет конструкции \p{…} и \P{…}, например, \p{Number} определяет все возможные знаки с изображением цифр (включая символы вида ①), \p{Alphabetic} - буквы (в том числе иероглифы), \p{Math} - математические символы и т.п. Флаг dotAll приводит к срабатыванию маски "." в том числе для символов перевода строки. Режим Lookbehind позволяет определить в регулярном выражении, что один шаблон предшествует другому (например, сопоставить сумму в долларах без захвата знака доллара). Реализованы псевдоклассы CSS :is() и :where() для привязки CSS-правил к набору селекторов. Например, вместо header p:hover, main p:hover, footer p:hover {...} можно указать :is(header, main, footer) p:hover {...} Включены псевдоклассы CSS :read-only и :read-write для привязки к элементам форм (input или textarea), которые запрещено или разрешено редактировать. Добавлена поддержка метода Intl.ListFormat() для создания локализованных списков (например, замены "or" на "или", "and" на "и"). const lf = new Intl.ListFormat('en'); lf.format(['Frank', 'Christine', 'Flora']); // → 'Frank, Christine, and Flora' // при локали "ru" будет 'Frank, Christine и Flora' В метод Intl.NumberFormat добавлена поддержка форматирования единиц измерения, валют, научных и компактных обозначений (например, "Intl.NumberFormat('en', {style: 'unit', unit: 'meter-per-second'}"); Добавлен метод ParentNode.replaceChildren(), позволяющий заменить или очистить существующий дочерний узел. В ESR-ветке включена поддержка Service worker и Push API (в прошлом ESR-выпуске они были отключены). В WebAssembly добавлена поддержка импорта и экспорта 64-разрядных целых параметров функции, используя JavaScript-тип BigInt. Для WebAssembly также реализовано расширение Multi-value, позволяющее функции возвращать более одного значения. В консоли для web-разработчиков обеспечено детализированное журналирование ошибок, связанных с Promise, включая сведения об именах, стеках и свойствах, что существенно упрощает разбор ошибок при использовании таких фреймворков, как Angular. В инструментах для web-разработчиков значительно повышена производительность навигации по DOM при инспектировании сайтов, на которых используется очень много CSS-свойств. В отладчике JavaScript реализована возможность раскрытия сокращённых имён переменных на основе source-map при использовании точек журналирования (Log points), позволяющих в момент срабатывания метки сбрасывать в web-консоль информацию о номере строки в коде и значениях переменных. В интерфейсе инспектирования сети добавлены сведения о дополнениях, механизмах защиты от отслеживания и CORS-ограничениях (Cross-Origin Resource Sharing), ставших причиной блокировки запроса. Кроме новшеств и исправления ошибок в Firefox 78 устранена серия уязвимостей, из которых несколько помечены как критические, т.е. могут привести к выполнению кода злоумышленника при открытии специально оформленных страниц. В настоящее время информация с подробностями об исправленных проблемах безопасности недоступна, ожидается, что перечень уязвимостей будет опубликован в течение нескольких часов. 30.06.2020 https://www.opennet.ru/opennews/art.shtml?num=53263