Компания Google представила (https://chromereleases.googleblog.com/2017/06/stable-channel...) релиз web-браузера Chrome 59 (http://www.google.com/chrome). Одновременно доступен (https://www.chromium.org/developers/calendar) стабильный выпуск свободного проекта Chromium (http://dev.chromium.org/), выступающего основой Chrome. Браузер Chrome отличается (https://code.google.com/p/chromium/wiki/ChromiumBrowserVsGoo...) использованием логотипов Google, возможностью загрузки модуля Flash по запросу, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого видеоконтента, системой автоматической установки обновлений и передачей при поиске RLZ-параметров (https://www.opennet.ru/opennews/art.shtml?num=26822).Основные (https://productforums.google.com/forum/#!forum/chrome) изменения (https://plus.google.com/+FrancoisBeaufort/posts) в (https://blog.chromium.org/2017/05/chrome-59-beta-headless-ch...) Chrome 59 (https://developers.google.com/web/updates/2017/):
- Для платформы Linux сборка по умолчанию теперь осуществляется с использованием библиотеки GTK3+, что значительно улучшило сочетаемость браузера с темами оформления современных дистрибутивов на основе GTK3+. Например, в интерфейсе теперь корректно применяются цветовые схемы, используются более современные системные виджеты, корректно оформляются контекстные меню и всплывающие диалоги;
- Представлено новое оформление раздела настроек, в котором задействован стиль Material Design. Новый интерфейс примечателен более широкой и заметной строкой поиска, новыми пиктограммами в меню в, левой части экрана, слиянием секций "Sign In" и "People", упрощением раздела настройки контента и переименованием ряда секций ("Search" переименован в "Search Engine", "Privacy" в "Privacy and Security"). Настройка работы через прокси перемещена в секцию "System", настройки размеров шрифта и масштабирования в секцию "Appearance", а настройки сертификатов HTTPS в "Privacy and Security";
- В JavaScript-движке V8 задействована (https://v8project.blogspot.ru/2017/05/launching-ignition-and...) новая упрощённая схема компиляции, основанная (https://www.opennet.ru/opennews/art.shtml?num=46051) на применении интерпретатора Ignition (http://v8project.blogspot.ru/2016/08/firing-up-ignition-inte...) и JIT-компилятора Turbofan (https://www.opennet.ru/opennews/art.shtml?num=42577). Ранее в V8 использовался достаточно сложный многоуровневый процесс компиляции JavaScript, в котором одноразовый код интерпретировался на первой стадии, после чего генерировался машинный код для JIT, который периодически обновлялся и улучшался двумя оптимизирующими JIT-компиляторами. Новая схема подразумевает применение на первой стадии только интерпретатора с байткодом с подключением по мере выполнения кода JIT-компилятора Turbofan.
Таким образом, полностью исключена фаза упреждающей генерации неоптимизированного машинного кода JIT-компилятром FullCodegen, а также удалены привязки к старому JIT-компилятору Crankshaft и лишняя логика разветвлений. Вместо машинного кода интерпретатор Ignition использует байткод, выполняемый в регистровой виртуальной машине, который требует в 2-4 раза меньше памяти, а по скорости выполнения в реальных приложениях этот байткод очень близок к неоптимизированному машинному коду. Задействование по умолчанию новой схемы привело к повышению производительности выполнения JavaScript-приложений и снижению потребления памяти;
- Добавлен (https://developers.google.com/web/updates/2017/04/headless-c...) режим работы без вывода на экран (headless), который позволяет запускать браузер на системах без монитора и графической подсистемы, например, на серверах. Режим активируется через запуск с опцией "--headless". В качестве областей применения называется автоматизированное тестирование при помощи Selenium (http://www.seleniumhq.org/) и возможность автоматизированной обработки страниц с использованием полноценной платформы Chromium, например, можно загрузить страницу, извлечь нужные элементы DOM и сохранить результат в виде картинки (или PDF). Для управления предлагается использовать протокол удалённой отладки (RemoteDebug (http://remotedebug.org/));
- Организован вывод уведомлений через штатную систему нотификации macOS, вместо вывода уведомлений в браузере;
- В Service Worker добавлен новый API Navigation Preload (https://developers.google.com/web/updates/2017/02/navigation...), позволяющий организовать упреждающее выполнение навигационных запросов во время запуска Service worker, сведя к минимуму ожидание загрузки элементов навигации;
- Добавлено свойство MediaError.message (https://html.spec.whatwg.org/multipage/embedded-content.html...) для извлечения детальной информации об ошибке, возникшей в процессе воспроизведения мультимедийного контейнта в тегах audio и video;
- Streams API расширено функциями WritableStreams (https://streams.spec.whatwg.org/#ws-intro), предоставляющими дополнительный уровень абстракции для организации записи потоковых данных в канал, имеющий встроенные средства ограничения потока. Также добавлена возможность создания неименованных каналов (pipe) между ReadableStreams и WritableStreams через использование методов pipeTo() (https://streams.spec.whatwg.org/#rs-pipe-to) и pipeThrough() (https://streams.spec.whatwg.org/#rs-pipe-through);
- Разработчикам предоставлена возможность применения функции getInstalledRelatedApps (https://developers.google.com/web/updates/2017/04/getinstall...) для консолидации push-уведомлений между web-страницей и приложениями;
- В API Image Capture (https://developers.google.com/web/updates/2016/12/imagecapture) добавлены средства для создания снимков высокого разрешения и полного управления настройками камеры, такими как коэффициент увеличения, ISO и баланс белого;
- Для CSS-файлов теперь можно определять (https://www.w3.org/TR/referrer-policy/) отдельные правила обработки
Referrer через соответствующий HTTP-заголовок, вместо наследования правил, заданных в документе;
- Для того чтобы не раздражать пользователя постоянными запросами, Chrome теперь автоматически временно (на одну неделю) блокирует (https://www.chromestatus.com/feature/6443143280984064) запросы на подтверждение операций, в случае если пользователь уже три раза отклонил этот запрос;
- Добавлена новая CSP (Content Security Policy) директива worker-src (https://w3c.github.io/webappsec-csp/#directive-worker-src), позволяющая ограничить URL только загрузкой Worker, SharedWorker или ServiceWorker;
- Запрещён вывод запросов для предоставления полномочий на вывод уведомлений, отправленных без шифрования по HTTP;
- Для повышения защиты обеспечено блокирование запросов к ресурсам, которые содержат встроенные параметры аутентификации. Подобные запросы теперь приводят к выводу ошибки;
- Обеспечено блокирование запросов к URL "ftp://" из документов, открытых по HTTP и HTTPS;
- Переведена в разряд устаревших возможность вызова Notification.requestPermission() из не первичных фреймов;
- Временно отключена (https://groups.google.com/a/chromium.org/forum/#!searchin/bl...) по умолчанию поддержка расширения протокола SDCH (https://datatracker.ietf.org/doc/draft-lee-sdch-spec/) (Shared Dictionary Compression over HTTP), до стандартизации стабильного API.
Кроме нововведений и исправления ошибок в новой версии устранено 30 уязвимостей (https://bugs.chromium.org/p/chromium/issues/list?can=1&q=lab...). Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer (http://code.google.com/p/address-sanitizer/wiki/AddressSanit...), MemorySanitizer (https://code.google.com/p/memory-sanitizer/wiki/MemorySanitizer), Control Flow Integrity (https://sites.google.com/a/chromium.org/dev/dev...
URL: https://chromereleases.googleblog.com/2017/06/stable-channel...
Новость: http://www.opennet.ru/opennews/art.shtml?num=46658