Compania Google lansarea unui browser web . În același timp versiunea stabilă a unui proiect open-source , care stă la baza Chrome. Browserul Chrome prin utilizarea siglelor Google, capacitatea de a descărca modulul Flash la cerere, existența unui sistem de trimitere a notificărilor în caz de crash, module pentru redarea conținutului video protejat, un sistem de instalare automată a actualizărilor și transmiterea în timpul căutării . Următoarea versiune Chrome 75 este programată pentru 4 iunie.
:
- La apariția evenimentului onUnload, invocat la închiderea paginii, acum să se genereze feronumera (se blochează apelul window.open()), ceea ce va proteja utilizatorii de deschiderea forțată a paginilor publicitare după închiderea unor site-uri dubioase;
- În motorul JavaScript a apărut un nou mod (flagul „--jitless”), care permite executarea JavaScript fără utilizarea JIT (se folosește doar interpretatorul) și fără alocarea memoriei executabile în timpul execuției codului. Deactivarea JIT poate fi utilă pentru creșterea securității în lucrul cu aplicații web potențial periculoase, precum și pentru asigurarea funcționării pe platforme care interzic utilizarea JIT (de exemplu, în iOS, pe unele Smart TV-uri și console de jocuri). Disactivarea JIT reduce performanța execuției JavaScript cu 40% în testul Speedometer 2.0 și cu 80% în testul Web Tooling Benchmark, dar în simularea operațiunilor cu YouTube s-a înregistrat o scădere a performanței de doar 6%. Consumul de memorie scade în acest proces nesemnificativ, cu doar 1,7%;
- În V8 au fost propuse, de asemenea, o serie de noi optimizări. De exemplu, a fost accelerată cu 60% solicitarea apelurilor de funcții în care numărul de parametri efectiv transmiși nu corespunde cu numărul de argumente specificat la definirea funcției. Accesul la proprietățile DOM a fost îmbunătățit prin funcția get, ceea ce a avut un impact pozitiv asupra performanței framework-ului Angular. A fost accelerată analiza JavaScript: optimizarea decoderului UTF-8 a permis creșterea performanței parserului în modul streaming (analizarea pe măsură ce se încarcă) cu 8%, iar eliminarea operațiunilor inutile de deduplicare a adus un plus de 10,5%;
- Au fost realizate lucrări pentru reducerea consumului de memorie al motorului JavaScript.
A fost adăgód un cod pentru curățarea cache-ului de bytecode, care ocupă aproximativ 15% din dimensiunea totală a heap-ului. În garbage collector a fost adăugată o etapă pentru a elimina din cache bytecode-ul rar compilat pentru funcțiile utilizate sau funcțiile apelate doar la inițializare. Decizia de curățare este bazată pe noi contoare care iau în considerare ultima dată de acces la bytecode. Această modificare a permis reducerea consumului de memorie cu 5–15% fără a afecta negativ performanța. În plus, în compilatorul de bytecode a fost eliminată generarea codului evident neutilizat, de exemplu, care urmează după return sau break (dacă nu există un salt);
- Pentru WebAssembly suport pentru fire și operații atomice (API WebAssembly Threads și WebAssembly Atomics);
- Pentru livrarea separată a scripturilor a fost adăugat suport pentru antetul „#!”, care definește interpretul pentru rulare. De exemplu, similar cu alte limbi de script, un fișier JavaScript ar putea arăta aproximativ așa:
#!/usr/bin/env node
console.log(42); - În CSS a fost adăugat un nou media query „„, care permite site-ului să determine starea setărilor din sistemul de operare legate de dezactivarea efectelor animate. Prin intermediul acestui query, proprietarul site-ului poate afla că utilizatorul a dezactivat efectele animate și poate, de asemenea, să dezactiveze diferite capabilități de animație pe site, de exemplu, să elimine efectul de tremur al butoanelor utilizate pentru a atrage atenția;
- În plus față de capacitatea apărută în Chrome 72 de a determina câmpuri publice marcarea câmpurilor ca private, după care accesul la valorile lor va fi deschis doar în interiorul clasei. Pentru a marca un câmp ca privat, trebuie să se pună semnul „#” înainte de numele câmpului. La fel ca în cazul câmpurilor publice, proprietățile private nu necesită utilizarea explicită a constructorului.
- Antetul HTTP Feature-Policy, care permite gestionarea comportamentului API-urilor și activarea anumitor capabilități (de exemplu, se poate activa modul de lucru sincron pentru XMLHttpRequest sau se poate dezactiva Geolocation API), a fost completat pentru controlul activității anumitor capabilități. Pentru dezvoltatori au fost propuse două noi metode document.featurePolicy și frame.featurePolicy, care oferă trei funcții:
allowedFeatures() pentru a obține o listă de funcții permise pentru domeniul curent, allowsFeature() pentru a verifica selective activarea unor funcționalități specifice și getAllowlistForFeature() pentru a returna o listă de domenii pentru care funcționalitatea specificată este permisă pe pagina curentă; - A fost adăugată suport experimental pentru modul («chrome://flags#enable-text-fragment-anchor») , care permite formarea de linkuri către cuvinte sau expresii specifice, fără a indica în mod explicit marcaje în document prin utilizarea etichetei „a name” sau a proprietății „id”. Pentru a transmite linkul, se propune un parametru special „#targetText=”, unde se poate specifica textul pentru navigare. Se permite specificarea unei măști, care include expresii ce indică începutul și sfârșitul fragmentului, folosind virgula ca separator (de exemplu, „example.com#targetText=startwords, endwords”);
- Constructorul AudioContext a fost extins cu o opțiune , permițând setarea frecvenței de eșantionare pentru operațiuni audio prin Web Audio API;
- A fost adăugat suport pentru clasa , care oferă metode pentru analizarea și procesarea parametrilor de limbă, regiune și stil specificate de locală, precum și pentru citirea și scrierea etichetelor de extensie Unicode, păstrând setările personalizate de locală într-un format serializat;
- Mecanismul (SXG) a fost extins cu instrumente pentru distribuitorilor de conținut despre erorile de descărcare a conținutului semnat, cum ar fi problemele de verificare a certificatelor. Procesarea erorilor se realizează prin extensii API . Să ne amintim că SXG permite proprietarului unui site să autorizeze, prin semnătura digitală, plasarea anumitor pagini pe un alt site, după care, în cazul accesării acestor pagini pe al doilea site, browserul va afișa utilizatorului URL-ul site-ului original, chiar dacă pagina a fost încărcată de pe un alt host;
- În clasa TextEncoder a fost adăugat metoda , care permite scrierea unei șiruri codificate direct într-un buffer prealocat. Metoda encodeInto() este o alternativă de înaltă performanță la metoda encode(), care necesită alocarea buffer-ului la fiecare apel.
- În Service worker bufferizarea apelului client.postMessage() până la momentul în care documentul este gata. Mesajele trimise prin client.postMessage() vor fi reținute până la generarea evenimentului DOMContentLoaded, setarea onmessage sau apelarea startMessages();
- În conformitate cu cerințele specificației CSS Transitions evenimentele transitionrun, transitioncancel, transitionstart și transitionend, generate atunci când tranziția CSS este pusă în coadă, anulată, demarată sau finalizată.
- Atunci când se specifică un tip MIME incorect sau o codificare incorectă a caracterelor pentru o solicitare XMLHttpRequest prin overrideMimeType(), acum se revine la UTF-8 în loc de Latin-1;
- Proprietatea „allow-downloads-without-user-activation” a fost declarată obsoletă și va fi eliminată într-una dintre versiunile viitoare. Aceasta permitea organizarea descărcărilor automate de fișiere în timpul procesării iframe-urilor. În viitor, inițierea descărcărilor de fișiere fără o acțiune explicită a utilizatorului va fi interzisă, deoarece a fost folosită în mod activ pentru abuzuri, impunerea descărcărilor și substituirea componentelor de malware pe computerul utilizatorului. Pentru a începe descărcarea, va fi necesar un clic din partea utilizatorului pe aceeași pagină. Inițial, proprietatea fusese prevăzută pentru a fi eliminată în Chrome 74, dar eliminarea a fost până la Chrome 76.
- Pentru platforma Windows a fost propusă o temă întunecată opțională pentru interfața de utilizator (în ultima versiune, tema întunecată a fost pregătită pentru macOS). Deoarece tema întunecată este aproape identică cu designul în modul incognito, pentru a evidenția modul privat de lucru a fost adăugat un indicator special în locul pictogramei profilului utilizatorului;
- Pentru utilizatorii corporativi a fost adăugată posibilitatea pentru a gestiona setările browserelor utilizatorilor prin consola Google Admin;
Pe lângă noutăți și corecții de erori, noua versiune a eliminat . Multe dintre vulnerabilități au fost descoperite ca urmare a testării automate cu instrumentele , , , și . Nu au fost identificate probleme critice care să permită ocolirea tuturor nivelurilor de protecție ale browserului și să execute cod în sistem dincolo de mediul sandbox. În cadrul programului de recompensare a descoperirii vulnerabilităților pentru versiunea actuală, compania Google a oferit 19 premii în valoare totală de 26.837 dolari (patru premii de 3.000 dolari, patru premii de 2.000 dolari, un premiu de 1.337 dolari, patru premii de 1.000 dolari, trei premii de 500 dolari). Valoarea a 4 recompense nu a fost deocamdată stabilită.
Sursa: opennet.ro

