Компания Google представи версия 95 на уеб браузера Chrome. Също така е налична стабилна версия на свободния проект Chromium, който е основата на Chrome. Браузерът Chrome се отличава с използването на логотипите на Google, наличие на система за изпращане на известия при срив, модули за възпроизвеждане на защитено видео съдържание (DRM), система за автоматично инсталиране на обновления и предаване на RLZ параметри при търсене. В съответствие с новия 4-седмичен цикъл на разработка следващата версия на Chrome 96 е планирана за 16 ноември. За онези, на които им е необходимо повече време за обновление, се поддържа отделна версия Extended Stable, която има 8-седмичен период, в който е изготвено обновление за предишната версия Chrome 94.
Основни промени в Chrome 95:
- За потребителите на Linux, Windows, macOS и ChromeOS е предложена нова странична лента, която се показва отдясно на съдържанието и се активира при клик върху специална иконка в адресната лента. В лентата се извежда резюме с отметки и списък за четене. Промяната не е активирана за всички потребители, за активиране може да се използва настройката «chrome://flags/#side-panel».

- Внедрен е изричен запит за позволение за запазване на адреси, въведени в уеб формуляри, за по-късна употреба в системата за автоматично попълване на формуляри. При определяне наличието на адреси в формуларите на потребителя сега се показва диалог, позволяващ запазването на адреса, редактиране, обновяване на преди това запазен адрес или отказ от запазването.
- Премахнат е кодът за поддръжка на протокола FTP. В Chrome 88 поддръжката на FTP беше деактивирана по подразбиране, но беше оставен флаг за неговото възстановяване.
- Поддръжката на URL с имена на хостове, завършващи на цифра, но не съответстващи на адреси IPv4, е прекратена. Например, URL «http://127.1/», «http://foo.127.1/» и «http://127.0.0.0.1» сега ще се считат за некоректни.
- За WebAssembly е реализирана възможност за създаване на обработчици на изключения, които могат да прихващат изпълнението в случай на възникване на изключение при изпълнение на определен код. Поддържа се както прихващането на известни изключения от модула WebAssembly, така и изключения по време на извикване на импортируеми функции. За прихващането на изключения модулът WebAssembly трябва да бъде компилиран от компилатор, който поддържа изключения, като Emscripten.
Отбелязва се, че обработката на изключения на ниво WebAssembly позволява значително да се намали размерът на генерирания код в сравнение с обработката на изключения чрез JavaScript. Например, сборката на оптимизатора Binaryen с обработка на изключения чрез JavaScript води до увеличение на кода с 43%, докато чрез WebAssembly — само с 9%. Освен това, при използване на режим на оптимизация “-O3” кодът с обработка на изключения чрез WebAssembly практически не се различава по производителност от кода без обработчици на изключения, докато обработката на изключения с JavaScript води до забавяне на изпълнението с 30%.
- Забранено е съвместното използване на модули WebAssembly между различни домейни (cross-origin) при обработка на един сайт.
- В режима Origin Trials (експериментални функции, изискващи отделна активация) са добавени няколко нови API. Origin Trial предполага възможността за работа с определен API от приложения, заредени от localhost или 127.0.0.1, или след регистрация и получаване на специален токен, който е валиден за ограничен период от време за конкретен сайт.
- Включено е съкращаване на информацията в HTTP заглавката User-Agent и JavaScript параметрите navigator.userAgent, navigator.appVersion и navigator.platform. В заглавката остават само данни за името на браузъра, значителната версия на браузъра, платформата и типа устройство (мобилен телефон, ПК, таблет). За получаване на допълнителни данни, като точна версия и разширени данни за платформата, е необходимо да се използва API User Agent Client Hints. Началото на съкращаването на User-Agent на системите на обикновените потребители е планирано за версия Chrome 102, която ще бъде пусната след половин година.
- Предложена е възможността за създаване на дескриптори за достъп (Access Handles) за API File System Access, позволяващи уеб приложенията да четат и записват данни директно в файлове и директории на устройството на потребителя. За да се съкрати начинът, по който уеб приложенията взаимодействат с файловата система, компанията Google планира да обедини API File System Access и Storage Foundation. Като подготвителен етап към такава интеграция, е предложена поддръжка на дескриптори за достъп, допълващи методите на работа на базата на файлови дескриптори с разширени възможности като задаване на блокировки за запис от други процеси и създаване на отделни потоци за запис и четене, включително поддръжка на четене и запис от работни потоци в синхронен режим.
- Стабилизиран и предложен по подразбиране API Secure Payment Confirmation с реализиране на новото разширение 'payment', осигуряващо допълнително потвърждение на извършваната платежна операция. Проверяващата страна, например банката, има възможност да генерира публичен ключ PublicKeyCredential, който може да бъде поискан от продавача за допълнително безопасно потвърждение на плащането чрез API Payment Request, използвайки метода на плащане 'secure-payment-confirmation'.
- В callback-виклиците, установени чрез конструктора PerformanceObserver, е реализирана предаване на свойството droppedEntriesCount, позволяващо да се разбере колко метрики за производителността на сайта са били отхвърлени поради това, че не са се вместили в предоставения буфер.
- Добавен е API EyeDropper, позволяващ да се извика предоставения от браузъра интерфейс за определяне на цвета на произволни пиксели на екрана, което може да бъде приложено, например, в графични редактори, реализирани под формата на уеб приложения. const eyeDropper = new EyeDropper(); const result = await eyeDropper.open(); // result = {sRGBHex: '#160731'}
- Добавена е функция self.reportError(), позволяваща на скриптовете да извеждат грешки на конзолата, емитирайки възникването на неуловимо изключение.
- Добавен е API URLPattern, за проверка на съвпадение на URL с определен шаблон, който, например, може да бъде използван за разбиране на връзки и за пренасочване на заявки към обработващи програми в service worker. const p = new URLPattern({ protocol: 'https', hostname: 'example.com', pathname: '/:folder/*/:fileName.jpg', });
- Разширен е API Intl.DisplayNames, чрез който може да се получат локализирани наименования на езици, страни, валути и елементи от дати и т.н. В новата версия са добавени нови типове имена 'calendar' и 'dateTimeField', чрез които може да се узнаят локализирани наименования на календара и полета за дата и време (например, имената на месеците). За типа 'language' е добавена поддръжка за използване на диалекти на езиците.
- В API Intl.DateTimeFormat е добавена поддръжка на нови стойности на параметъра timeZoneName: 'shortGeneric' за извеждане на кратък идентификатор на часовата зона (например, 'PT', 'ET'), 'longGeneric' — дългия ('Pacific Time', 'Mountain Time'), 'shortOffset' — с кратко отклонение спрямо GMT ('GMT+5') и 'longOffset' с дълго отклонение спрямо GMT ('GMT+0500').
- API U2F (Cryptotoken) е обявен за остарял и вместо него следва да се използва API Web Authentication. API U2F ще бъде деактивиран по подразбиране в версия Chrome 98 и напълно премахнат в Chrome 104.
- Внесени са подобрения в инструментите за уеб разработка. В панела Styles е опростено коригирането на CSS свойства, свързани с размерите (височина, отстояние и т.н.). В таба Issues е предоставена възможност за скриване на отделни проблеми. В уеб конзолата и панелите Sources и Properties е подобрено визуализирането на свойствата (собствените свойства вече се подчертават с дебел шрифт и се показват в горната част на списъка).

Освен нововъведенията и корекциите на грешки, новата версия отстранява 19 уязвимости. Много от уязвимостите са открити в резултат на автоматизирано тестване с инструменти като AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Не са установени критични проблеми, които да позволят заобикаляне на всички нива на защита на браузъра и изпълнение на код в системата извън sandbox-окружението. В рамките на програмата за награди за откриване на уязвимости за настоящия релийз, компанията Google е изплатила 16 премии на обща стойност 74 хиляди долара (една премия от $20000, две премии от $10000, една премия от $7500, една премия от $6000, три премии от $5000 и по една премия от $3000, $2000 и $1000). Размерът на 5 премии все още не е определен.
Източник: opennet.ru


