Компания Google представила релиз web-браузера Chrome 71. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается использованием логотипов Google, возможностью загрузки модуля Flash по запросу, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого видеоконтента, системой автоматической установки обновлений и передачей при поиске RLZ-параметров.
Основные изменения в Chrome 71:
- Добавлена система блокирования вводящих в заблуждение рекламных блоков. В случае выявления на сайте мошеннической рекламы, Chrome теперь блокирует всю рекламу на проблемном сайте. В качестве примеров недопустимой рекламы упоминаются перекрытие контента с фиктивными кнопками закрытия, стимулирование кликов обманным путём (например, оформление блоков в виде системных диалогов, предупреждений или уведомлений), не соответствие заявленному поведению (например, при нажатии на кнопку просмотра видео предлагается установить пакет с приложением), симуляция фиктивных форм ввода, автоматический проброс без явных действий пользователя и т.д.;
- Для предотвращения мошеннических действий и блокирования попыток навязывания установки непрошенных дополнений, дополнения теперь можно установить только после перехода в каталог Chrome Web Store. Inline-режим, позволяющий начать установку дополнений без перехода в каталог дополнений, больше не поддерживается. Вместо начала процесса установки вызов chrome.webstore.install() из JavaScript-кода на сайте теперь будет приводить к открытию новой вкладки со страницей дополнения в каталоге Chrome Web Store;
- Добавлена блокировка, препятствующая выводу звука при помощи Speech Synthesis API до активных действий пользователя со страницей. Вывод звука через Web Audio API теперь подпадает под правила блокировки автоматического воспроизведения звука;
- Система автозаполнения форм теперь игнорирует формы ввода, загруженные не через HTTPS или HTTP;
- Для видео, выводимого при помощи API MediaStream, добавлено контекстное меню и элементы управления воспроизведением;
- Добавлена функция Intl.RelativeTimeFormat() для форматирование времени в текстовом представлении с учётом особенностей различных языков. Например, при выборе английского языка (rtf = new Intl.RelativeTimeFormat('en')) вызов rtf.format(3.14, 'second') приведёт к выводу 'in 3.14 seconds', а rtf.format(-15, 'minute') - '15 minutes ago'. В случае выбора русского языка, соответственно, будут выданы фразы 'через 3,14 секунд' и '15 минут назад';
- В метод Element.requestFullscreen() добавлен новый параметр navigationUI , который может принимать значения "auto", "show" и "hide" для управления отображением навигационной панели в полноэкранном режиме (пока работает только для Android);
- В Permission API добавлен новый параметр 'persistent-storage', обеспечивающий вывод запроса на подтверждения полномочий в случае использования web-приложением API для постоянного хранения данных на стороне пользователя;
- Реализована поддержка обработки событий масштабирования "щипком" на тачпаде в асинхронном режиме, позволившая поднять производительность данной операции;
- Добавлена поддержка цветных шрифтов COLR/CPAL, представляющих собой подмножество шрифтов OpenType, содержащих помимо векторных глифов слой c информацией о палитре;
- В JavaScript-движке V8 удалось примерно на 200 Кб для каждого процесса снизить потребление памяти, благодаря преобразованию обработчиков байткода во встраиваемые функции. Проведена оптимизация применения локальных замыканий в контексте функций (например, "a.map(y => y + x)"), позволившая в повысить производительность подобных операций до 40%;
- Предложен дополнительный синтаксис определения цветных градиентов в CSS. В качестве альтернативы выражению "linear-gradient(45deg, black 25%, black 50%, white 50%, white 75%)" теперь можно использовать объединённый формат "linear-gradient(45deg, black 25% 50%, white 50% 75%)";
- Добавлены API TextEncoderStream и TextDecoderStream, упрощающие преобразование потоков с бинарными данными в текст и обратно;
Кроме нововведений и исправления ошибок в новой версии устранено 43 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 34 премии на сумму 59 тысяч долларов США (по одной премии в $8000 и $6000, две премии $5000, шесть премий $3000, четыре премии $2000, шесть премий $1000 и шесть премий $500). Размер 8 вознаграждений пока не определён.