Il rilascio di Chrome 74

Google ha presentato rilascio del browser web Chrome 74. Contemporaneamente è disponibile versione stabile di un progetto open source Chromium, che costituisce la base di Chrome. Il browser Chrome si distingue utilizzando i loghi di Google, con la possibilità di scaricare il modulo Flash su richiesta, un sistema di invio notifiche in caso di crash, moduli per la riproduzione di contenuti video protetti, un sistema di aggiornamenti automatici e trasferimento in fase di ricerca parametri RLZ. La prossima versione di Chrome 75 è prevista per il 4 giugno.

Principali modifiche in Chrome 74:

  • Quando si verifica l'evento onUnload, che viene attivato alla chiusura della pagina, ora sono vietate mostrare finestre pop-up (la chiamata window.open() è bloccata), per proteggere gli utenti dall'apertura forzata di pagine pubblicitarie dopo la chiusura di siti potenzialmente sospetti;
  • Nel motore JavaScript è stata realizzata è stato introdotto un nuovo modo JIT-less (flag “—jitless”), che consente di eseguire JavaScript senza utilizzare JIT (viene utilizzato solo l'interprete) e senza allocare memoria eseguibile durante l'esecuzione del codice. Disabilitare JIT può essere utile per migliorare la sicurezza quando si utilizzano applicazioni web potenzialmente pericolose, nonché per garantire la compilazione su piattaforme che vietano l'uso di JIT (ad esempio, su iOS, su alcune Smart TV e console di gioco). Disattivare JIT riduce le prestazioni di JavaScript del 40% nel test Speedometer 2.0 e dell'80% nel test Web Tooling Benchmark, ma durante la simulazione del lavoro con YouTube è stata notata solo una diminuzione delle prestazioni del 6%. Il consumo di memoria si riduce leggermente, solo dell'1,7%;
  • In V8 sono state proposte anche numerose nuove ottimizzazioni. Ad esempio, l'esecuzione delle chiamate di funzione, in cui il numero effettivo di parametri passati non corrisponde al numero di argomenti specificato nella definizione della funzione, è stata accelerata del 60%. L'accesso alle proprietà del DOM è stato ottimizzato tramite la funzione get, il che ha avuto un impatto positivo sulle prestazioni del framework Angular. È stata accelerata l'analisi di JavaScript: l'ottimizzazione del decoder UTF-8 ha migliorato le prestazioni del parser in modalità streaming (analisi durante il caricamento) dell'8%, mentre l'esclusione di operazioni di deduplicazione superflue ha fornito un ulteriore guadagno del 10,5%;
  • Sono stati fatti progressi nella riduzione del consumo di memoria del motore JavaScript.
    È stato aggiunto codice per la pulizia della cache del bytecode, che occupa circa il 15% delle dimensioni complessive dell'heap. È stata aggiunta una fase al garbage collector per espellere dalla cache bytecode compilato raramente per funzioni utilizzate o funzioni chiamate solo durante l'inizializzazione. La decisione di pulire è presa in base ai nuovi contatori che tengono conto dell'ultima volta che è stato fatto riferimento al bytecode. Questa modifica ha consentito di ridurre il consumo di memoria dal 5% al 15% senza impatti negativi sulle prestazioni. Inoltre, nel compilatore del bytecode è stata esclusa la generazione di codice evidentemente inutilizzato, ad esempio quello che segue un return o un break (se non ha un Jump);

    Il rilascio di Chrome 74
  • Per WebAssembly è stata realizzata il supporto per thread e operazioni atomiche (API WebAssembly Threads e WebAssembly Atomics);
  • Per la fornitura separata di script, è stato aggiunto il supporto per l'intestazione “#!”, che determina l'interprete da utilizzare. Ad esempio, analogamente ad altri linguaggi di script, un file JavaScript potrebbe apparire così:

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

  • In CSS è stata aggiunta una nuova media query “prefers-reduced-motion“, che consente al sito di determinare lo stato delle impostazioni del sistema operativo relative alla disattivazione degli effetti animati. Utilizzando questa query, il proprietario del sito può può sapere che l'utente ha disattivato gli effetti animati e disattivare anche varie possibilità di animazione sul sito, come rimuovere l'effetto di vibrazione dei pulsanti utilizzati per attirare l'attenzione;
  • In aggiunta alla possibilità di determinare campi pubblici introdotta in Chrome 72, è stato implementato il supporto per marcare i campi come privati, dopo di che l'accesso ai loro valori sarà consentito solo all'interno della classe. Per contrassegnare un campo come privato, è necessario indicare il simbolo “#” prima del nome del campo. Come nel caso dei campi pubblici, le proprietà private non richiedono l'uso esplicito del costruttore. per contrassegnare i campi come privati, in modo che l'accesso ai loro valori sia consentito solo all'interno della classe. Per contrassegnare un campo come privato, è necessario anteporre al nome del campo il simbolo «#». Come nel caso dei campi pubblici, le proprietà private non richiedono l'uso esplicito del costruttore.
  • L'intestazione HTTP Feature-Policy, che consente di gestire il comportamento delle API e l'attivazione di determinate funzionalità (ad esempio, è possibile attivare la modalità sincrona per XMLHttpRequest o disattivare l'API di geolocalizzazione), è stata ampliata JavaScript API per controllare l'attività di alcune funzionalità. Gli sviluppatori hanno a disposizione due nuovi metodi document.featurePolicy e frame.featurePolicy, che offrono tre funzioni:
    allowedFeatures() per ottenere un elenco delle funzionalità consentite per il dominio corrente, allowsFeature() per controllare in modo selettivo se determinate funzionalità sono attivate e getAllowlistForFeature() per visualizzare un elenco dei domini per i quali è consentita la funzionalità corrente nella pagina;
  • È stato aggiunto il supporto sperimentale (“chrome://flags#enable-text-fragment-anchor”) per la modalità Scroll-To-Text, позволяющего формировать ссылки на отдельные слова или фразы, без явного указания в документе меток при помощи тега «a name» или свойства «id». Для передачи ссылки предлагается специальный параметр «#targetText=», в котором можно указать текст для перехода. Допускается указание маски, включающей фразы, указывающие на начало и конец фрагмента с использованием запятой в качестве их разделителя (например, «example.com#targetText=start%20words, end%20words»);
  • Nel costruttore AudioContext è stata aggiunta un'opzione sampleRate, che consente di impostare la frequenza di campionamento per le operazioni audio tramite Web Audio API;
  • È stata aggiunta la supporto per la classe Intl.Locale, che fornisce metodi per analizzare e gestire i parametri della lingua, della regione e della scrittura forniti dalla locale, nonché per leggere e scrivere tag di estensione Unicode, memorizzando le impostazioni locali dell'utente in un formato serializzato;
  • Meccanismo Signed HTTP Exchanges (SXG) è stato esteso con strumenti per di informazione distributori di contenuti riguardo agli errori di caricamento del contenuto firmato, come problemi di verifica dei certificati. La gestione degli errori avviene tramite le estensioni API Network Error Logging. Ricordiamo che SXG permette consente al proprietario di un sito di autorizzare, tramite una firma digitale, il posizionamento di determinate pagine su un altro sito; quando si accede a queste pagine su quest'ultimo sito, il browser mostrerà all'utente l'URL del sito originale, nonostante la pagina sia stata caricata da un altro host;
  • È stato aggiunto alla classe TextEncoder il metodo encodeInto(), che consente di scrivere direttamente una stringa codificata in un buffer preallocato. Il metodo encodeInto() è un'alternativa ad alta prestazione al metodo encode(), che richiede la fase di allocazione del buffer ad ogni chiamata.
  • Nel Service worker è stata garantita il buffering della chiamata client.postMessage() fino al momento in cui il documento è pronto. I messaggi inviati tramite client.postMessage() saranno trattenuti fino alla fase di generazione dell'evento DOMContentLoaded, impostazione di onmessage o chiamata startMessages();
  • In accordo con i requisiti della specifica CSS Transitions sono stati aggiunti gli eventi transitionrun, transitioncancel, transitionstart e transitionend vengono generati quando la transizione CSS è in coda, annullata, inizia o termina.
  • Se viene specificata via overrideMimeType() o un MIME-type con una codifica di caratteri errata per la richiesta XMLHttpRequest, ora si esegue un rollback a UTF-8 invece di Latin-1;
  • È stato dichiarato obsoleto e sarà rimosso in una delle prossime versioni la proprietà «allow-downloads-without-user-activation», che permetteva di organizzare il download automatico di file durante la gestione di iframe. In futuro, l'inizio del download di file senza un'azione esplicita da parte dell'utente sarà vietato, poiché era spesso sfruttato per abusi, imposte di download e iniezione di parti di malware sul computer dell'utente. Per avviare un download sarà necessario un clic dell'utente sulla stessa pagina. Inizialmente, si prevedeva di rimuovere la proprietà in Chrome 74, ma la rimozione è stata rimandata posticipata a Chrome 76.
  • Per la piattaforma Windows è stata proposta un'opzione di tema scuro per l'interfaccia (nel rilascio precedente, il tema scuro è stato preparato per macOS). Poiché il tema scuro è quasi identico alla modalità di navigazione in incognito, è stato aggiunto un indicatore speciale per evidenziare la modalità privata, invece dell'icona del profilo utente;
  • Per gli utenti aziendali è stata aggiunta la possibilità di Chrome Browser Cloud Management per gestire le impostazioni dei browser degli utenti tramite la console di Google Admin;

    Il rilascio di Chrome 74

Oltre alle novità e alla correzione di errori, nella nuova versione sono state risolte 39 vulnerabilità. Molte delle vulnerabilità sono state scoperte attraverso test automatizzati utilizzando strumenti AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Non sono state rilevate problematiche critiche che consentono di bypassare tutti i livelli di protezione del browser ed eseguire codice nel sistema al di fuori dell'ambiente sandbox. Nell'ambito del programma di ricompensa per la scoperta di vulnerabilità per il rilascio attuale, Google ha assegnato 19 premi per un totale di 26837 dollari (quattro premi da $3000, quattro premi da $2000, un premio da $1337, quattro premi da $1000, tre premi da $500). L'importo di 4 premi non è ancora stato definito.

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster