La compagnia Google ha presentato il rilascio del browser web Chrome 95. Allo stesso tempo è disponibile la versione stabile del progetto open source Chromium, che costituisce la base di Chrome. Il browser Chrome si distingue per l'uso dei loghi Google, la presenza di un sistema di invio delle notifiche in caso di crash, moduli per la riproduzione di contenuti video protetti (DRM), un sistema di installazione automatica degli aggiornamenti e la trasmissione dei parametri RLZ durante la ricerca. In base al nuovo ciclo di sviluppo di 4 settimane, il rilascio successivo, Chrome 96, è previsto per il 16 novembre. Per coloro che necessitano di più tempo per l'aggiornamento, è supportato un ramo Extended Stable, che prevede 8 settimane di supporto durante le quali è stato creato un aggiornamento per il precedente rilascio di Chrome 94.
Le principali novità in Chrome 95:
- Per gli utenti di Linux, Windows, macOS e ChromeOS è stata introdotta una nuova barra laterale, visualizzata a destra del contenuto e attivabile cliccando su un'apposita icona nella barra degli indirizzi. Nella barra viene visualizzato un riepilogo dei segnalibri e un elenco per la lettura. Questa modifica non è abilitata per tutti gli utenti; per attivarla è possibile utilizzare l'impostazione «chrome://flags/#side-panel».

- È stata implementata la richiesta esplicita di autorizzazione per il salvataggio degli indirizzi inseriti nei moduli web, per un uso successivo nel sistema di completamento automatico dei moduli. Quando vengono rilevati indirizzi nei moduli, all'utente viene ora mostrato un dialogo che permette di salvare l'indirizzo, modificarlo, aggiornare un indirizzo precedentemente salvato o rifiutare il salvataggio.
- È stato rimosso il codice per supportare il protocollo FTP. In Chrome 88, il supporto FTP era disabilitato di default, ma era rimasta una flag per il suo ripristino.
- È stato interrotto il supporto per gli URL con nomi host che si concludono con un numero, ma che non corrispondono agli indirizzi IPv4. Ad esempio, gli URL «http://127.1/», «http://foo.127.1/» e «http://127.0.0.0.1» saranno ora considerati non validi.
- Per WebAssembly è stata implementata la possibilità di creare gestori di eccezioni che possono intercettare l'esecuzione in caso di eccezione durante l'esecuzione di un determinato codice. È supportato sia l'intercettazione di eccezioni note del modulo WebAssembly che di eccezioni durante il richiamo di funzioni importate. Per intercettare le eccezioni, il modulo WebAssembly deve essere compilato con un compilatore che supporti le eccezioni, come Emscripten.
Si segnala che la gestione delle eccezioni a livello di WebAssembly consente di ridurre significativamente la dimensione del codice generato, rispetto alla gestione delle eccezioni tramite JavaScript. Ad esempio, la compilazione dell'ottimizzatore Binaryen con la gestione delle eccezioni tramite JavaScript porta a un aumento del codice del 43%, mentre con WebAssembly solo del 9%. Inoltre, utilizzando la modalità di ottimizzazione «-O3», il codice con gestione delle eccezioni tramite WebAssembly è praticamente indistinguibile in termini di prestazioni dal codice senza gestori di eccezioni, mentre la gestione delle eccezioni tramite JavaScript provoca un rallentamento dell'esecuzione del 30%.
- È vietato l'uso condiviso dei moduli WebAssembly tra domini diversi (cross-origin) durante l'elaborazione di un sito web.
- Nella modalità Origin Trials (funzionalità sperimentali che richiedono un'attivazione separata) sono stati aggiunti diversi nuovi API. L'Origin Trial implica la possibilità di utilizzare l'API specificata da applicazioni caricate da localhost o 127.0.0.1, o dopo aver completato la registrazione e ottenuto un token speciale, valido per un tempo limitato per un sito web specifico.
- È stata attivata la riduzione delle informazioni nell'intestazione HTTP User-Agent e nei parametri JavaScript navigator.userAgent, navigator.appVersion e navigator.platform. Nell'intestazione sono state mantenute solo le informazioni sul nome del browser, la versione principale del browser, la piattaforma e il tipo di dispositivo (telefono cellulare, PC, tablet). Per ottenere dati aggiuntivi, come la versione esatta e dati avanzati sulla piattaforma, è necessario utilizzare l'API User Agent Client Hints. L'inizio della riduzione del User-Agent sui sistemi degli utenti comuni è previsto con il rilascio di Chrome 102, che sarà pubblicato tra sei mesi.
- È stata proposta la possibilità di creare descrittori di accesso (Access Handles) per l'API File System Access, che consente alle applicazioni web di leggere e scrivere dati direttamente in file e directory sul dispositivo dell'utente. Per semplificare i modi in cui le applicazioni web possono accedere al file system, Google prevede di unire l'API File System Access e Storage Foundation. Come fase preparatoria a tale unione, è stata proposta la supporto dei descrittori di accesso, che integra i metodi di lavoro basati su descrittori di file con funzionalità avanzate, come la possibilità di bloccare la scrittura da parte di altri processi e la creazione di flussi separati per la scrittura e la lettura, inclusa la lettura e scrittura da worker in modalità sincrona.
- È stato stabilizzato e proposto per impostazione predefinita l'API Secure Payment Confirmation con l'implementazione di una nuova estensione 'payment', che fornisce una ulteriore conferma dell'operazione di pagamento in corso. La parte verificatrice, ad esempio, la banca, ha la possibilità di generare una chiave pubblica PublicKeyCredential, che può essere richiesta dal venditore per una ulteriore conferma sicura del pagamento tramite l'API Payment Request, utilizzando il metodo di pagamento 'secure-payment-confirmation'.
- Nei callback impostati tramite il costruttore PerformanceObserver è stata implementata la trasmissione della proprietà droppedEntriesCount, che consente di capire quante metriche delle prestazioni del sito siano state scartate poiché non rientravano nel buffer fornito.
- È stato aggiunto l'API EyeDropper, che consente di richiamare l'interfaccia fornita dal browser per determinare il colore di pixel arbitrari sullo schermo, utilizzabile, ad esempio, in editor grafici realizzati come applicazioni web. const eyeDropper = new EyeDropper(); const result = await eyeDropper.open(); // result = {sRGBHex: '#160731'}
- È stata aggiunta la funzione self.reportError(), che consente agli script di visualizzare errori nella console, emulando l'insorgere di un'eccezione non gestita.
- È stato aggiunto l'API URLPattern, per verificare la corrispondenza di un URL con un determinato modello, che, ad esempio, può essere utilizzato per analizzare i collegamenti e per reindirizzare le richieste ai gestori nel service worker. const p = new URLPattern({ protocol: 'https', hostname: 'example.com', pathname: '/:folder/*/:fileName.jpg', });
- L'API Intl.DisplayNames è stata ampliata, consentendo di ottenere nomi localizzati di lingue, paesi, valute, elementi di data e così via. Nella nuova versione sono stati aggiunti nuovi tipi di nomi «calendar» e «dateTimeField», attraverso i quali è possibile scoprire i nomi localizzati del calendario e dei campi di data e ora (ad esempio, i nomi dei mesi). Per il tipo «language» è stata aggiunta la compatibilità con l'uso dei dialetti delle lingue.
- Nell'API Intl.DateTimeFormat è stata aggiunta la supporto a nuovi valori del parametro timeZoneName: «shortGeneric» per mostrare un identificatore breve del fuso orario (ad esempio, «PT», «ET»), «longGeneric» per uno lungo («Pacific Time», «Mountain Time»), «shortOffset» con uno spostamento breve rispetto a GMT («GMT+5») e «longOffset» con uno spostamento lungo rispetto a GMT («GMT+0500»).
- L'API U2F (Cryptotoken) è stata dichiarata obsoleta, da utilizzare al suo posto l'API Web Authentication. L'API U2F verrà disabilitata per default nella versione di Chrome 98 e completamente rimossa in Chrome 104.
- Sono stati apportati miglioramenti agli strumenti per gli sviluppatori web. Nella scheda Styles è stata semplificata la modifica delle proprietà CSS relative alle dimensioni (altezza, padding, ecc.). Nella scheda Issues è stata fornita la possibilità di nascondere singoli problemi. Nella console web e nei pannelli Sources e Properties è migliorata la visualizzazione delle proprietà (le proprietà personalizzate ora sono evidenziate in grassetto e posizionate in cima all'elenco).

Oltre alle nuove funzionalità e alle correzioni di errori, nella nuova versione sono state risolte 19 vulnerabilità. Molte delle vulnerabilità sono state scoperte a seguito di test automatizzati utilizzando strumenti come AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Non sono state rilevate problematiche critiche che consentissero di bypassare tutti i livelli di protezione del browser e di eseguire codice nel sistema al di fuori dell'ambiente sandbox. Nell'ambito del programma di ricompensa per la scoperta di vulnerabilità, per l'attuale rilascio, Google ha assegnato 16 premi per un totale di 74 mila dollari USA (un premio di $20000, due premi di $10000, un premio di $7500, un premio di $6000, tre premi di $5000 e premi di $3000, $2000 e $1000). L'importo di 5 premi deve ancora essere determinato.
Fonte: opennet.ru


