26 августа 2020 года

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

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

  • Добавлена возможность сворачивания групп вкладок. Вкладки объединяются в группы при помощи контекстного меню и могут быть связаны с определённым цветом и меткой. При клике на метке группы связанные с ней вкладки скрываются и вместо них остаётся одна метка. Повторный клик на метке убирает скрытие.
  • Реализован предпросмотр содержимого вкладок. При наведении курсора на кнопку вкладки теперь показывается эскиз находящейся во вкладке страницы. Возможность пока активирована не для всех пользователей и может быть включена при помощи настройки "chrome://flags/#tab-hover-cards".
  • Добавлена возможность сохранения отредактированных PDF-форм, а также предложены настройки "chrome://flags#pdf-viewer-update", "chrome://flags/#pdf-form-save" и "chrome://flags/#pdf-two-up-view" для экспериментов с новым интерфейсом просмотра PDF-документов.
  • Добавлена возможность обмена ссылками при помощи QR-кодов. Для генерации QR-кода для текущей страницы в адресную строку помещена специальная пиктограмма, которая появляется при клике на адресную строку. Возможность пока активирована не для всех пользователей и может быть включена при помощи настройки "chrome://flags/#sharing-qr-code-generator".
  • На странице about:flags появилась опция "Omnibox UI Hide Steady-State URL Path, Query, and Ref" ("chrome://flags#omnibox-ui-hide-steady-state-url-path-query-and-ref-on-interaction"), позволяющая отключить отображение элементов пути и параметров запроса в адресной строке, оставив видимым только домен сайта. Скрытие осуществляется при начале взаимодействия со страницей (во время загрузки и пока пользователь не начал прокрутку показывается полный URL). После скрытия для просмотра полного URL предлагается кликнуть на адресной строке. Также доступна опция "chrome://flags#omnibox-ui-reveal-steady-state-url-path-query-and-ref-on-hover" для показа при наведении курсора. Доступная в контекстном меню настройка "Всегда показывать URL полностью", отменяет скрытие "https://", "www.", путей и параметров. По умолчанию скрытие пока активировано только для небольшого процента пользователей. В качестве мотива изменения указывается желание защитить пользователей от фишинга, манипулирующего параметрами в URL.
  • В планшетном режиме для устройств с сенсорными экранами включена горизонтальная навигация по открытым вкладкам, при которой кроме заголовков на вкладках отображаются крупные эскизы связанных со вкладками страниц. Вкладки можно перемещать и перегруппировывать экранными жестами. Отображение эскизов включается и выключается специальной кнопкой, размещённой рядом с адресной строкой и аватаром пользователя. Для отключения режима предусмотрены настройки "chrome://flags/#webui-tab-strip" и "chrome://flags/#scrollable-tabstrip".
  • В версии для Android при наборе в адресной строке в списке предлагаемых страниц обеспечен вывод подсказки для быстрого перехода к уже открытым вкладкам.
  • В версии для Android в контекстом меню ссылок, появляющемся при длительном удержании касания к ссылке, добавлены метки для выделения быстрых страниц. Скорость определяется на основе метрик Core Web Vitals, учитывающих сводные показатели времени загрузки, отзывчивости и стабильности содержимого.
  • Обеспечено блокирование небезопасной загрузки (без шифрования) исполняемых файлов и добавлен вывод предупреждений при небезопасной загрузке архивов (zip, iso и т.п.). В следующем выпуске ожидается блокировка архивов и вывод предупреждения для документов (docx, pdf и т.п.). В дальнейшем постепенно планируется полностью прекратить поддержку загрузки файлов без применения шифрования. Блокировка реализована, так как загрузка файлов без шифрования может использоваться для совершения вредоносных действий путём подмены содержимого в процессе MITM-атак.
  • Включена по умолчанию поддержка формата изображений AVIF (AV1 Image Format), в котором задействованы технологии внутрикадрового сжатия из формата кодирования видео AV1. Контейнер для распространения сжатых данных в AVIF полностью аналогичен HEIF. AVIF поддерживает как изображения в HDR (High Dynamic Range) и цветовом пространстве Wide-gamut, так и в стандартном динамическом диапазоне (SDR).
  • При компиляции сборок для Windows и macOS по умолчанию при вызове компиляторов MSVC и Clang включены оптимизации на основе результатов профилирования кода (PGO - Profile-guided optimization), позволяющие генерировать более оптимальный код на основе анализа особенностей выполнения кода. Включение PGO дало возможность ускорить загрузку вкладок приблизительно на 10% (ускорение прохождения теста Speedometer 2.0 в macOS на 7.7%, а в Windows на 11.4%). Отзывчивость интерфейса увеличилась в macOS на 3.9%, а в Windows на 7.3%.
  • Добавлен экспериментальный режим урезания активности фоновых вкладок ("Tab Throttling"), доступный через настройку "chrome://flags##intensive-wake-up-throttling" (включение по умолчанию ожидается в Chrome 86). При включении режима передача управления фоновым вкладкам (TaskQueues) уменьшается до 1 вызова в минуту, если страница находится в фоне более 5 минут.
  • Для всех категорий пользователей активирован режим снижения потребление ресурсов CPU когда окно браузера не находится в поле видимости пользователя. Chrome проверяет не перекрывается ли окно браузера другими окнами и исключает отрисовку пикселей в областях перекрытия.
  • Усилена защита от загрузки смешанного мультимедийного контента (когда на HTTPS-странице загружаются ресурсы по протоколу http://). На страницах, открытых по HTTPS, реализована автоматическая замена ссылок "http://" на "https://" в блоках, связанных с загрузкой изображений (ранее заменились скрипты и iframe, звуковые файлы и видео). Если изображение недоступно по https, то его загрузка блокируется (вручную можно отметить блокировку через меню, доступное через символ замка в адресной строке).
  • К TLS-сертификатам, выписанным начиная с 1 сентября 2020 года, будет применяться новое ограничение на срок действия - время жизни данных сертификатов не сможет превышать 398 дней (13 месяцев). Аналогичные ограничения применены в Firefox и Safari. Для сертификатов, полученных до 1 сентября, доверие будет сохранено, но ограничено 825 днями (2.2 года).
  • В режиме Origin Trials (экспериментальные возможности, требующие отдельной активации) добавлено несколько новых API. Origin Trial подразумевает возможность работы с указанным API из приложений, загруженных с localhost или 127.0.0.1, или после прохождения регистрации и получения специального токена, который действует ограниченное время для конкретного сайта.
  • Предложена концепция порталов для обеспечения бесшовной навигации между сайтами и вставки одной страницы в другую для предпросмотра содержимого перед переходом. Предложен новый тег <portal>, позволяющий отобразить другую страницу в форме вставки, при фокусе на которую, показанная во вставке страница будет переведена в состояние основного документа, внутри которого допускается навигация. В отличие от iframe вставка полностью изолирована от базовой страницы и обрабатывается как отдельный документ.
  • API Fetch Upload Streaming, позволяющем осуществлять fetch-запросы загрузкой содержимого в форме потока ReadableStream (ранее запрос требовал полной готовности содержимого, а теперь можно начать отправлять данные в форме потока, не дожидаясь полной готовности тела запроса). Например, web-приложение может начать отправлять данные web-формы как только пользователь начал набирать текст в поле ввода и когда набор будет завершён данные через fetch() уже будут отправлены. В том числе через новый API можно передавать звуковые и видео данные, генерируемые на стороне клиента.
  • API Declarative Shadow DOM для создания новых корневых веток в Shadow DOM (Архивная копия от 23 октября 2020 на Wayback Machine), например чтобы отделить импортируемый сторонний стиль элемента и связанную с ним подветку DOM от основного документа. Предложенный декларативный API позволяет обойтись для открепления веток DOM только HTML без необходимости написания кода на JavaScript.
  • Свойство RTCRtpEncodingParameters.adaptivePtime, позволяющего отправителю RTC-потоков (real-time communication) управлять включением адаптивного механизма отправки пакетов.
  • Упрощено предоставление постоянного хранилища для уже установленных приложений PWA (Progressive Web Apps) и TWA (Trusted Web Activities)Приложению достаточно вызвать метод navigator.storage.persist() и постоянное хранилище будет предоставлено автоматически.
  • Реализовано новое CSS-правило @property, позволяющее регистрировать собственные CSS-свойства с наследованием, проверкой типов и значениями по умолчанию. Действие @property аналогично ранее добавленному методу registerProperty().
  • Для систем с ОС Windows предоставлена возможность использования метода getInstalledRelatedApps() для определения установки PWA-приложений. Ранее данный мето работал только на платформе Android.
  • Для настольных систем реализована поддержка ярлыков приложений, позволяющих предоставить быстрый доступ к востребованным типовым действиям в приложении. Для создания ярлыков достаточно добавить элементы в манифест web-приложения в формате PWA (Progressive Web Apps). Ранее ярлыки приложений были доступны только на платформе Android.
  • Добавлено CSS-свойство content-visibility для управления видимостью содержимого для оптимизации отрисовки. При установке значения 'auto' видимость определяется браузером на основании близости элемента к границе видимой области. Значение 'hidden' позволяет полностью управлять отображением элемента из скриптов.
  • Добавлено CSS-свойство counter-set для установки определённого значения для существующих счётчиков. Новое CSS-свойство дополняет собой ранее доступные свойства counter-reset и counter-increment, применяемых для создания нового счётчика или увеличения существующего.
  • Добавлено CSS-свойство 'page', отражающее страницу при выводе на печать, а также свойство 'page-orientation' получения информации об ориентации страницы ('upright', 'rotate-left' и 'rotate-right'). Реализована поддержка обращения к страницам по именам, например "@page foobar {}".
  • Реализован API Event Timing для измерения задержек события до и после загрузки страницы.
  • В событии leavepictureinpicture теперь передаётся ссылка на pictureInPictureWindow для доступа к окну в режиме Picture-in-Picture.
  • При заполнении заголовка Referrer по умолчанию теперь применяется правило strict-origin-when-cross-origin (отправлять Referrer обрезанным на другие хосты, с которых загружаются ресурсы) вместо no-referrer-when-downgrade (Referrer заполняется при обращении с HTTPS на HTTP, но передаётся при загрузке ресурсов по HTTPS).
  • В API WebAuthn предложены новые методы getPublicKey(), getPublicKeyAlgorithm() и getAuthenticatorData().
  • В WebAssembly добавлена поддержка импорта и экспорта 64-разрядных целых параметров функции, используя JavaScript-тип BigInt.
  • В WebAssembly реализовано расширение Multi-value, позволяющее функции возвращать более одного значения.
  • Начальный (baseline) компилятор Liftoff для WebAssembly задействован для всех архитектур и платформ, а не только для систем Intel. Ключевое отличие Liftoff от ранее применяемого компилятора TurboFan в том, что Liftoff нацелен на достижение наибольшей скорости начальной компиляции, ценой низкой производительности генерируемого кода. Liftoff значительно проще TurboFan и генерирует готовый для запуска машинный код очень быстро, что позволяет почти сразу приступить к его выполнению, сведя задержку от компиляции к минимуму. Для ускорения чернового кода параллельно запускается фаза оптимизирующей перекомпиляции, которая выполняется с использованием компилятора Turbofan. После готовности оптимизированых машинных инструкций, начальный черновой вариант заменяется на более быстрый код. В сумме, за счёт снижения задержки перед началом выполнения, применение Liftoff привело к увеличению производительности тестового набора WebAssembly примерно на 20%.
  • В JavaScript добавлены новые операторы логического присвоения: "??=", "&&=" и "||=". Оператор "x ??= y" выполняет присвоение, только если "x" принимает значение null или undefined. Оператор "x ||= y" выполняет присвоение, только если "x" имеет значение FALSE, а в "x &&= y" - TRUE.
  • Добавлен метод String.prototype.replaceAll() (String#replaceAll), возвращающий новую строку (исходная строка не меняется), в которой на основании заданного шаблона выполнены замены всех совпадений. Шаблоны могут быть как простыми масками, так и регулярными выражениями.
  • Реализован метод Promise.any(), который возвращает первый выполненный Promise из списка.
  • Прекращено действие манифеста AppCache (технология для организации работы web-приложения в offline-режиме). В качестве причины называется желание избавиться от одного из векторов для совершения атак, связанных с межсайтовым скриптингом. Вместо AppCache рекомендуется использовать API Cache.
  • Запрещена передача Cookie в режиме SameSite=None для соединений без шифрования. Aтрибут SameSite указывается в заголовке Set-Cookie для управления передачей Cookie и по умолчанию выставлен в значение "SameSite=Lax", ограничивающее отправку Cookie для межсайтовых субзапросов, таких как запрос изображения или загрузка контента через iframe с другого сайта. Сайты могут переопределить применяемый по умолчанию режим SameSite, явно выставляя при установке Cookie значение SameSite=None. Значение SameSite=None для Cookie теперь может выставляться только в режиме Secure, который действует для соединений через HTTPS.
  • В инструментах для web-разработчиков добавлена поддержка редактирования стилей, созданных фреймворками CSS-in-JS при помощи API CSSOM (CSS Object Model), а также стилей добавленных из JavaScript. Панель аудита обновлена до выпуска Lighthouse 6.0, в котором добавлены новые метрики Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS) и Total Blocking Time (TBT).
  • В панели оценки производительности отображена информация о кэшировании результатов компиляции JavaScript. В случае навигации пользователя по странице в шкале обеспечен показ времени относительное начала навигации, а не начала записи.

Кроме нововведений и исправления ошибок в новой версии устранено 20 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity (Архивная копия от 28 октября 2020 на Wayback Machine), LibFuzzer (Архивная копия от 28 октября 2020 на Wayback Machine) и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 14 премий на сумму 10000 долларов США (одна премия $5000, три премии $1000 и четыре премии $500). Размер 6 вознаграждений пока не определён.

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Релиз Chrome 85», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.