Выпуск web-браузера Chrome 59

Компания Google представила релиз web-браузера Chrome 59. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается использованием логотипов Google, возможностью загрузки модуля Flash по запросу, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого видеоконтента, системой автоматической установки обновлений и передачей при поиске RLZ-параметров.

Основные изменения в Chrome 59:

  • Для платформы Linux сборка по умолчанию теперь осуществляется с использованием библиотеки GTK3+, что значительно улучшило сочетаемость браузера с темами оформления современных дистрибутивов на основе GTK3+. Например, в интерфейсе теперь корректно применяются цветовые схемы, используются более современные системные виджеты, корректно оформляются контекстные меню и всплывающие диалоги;
  • Представлено новое оформление раздела настроек, в котором задействован стиль Material Design. Новый интерфейс примечателен более широкой и заметной строкой поиска, новыми пиктограммами в меню в левой части экрана, слиянием секций «Sign In» и «People», упрощением раздела настройки контента и переименованием ряда секций («Search» переименован в «Search Engine», «Privacy» в «Privacy and Security»). Настройки работы через прокси перемещены в секцию «System», настройки размеров шрифта и масштабирования в секцию «Appearance», а настройки сертификатов HTTPS в «Privacy and Security»; 0_1496735253.png 0_1496735276.png
  • В JavaScript-движке V8 задействована новая упрощённая схема компиляции, основанная на применении интерпретатора Ignition и JIT-компилятора Turbofan. Ранее в V8 использовался достаточно сложный многоуровневый процесс компиляции JavaScript, в котором одноразовый код интерпретировался на первой стадии, после чего генерировался машинный код для JIT, который периодически обновлялся и улучшался двумя оптимизирующими JIT-компиляторами. Новая схема подразумевает применение на первой стадии нового быстрого интерпретатора с байткодом и подключения по мере выполнения кода JIT-компилятора Turbofan.

    Таким образом, полностью исключена фаза упреждающей генерации неоптимизированного машинного кода JIT-компилятром FullCodegen, а также удалены привязки к старому JIT-компилятору Crankshaft и лишняя логика разветвлений. Вместо машинного кода интерпретатор Ignition использует байткод, выполняемый в регистровой виртуальной машине, который требует в 2–4 раза меньше памяти, а по скорости выполнения в реальных приложениях этот байткод очень близок к неоптимизированному машинному коду. Задействование по умолчанию новой схемы привело к повышению производительности выполнения JavaScript-приложений и снижению потребления памяти;

    0_1496729272.png 0_1496729250.png
  • Добавлен режим работы без вывода на экран (headless), который позволяет запускать браузер на системах без монитора и графической подсистемы, например, на серверах. Режим активируется через запуск с опцией »--headless». В качестве областей применения называется автоматизированное тестирование при помощи Selenium и возможность автоматизированной обработки страниц с использованием полноценной платформы Chromium, например, можно загрузить страницу, извлечь нужные элементы DOM и сохранить результат в виде картинки (или PDF). Для управления предлагается использовать протокол удалённой отладки (RemoteDebug);
  • Добавлена экспериментальная страница со всеми внутренними настройками (chrome://prefs-internals); 0_1496735463.png
  • В экспериментальном режиме (включается в chrome://flags/#enable-md-extensions) представлено новое оформление интерфейса управления дополнениями, приведённое в соответствие с концепцией Material Design; 0_1496735582.png
  • Организован вывод уведомлений через штатную систему нотификации macOS, вместо вывода уведомлений в браузере; 0_1496731231.png
  • В Service Worker добавлен новый API Navigation Preload, позволяющий организовать упреждающее выполнение навигационных запросов во время запуска Service worker, сведя к минимуму ожидание загрузки элементов навигации;
  • Добавлено свойство MediaError.message для извлечения детальной информации об ошибке, возникшей в процессе воспроизведения мультимедийного контейнта в тегах audio и video;
  • Streams API расширен функциями WritableStreams, предоставляющими дополнительный уровень абстракции для организации записи потоковых данных в канал, имеющий встроенные средства ограничения потока. Также добавлена возможность создания неименованных каналов (pipe) между ReadableStreams и WritableStreams через использование методов pipeTo () и pipeThrough ();
  • Разработчикам предоставлена возможность применения функции getInstalledRelatedApps для консолидации push-уведомлений между web-страницей и приложениями;
  • В API Image Capture добавлены средства для создания снимков высокого разрешения и полного управления настройками камеры, такими как коэффициент увеличения, ISO и баланс белого;
  • Для CSS-файлов теперь можно определять отдельные правила обработки Referrer через HTTP-заголовок Referrer-Policy, вместо наследования правил, заданных в документе;
  • Для того чтобы не раздражать пользователя постоянными запросами, Chrome теперь автоматически временно (на одну неделю) блокирует запросы на подтверждение операций, в случае если пользователь уже три раза отклонил этот запрос;
  • Добавлена новая CSP (Content Security Policy) директива worker-src, позволяющая ограничить URL только загрузкой Worker, SharedWorker или ServiceWorker;
  • Запрещён вывод запросов для предоставления полномочий на вывод уведомлений, отправленных без шифрования по HTTP;
  • Для повышения защиты обеспечено блокирование запросов к ресурсам, которые содержат встроенные параметры аутентификации. Подобные запросы теперь приводят к выводу ошибки;
  • Обеспечено блокирование запросов к URL «ftp://» из документов, открытых по HTTP и HTTPS;
  • Переведена в разряд устаревших возможность вызова Notification.requestPermission () из не первичных фреймов;
  • Временно отключена по умолчанию поддержка расширения SDCH (Shared Dictionary Compression over HTTP), до стандартизации стабильного API.

Кроме нововведений и исправления ошибок в новой версии устранено 30 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity и LibFuzzer. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе, за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 16 премий на сумму 23.5 тысяч долларов США (одна премия $7500, две премии $3000, , две премии $2000, пять премий $1000 и две премии $500). Размер четырёх вознаграждений пока не определён.

© OpenNet