Suicide
01.07.2020, 00:28
Состоялся релиз web-браузера Firefox 78 (https://www.mozilla.org/en-US/firefox/78.0/releasenotes/), а также мобильной версии Firefox 68.10 (https://www.mozilla.org/en-US/firefox/android/68.10.0/releasenotes/) для платформы Android. Выпуск Firefox 78 отнесён к категории веток с длительным сроком поддержки (ESR), обновления для которых выпускаются в течение года. Кроме того, сформировано обновление прошлой ветки (https://www.mozilla.org/en-US/firefox/organizations/all/) с длительным сроком поддержки 68.10.0 (https://www.mozilla.org/en-US/firefox/68.10.0/releasenotes/) (в дальнейшем ожидается ещё два обновления 68.11 и 68.12). В ближайшее время на стадию бета-тестирования (https://firefox.com/channel) перейдёт ветка Firefox 79, релиз которой намечен на 28 июля.
Основные (https://www.mozilla.org/en-US/firefox/78.0/releasenotes/) новшества (https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/78):
Расширена сводная страница (Protections Dashboard) с отчётами об эффективности работы механизмов защиты от отслеживания перемещений, проверки компрометации учётных данных и управления паролями. В новом выпуске появилась возможность просмотреть статистику использованию скомпрометированных учётных данных, а также отследить возможные пересечения сохранённых паролей с известными утечками пользовательских баз. Проверка осуществляется через интеграцию с базой данных проекта haveibeenpwned.com, включающей сведения о 9.7 миллиардах учётных записей, похищенных в результате взломов 456 сайтов. Сводка предоставляется на странице "aboutrotections" или через меню, вызываемое через клик на значок щита в адресной строке (вместо Show Report теперь показывается Protections Dashboard).https://www.opennet.ru/opennews/pics_base/0_1593530874.png
В Uninstaller добавлена кнопка "Refresh Firefox (https://support.mozilla.org/en-US/kb/refresh-firefox-reset-add-ons-and-settings)", позволяющая сбросить в исходное состояние настройки и удалить все дополнения без потери накопившихся данных. В случае проблем пользователи часто пытаются решить их переустановкой браузера. Кнопка Refresh позволит добиться подобного эффекта не потеряв закладки, историю посещений, сохранённые пароли, Cookie, подключённые словари и данные для автозаполнения форм (при нажатии кнопки создаётся новый профиль и в него переносятся указанные БД). После нажатия Refresh будут потеряны дополнения, темы оформления, сведения о правах доступа, подключённые поисковые движки, локальные DOM-хранилища, сертификаты, изменённые настройки, пользовательские стили (userChrome, userContent).https://www.opennet.ru/opennews/pics_base/0_1593531063.png
В показываемое для вкладок контекстное меню добавлены элементы для отмены закрытия нескольких вкладок, а также для закрытия вкладок справа от текущей и закрытия всех вкладок, кроме текущей.https://www.opennet.ru/opennews/pics_base/0_1593531225.png
Обеспечено отключение срабатывания хранителя экрана во время осуществления видеозвонков и конференций на базе WebRTC.
На платформе Windows для GPU Intel при любых разрешения экрана включена (https://wiki.mozilla.org/Platform/GFX/WebRender_Where) система композитинга WebRender (https://github.com/servo/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.
Включены (https://www.opennet.ru/opennews/art.shtml?num=53086) патчи, влияющие на производительность и стабильность аппаратного ускорения декодирования видео при помощи VA-API (поддерживается только в окружениях на базе Wayland).
Повышены требования к системным компонентам Linux. Для запуска Firefox в Linux теперь требуется как минимум Glibc 2.17, libstdc++ 4.8.1 и GTK+ 3.14.
Следуя плану по прекращению поддержки устаревших криптоалгоритмов по умолчанию отключены все наборы шифров TLS на базе DHE (TLS_DHE_*, протокол обмена ключей Диффи — Хеллмана). Для снижения возможного негативного влияния от отключения DHE добавлено два новых набора шифров AES-GCM на базе SHA2.
Отключена (https://www.opennet.ru/opennews/art.shtml?num=51586) поддержка протоколов TLS 1.0 и TLS 1.1. Для обращения к сайтам по защищённому каналу связи сервер должен предоставить поддержку как минимум TLS 1.2. По данным Google в настоящее время около 0.5% загрузок web-страниц продолжает осуществляться с использованием устаревших версий TLS. Отключение произведено в соответствии с рекомендациями (https://datatracker.ietf.org/doc/draft-ietf-tls-oldversions-deprecate/) 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 обновлена (https://www.opennet.ru/opennews/art.shtml?num=53173) подсистема обработки регулярных выражений, которая синхронизирована с реализацией из JavaScript-движка V8, применяемого в браузерах на основе проекта Сhromium. Изменение позволило реализовать поддержку следующих возможностей, связанных с регулярными выражениями:
Именованные группы (https://github.com/tc39/proposal-regexp-named-groups) позволяют связать сопоставленные регулярным выражением части строки с определёнными именами вместо порядковых номеров совпадений (например, вместо "/(\d{4})-(\d{2})-(\d{2})/" можно указать "/(?\d{4})-(?\d{2})-(?\d{2})/" и получить доступ к году не через result[1], а через result.groups.year).
Экранирование классов (https://github.com/tc39/proposal-regexp-unicode-property-escapes) Unicode-символов добавляет конструкции \p{…} и \P{…}, например, \p{Number} определяет все возможные знаки с изображением цифр (включая символы вида ①), \p{Alphabetic} - буквы (в том числе иероглифы), \p{Math} - математические символы и т.п.
Флаг dotAll (https://github.com/tc39/proposal-regexp-dotall-flag) приводит к срабатыванию маски "." в том числе для символов перевода строки.
Режим Lookbehind (https://github.com/tc39/proposal-regexp-lookbehind) позволяет определить в регулярном выражении, что один шаблон предшествует другому (например, сопоставить сумму в долларах без захвата знака доллара).
Реализованы псевдоклассы CSS :is() (https://developer.mozilla.org/en-US/docs/Web/CSS/:is) и :where() (https://developer.mozilla.org/en-US/docs/Web/CSS/:where) для привязки CSS-правил к набору селекторов. Например, вместо
header p:hover, main p:hover, footer p:hover {...}
можно указать
:is(header, main, footer) p:hover {...}
Включены псевдоклассы CSS :read-only (https://developer.mozilla.org/en-US/docs/Web/CSS/:read-only) и :read-write (https://developer.mozilla.org/en-US/docs/Web/CSS/:read-write) для привязки к элементам форм (input или textarea), которые запрещено или разрешено редактировать.
Добавлена поддержка метода Intl.ListFormat() (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/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 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat) добавлена поддержка форматирования единиц измерения, валют, научных и компактных обозначений (например, "Intl.NumberFormat('en', {style: 'unit', unit: 'meter-per-second'}");
Добавлен метод ParentNode.replaceChildren() (https://developer.mozilla.org/docs/Web/API/ParentNode/replaceChildren), позволяющий заменить или очистить существующий дочерний узел.
В ESR-ветке включена поддержка Service worker и Push API (в прошлом ESR-выпуске они были отключены).
В WebAssembly добавлена поддержка импорта и экспорта 64-разрядных целых параметров функции, используя JavaScript-тип BigInt. Для WebAssembly также реализовано расширение Multi-value (https://github.com/WebAssembly/multi-value), позволяющее (https://hacks.mozilla.org/2019/11/multi-value-all-the-wasm/) функции возвращать более одного значения.
В консоли для web-разработчиков обеспечено (https://hacks.mozilla.org/2020/06/new-in-firefox-78/) детализированное журналирование ошибок, связанных с Promise, включая сведения об именах, стеках и свойствах, что существенно упрощает разбор ошибок при использовании таких фреймворков, как Angular.https://www.opennet.ru/opennews/pics_base/0_1593534358.png (https://2r4s9p1yi1fa2jd7j43zph8r-wpengine.netdna-ssl.com/files/2020/06/Async-Errors.png)
В инструментах для web-разработчиков значительно повышена производительность навигации по DOM при инспектировании сайтов, на которых используется очень много CSS-свойств.
В отладчике JavaScript реализована возможность раскрытия сокращённых имён переменных на основе source-map при использовании точек журналирования (https://developer.mozilla.org/en-US/docs/Tools/Debugger/Set_a_logpoint) (Log points), позволяющих в момент срабатывания метки сбрасывать в web-консоль информацию о номере строки в коде и значениях переменных.
В интерфейсе инспектирования сети добавлены сведения о дополнениях, механизмах защиты от отслеживания и CORS-ограничениях (Cross-Origin Resource Sharing), ставших причиной блокировки запроса.https://www.opennet.ru/opennews/pics_base/0_1593534442.png (https://2r4s9p1yi1fa2jd7j43zph8r-wpengine.netdna-ssl.com/files/2020/06/Blocked-Requests.png)
Кроме новшеств и исправления ошибок в Firefox 78 устранена серия уязвимостей (https://www.mozilla.org/security/known-vulnerabilities/firefox.html#firefox78), из которых несколько помечены как критические, т.е. могут привести к выполнению кода злоумышленника при открытии специально оформленных страниц. В настоящее время информация с подробностями об исправленных проблемах безопасности недоступна, ожидается, что перечень уязвимостей будет опубликован в течение нескольких часов.
30.06.2020
https://www.opennet.ru/opennews/art.shtml?num=53263
Основные (https://www.mozilla.org/en-US/firefox/78.0/releasenotes/) новшества (https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/78):
Расширена сводная страница (Protections Dashboard) с отчётами об эффективности работы механизмов защиты от отслеживания перемещений, проверки компрометации учётных данных и управления паролями. В новом выпуске появилась возможность просмотреть статистику использованию скомпрометированных учётных данных, а также отследить возможные пересечения сохранённых паролей с известными утечками пользовательских баз. Проверка осуществляется через интеграцию с базой данных проекта haveibeenpwned.com, включающей сведения о 9.7 миллиардах учётных записей, похищенных в результате взломов 456 сайтов. Сводка предоставляется на странице "aboutrotections" или через меню, вызываемое через клик на значок щита в адресной строке (вместо Show Report теперь показывается Protections Dashboard).https://www.opennet.ru/opennews/pics_base/0_1593530874.png
В Uninstaller добавлена кнопка "Refresh Firefox (https://support.mozilla.org/en-US/kb/refresh-firefox-reset-add-ons-and-settings)", позволяющая сбросить в исходное состояние настройки и удалить все дополнения без потери накопившихся данных. В случае проблем пользователи часто пытаются решить их переустановкой браузера. Кнопка Refresh позволит добиться подобного эффекта не потеряв закладки, историю посещений, сохранённые пароли, Cookie, подключённые словари и данные для автозаполнения форм (при нажатии кнопки создаётся новый профиль и в него переносятся указанные БД). После нажатия Refresh будут потеряны дополнения, темы оформления, сведения о правах доступа, подключённые поисковые движки, локальные DOM-хранилища, сертификаты, изменённые настройки, пользовательские стили (userChrome, userContent).https://www.opennet.ru/opennews/pics_base/0_1593531063.png
В показываемое для вкладок контекстное меню добавлены элементы для отмены закрытия нескольких вкладок, а также для закрытия вкладок справа от текущей и закрытия всех вкладок, кроме текущей.https://www.opennet.ru/opennews/pics_base/0_1593531225.png
Обеспечено отключение срабатывания хранителя экрана во время осуществления видеозвонков и конференций на базе WebRTC.
На платформе Windows для GPU Intel при любых разрешения экрана включена (https://wiki.mozilla.org/Platform/GFX/WebRender_Where) система композитинга WebRender (https://github.com/servo/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.
Включены (https://www.opennet.ru/opennews/art.shtml?num=53086) патчи, влияющие на производительность и стабильность аппаратного ускорения декодирования видео при помощи VA-API (поддерживается только в окружениях на базе Wayland).
Повышены требования к системным компонентам Linux. Для запуска Firefox в Linux теперь требуется как минимум Glibc 2.17, libstdc++ 4.8.1 и GTK+ 3.14.
Следуя плану по прекращению поддержки устаревших криптоалгоритмов по умолчанию отключены все наборы шифров TLS на базе DHE (TLS_DHE_*, протокол обмена ключей Диффи — Хеллмана). Для снижения возможного негативного влияния от отключения DHE добавлено два новых набора шифров AES-GCM на базе SHA2.
Отключена (https://www.opennet.ru/opennews/art.shtml?num=51586) поддержка протоколов TLS 1.0 и TLS 1.1. Для обращения к сайтам по защищённому каналу связи сервер должен предоставить поддержку как минимум TLS 1.2. По данным Google в настоящее время около 0.5% загрузок web-страниц продолжает осуществляться с использованием устаревших версий TLS. Отключение произведено в соответствии с рекомендациями (https://datatracker.ietf.org/doc/draft-ietf-tls-oldversions-deprecate/) 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 обновлена (https://www.opennet.ru/opennews/art.shtml?num=53173) подсистема обработки регулярных выражений, которая синхронизирована с реализацией из JavaScript-движка V8, применяемого в браузерах на основе проекта Сhromium. Изменение позволило реализовать поддержку следующих возможностей, связанных с регулярными выражениями:
Именованные группы (https://github.com/tc39/proposal-regexp-named-groups) позволяют связать сопоставленные регулярным выражением части строки с определёнными именами вместо порядковых номеров совпадений (например, вместо "/(\d{4})-(\d{2})-(\d{2})/" можно указать "/(?\d{4})-(?\d{2})-(?\d{2})/" и получить доступ к году не через result[1], а через result.groups.year).
Экранирование классов (https://github.com/tc39/proposal-regexp-unicode-property-escapes) Unicode-символов добавляет конструкции \p{…} и \P{…}, например, \p{Number} определяет все возможные знаки с изображением цифр (включая символы вида ①), \p{Alphabetic} - буквы (в том числе иероглифы), \p{Math} - математические символы и т.п.
Флаг dotAll (https://github.com/tc39/proposal-regexp-dotall-flag) приводит к срабатыванию маски "." в том числе для символов перевода строки.
Режим Lookbehind (https://github.com/tc39/proposal-regexp-lookbehind) позволяет определить в регулярном выражении, что один шаблон предшествует другому (например, сопоставить сумму в долларах без захвата знака доллара).
Реализованы псевдоклассы CSS :is() (https://developer.mozilla.org/en-US/docs/Web/CSS/:is) и :where() (https://developer.mozilla.org/en-US/docs/Web/CSS/:where) для привязки CSS-правил к набору селекторов. Например, вместо
header p:hover, main p:hover, footer p:hover {...}
можно указать
:is(header, main, footer) p:hover {...}
Включены псевдоклассы CSS :read-only (https://developer.mozilla.org/en-US/docs/Web/CSS/:read-only) и :read-write (https://developer.mozilla.org/en-US/docs/Web/CSS/:read-write) для привязки к элементам форм (input или textarea), которые запрещено или разрешено редактировать.
Добавлена поддержка метода Intl.ListFormat() (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/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 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat) добавлена поддержка форматирования единиц измерения, валют, научных и компактных обозначений (например, "Intl.NumberFormat('en', {style: 'unit', unit: 'meter-per-second'}");
Добавлен метод ParentNode.replaceChildren() (https://developer.mozilla.org/docs/Web/API/ParentNode/replaceChildren), позволяющий заменить или очистить существующий дочерний узел.
В ESR-ветке включена поддержка Service worker и Push API (в прошлом ESR-выпуске они были отключены).
В WebAssembly добавлена поддержка импорта и экспорта 64-разрядных целых параметров функции, используя JavaScript-тип BigInt. Для WebAssembly также реализовано расширение Multi-value (https://github.com/WebAssembly/multi-value), позволяющее (https://hacks.mozilla.org/2019/11/multi-value-all-the-wasm/) функции возвращать более одного значения.
В консоли для web-разработчиков обеспечено (https://hacks.mozilla.org/2020/06/new-in-firefox-78/) детализированное журналирование ошибок, связанных с Promise, включая сведения об именах, стеках и свойствах, что существенно упрощает разбор ошибок при использовании таких фреймворков, как Angular.https://www.opennet.ru/opennews/pics_base/0_1593534358.png (https://2r4s9p1yi1fa2jd7j43zph8r-wpengine.netdna-ssl.com/files/2020/06/Async-Errors.png)
В инструментах для web-разработчиков значительно повышена производительность навигации по DOM при инспектировании сайтов, на которых используется очень много CSS-свойств.
В отладчике JavaScript реализована возможность раскрытия сокращённых имён переменных на основе source-map при использовании точек журналирования (https://developer.mozilla.org/en-US/docs/Tools/Debugger/Set_a_logpoint) (Log points), позволяющих в момент срабатывания метки сбрасывать в web-консоль информацию о номере строки в коде и значениях переменных.
В интерфейсе инспектирования сети добавлены сведения о дополнениях, механизмах защиты от отслеживания и CORS-ограничениях (Cross-Origin Resource Sharing), ставших причиной блокировки запроса.https://www.opennet.ru/opennews/pics_base/0_1593534442.png (https://2r4s9p1yi1fa2jd7j43zph8r-wpengine.netdna-ssl.com/files/2020/06/Blocked-Requests.png)
Кроме новшеств и исправления ошибок в Firefox 78 устранена серия уязвимостей (https://www.mozilla.org/security/known-vulnerabilities/firefox.html#firefox78), из которых несколько помечены как критические, т.е. могут привести к выполнению кода злоумышленника при открытии специально оформленных страниц. В настоящее время информация с подробностями об исправленных проблемах безопасности недоступна, ожидается, что перечень уязвимостей будет опубликован в течение нескольких часов.
30.06.2020
https://www.opennet.ru/opennews/art.shtml?num=53263