Издание Chrome 74

Компания Google представи пускане на уеб браузъра Chrome 74. В същото време е наличен стабилен релиз на безплатния проект Chromium, който е основата на Chrome. Браузърът Chrome се отличава с използването на логотипи на Google, възможност за инсталиране на Flash модул по заявка, наличието на система за уведомления в случай на срив, модули за възпроизвеждане на защитено видео съдържание, система за автоматично инсталиране на актуализации и предаване при търсене на RLZ параметри. Следващата версия на Chrome 75 е планирана за 4 юни.

Основни промени в Chrome 74:

  • При настъпване на събитието onUnload, което се извиква при затваряне на страницата, вече е забранено се генерират изскачащи прозорци (виканията на window.open() са блокирани), което позволява да се защитят потребителите от принудително отваряне на рекламни страници след затваряне на съмнителни сайтове;
  • В JavaScript двигателя е реализирана появи се нов режим JIT-less (флаг „—jitless“), който позволява изпълнение на JavaScript без използване на JIT (използва се само интерпретатор) и без разпределяне на изпълняема памет по време на изпълнението на кода. Изключването на JIT може да е полезно за повишаване на сигурността при работа с потенциално опасни уеб приложения, както и за осигуряване на компилация на платформи, забраняващи използването на JIT (например в iOS, на някои Smart TV и игрови конзоли). При изключване на JIT производителността на изпълнението на JavaScript намалява с 40% в теста Speedometer 2.0 и с 80% в теста Web Tooling Benchmark, но при симулация на работа с YouTube е установено, че намалението на производителността е само 6%. Потреблението на памет в този случай намалява незначително, само с 1.7%;
  • В V8 е предложен и голям набор от нови оптимизации. Например, извикванията на функции, при които броят на фактически предадените параметри не съответства на посочения брой аргументи при определяне на функцията, са ускорени с 60%. Достъпът до свойства на DOM с помощта на функция get е ускорен, което оказа положително влияние върху производителността на Angular фреймуърка. Работа по парсинга на JavaScript е ускорена: оптимизацията на UTF-8 декодера позволи повишаване на производителността на парсера в режим на streaming (разбор по време на зареждане) с 8%, а изключването на излишните операции по дедупликация доведе до увеличение с още 10.5%;
  • Работа е извършена за намаляване на потреблението на памет от JavaScript двигателя.
    Добавен е код за почистване на кеша на байткода, който заема около 15% от общия размер на купчината. В събирача на боклука е добавен етап за изтласкване от кеша рядко компилиран байткод за използваните функции или функции, които се извикват само при инициализация. Решението за почистване се взема въз основа на нови броячи, отразяващи последното време на достъп до байткода. Указаната промяна позволи намаляване на потреблението на памет с 5–15% без негативно влияние върху производителността. Допълнително, в компилатора на байткод е изключена генерацията на умишлено неизползван код, например, този след return или break (ако на него няма Jump-преход);

    Издание Chrome 74
  • За WebAssembly е реализирана поддръжка на потоци и атомарни операции (API WebAssembly Threads и WebAssembly Atomics);
  • За отделна доставка на скриптове е добавена поддръжка на заглавието «#!», определящо интерпретатора за изпълнение. Например, подобно на други скриптови езици, файлът JavaScript може да изглежда приблизително така:

    #!/usr/bin/env node
    console.log(42);

  • В CSS е добавен нов media-заявка «prefers-reduced-motion», позволяваща на сайта да определи състоянието на настройките в операционната система, свързани с деактивирането на анимационни ефекти. Чрез предложената заявка собственикът на сайта може може да разбере, че потребителят е деактивирал анимационни ефекти и също да отключи различни анимационни възможности на сайта, например, да премахне ефекта на трептене на бутоните, използвани за привличане на внимание;
  • В допълнение към появилата се в Chrome 72 възможност за определяне на публични полета е реализирана поддръжка на означаване на полета като частни, след което достъпът до техните стойности ще бъде отворен само вътре в класа. За означаване на поле като частно трябва да се добави знак «#» пред името на полето. Както и при публичните полета, частните свойства не изискват явна употреба на конструктора.
  • HTTP-заглавието Feature-Policy, позволяващо управление на поведението на API и включването на определени възможности (например, може да се активира синхронен режим на работа на XMLHttpRequest или да се деактивира Geolocation API), е допълнено JavaScript API за контрол на активността на определени възможности. За разработчиците са предложени два нови метода document.featurePolicy и frame.featurePolicy, които предлагат три функции:
    allowedFeatures() за получаване на списък с разрешените функции за текущия домейн, allowsFeature() за изборно проверяване на включването на конкретни възможности и getAllowlistForFeature() за извеждане на списък с домейни, за които в текущата страница е разрешена определена функция;
  • Добавена е експериментална («chrome://flags#enable-text-fragment-anchor») поддръжка на режима Scroll-To-Text, позволяващо създаването на връзки към отделни думи или фрази, без изрично указване в документа на етикети чрез тега «a name» или свойството «id». За предаване на връзката се предлага специален параметър «#targetText=», в който може да се посочи текст за преход. Допуска се указване на маска, включваща фрази, които указват начало и край на фрагмента, използвайки запетая като разделител (например, «example.com#targetText=startwords, endwords»);
  • В конструктора AudioContext е добавена опция sampleRate, позволяваща да се зададе желаната честота на дискретизация за операции със звук чрез Web Audio API;
  • Добавена е поддръжка на класа Intl.Locale, предоставящ методи за анализ и обработка на параметри на езика, региона и шрифта, зададени от локализацията, както и за четене и запис на тags за разширения Unicode, запазване на потребителските настройки на локализацията в сериализиран формат;
  • Механизмът Signed HTTP Exchanges (SXG) е разширен с инструменти за информиране разпространители на съдържание за грешки при зареждане на подписано съдържание, като проблеми с верификация на сертификати. Обработката на грешките се извършва чрез разширения на API Network Error Logging. Напомняме, че SXG позволява позволява на собственика на един сайт с цифров подпис да упълномощи разполагането на определени страници на друг сайт, след което при достъп до тези страници на втория сайт браузърът ще показва на потребителя URL адреса на оригиналния сайт, въпреки че страницата е заредена от друг хост;
  • В класа TextEncoder е добавен метод encodeInto(), позволяващ записването на кодирана строка директно в предварително заделен буфер. Методът encodeInto() е високоефективна алтернатива на метода encode(), изискващ извършване на операция по заделяне на буфер при всяко извикване.
  • В Service worker е осигурена буфериране на повикването client.postMessage() до момента на готовност на документа. Съобщенията, изпратени чрез client.postMessage(), ще бъдат задържани до етапа на генериране на събитието DOMContentLoaded, задаването на onmessage или извикването на startMessages();
  • В съответствие с изискванията на спецификациите за CSS преходи добавени събитията transitionrun, transitioncancel, transitionstart и transitionend, генерирани когато CSS-преход е поставен в опашка, отменен, започва или завършва изпълнението си.
  • Когато се укаже неправилен MIME тип или кодировка при заявка XMLHttpRequest чрез overrideMimeType(), сега се извършва откат към UTF-8 вместо Latin-1;
  • Обявено за остаряло и ще бъде премахнато в една от следващите версии свойството "allow-downloads-without-user-activation", чрез което беше възможно автоматично изтегляне на файлове при обработка на iframe. В бъдеще инициирането на изтегляне на файлове без изрично действие на потребителя ще бъде забранено, тъй като активно се използваше за злоупотреби, налагане на изтегляния и внедряване на части от злонамерен софтуер на компютъра на потребителя. За започване на изтеглянето ще е необходим клик на потребителя на същата страница. Първоначално свойството беше планирано да бъде премахнато в Chrome 74, но премахването беше е отложено до Chrome 76.
  • За платформата Windows е предложена опционална тъмна тема на интерфейса (в предишната версия тъмната тема беше подготвена за macOS). Тъй като тъмното оформление почти идентично на оформлението в режим инкогнито, за да се подчертае частният режим на работа вместо иконата на потребителския профил е добавен специален индикатор;
  • За корпоративни потребители е добавена възможността Chrome Browser Cloud Management за управление на настройките на браузерите на потребителите чрез конзолата на Google Admin;

    Издание Chrome 74

Освен нововъведенията и корекциите на грешки, в новата версия е отстранено 39 уязвимости. Много от уязвимостите са открити в резултат на автоматизирано тестване с инструменти AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Не са открити критични проблеми, които да позволят заобикаляне на всички нива на защита на браузера и изпълнение на код в системата извън sandbox-окружението. В рамките на програмата за плащане на парични награди за открития на уязвимости за текущия релиз компанията Google е изплатила 19 награди на обща сума от 26837 долара (четири награди по $3000, четири награди по $2000, една награда по $1337, четири награди по $1000, три награди по $500). Размерът на 4 награди все още не е определен.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster