Dart 2.15 arriva con gruppi isolati, miglioramenti del runtime e altro

Google ha recentemente presentato il lancio del nuova versione del linguaggio di programmazione Dart 2.15, che continua lo sviluppo di un ramo radicalmente ridisegnato di Dart 2 e che differisce dalla versione originale del linguaggio Dart per l'uso della tipizzazione statica forte (i tipi possono essere dedotti automaticamente, quindi non è necessario specificare i tipi, ma la tipizzazione dinamica non viene più utilizzata e viene inizialmente calcolata, il tipo viene assegnato al variabile e quindi viene applicato un controllo di tipo rigoroso).

In questa nuova versione sono state implementate varie migliorie e soprattutto l'introduzione di alcune nuove funzionalità come gruppi isolati e anche soluzioni ad alcune vulnerabilità rilevate.

Principali nuove funzionalità di Dart 2.15

In questa nuova versione di Dart 2.15 sono forniti strumenti per una rapida esecuzione parallela di attività con isolamento del controller.

a parte quello nei sistemi multi-core, il runtime Dardo, per impostazione predefinita, esegue il codice dell'applicazione su un core della CPU e utilizza altri core per eseguire attività di sistema come l'I/O asincrono, la scrittura su file o l'esecuzione di chiamate di rete.

Un'altra novità che Dart 2.15 introduce è un nuovo concetto, gruppi isolati, (isolare i gruppi) consentire l'accesso condiviso a diverse strutture dati interne negli isolati appartenenti allo stesso gruppo, che può ridurre significativamente il sovraccarico durante la comunicazione con gli agenti in un gruppo. Ad esempio, l'avvio di un isolamento aggiuntivo su un pool esistente è 100 volte più veloce e richiede da 10 a 100 volte meno memoria rispetto all'avvio di un isolamento separato, eliminando la necessità di inizializzare le strutture dei dati del programma.

Nonostante il fatto che in blocchi isolati in un gruppo, l'accesso condiviso agli oggetti modificabili è ancora vietato, i gruppi utilizzano la memoria dinamica condivisa, velocizzando notevolmente il trasferimento di oggetti da un blocco all'altro senza la necessità di operazioni di copia ad alta intensità di risorse.

Nella nuova versione, è anche consentito passare il risultato del lavoro del controller quando viene chiamato Isolate.exit() per passare i dati al blocco di isolamento principale senza eseguire operazioni di copia. Inoltre, è stata effettuata l'ottimizzazione del meccanismo di trasmissione dei messaggi: i messaggi piccoli e medi vengono ora elaborati circa 8 volte più velocemente. Gli oggetti che possono essere passati tra gli isolati utilizzando la chiamata SendPort.send() includono vari tipi di funzioni, chiusure e analisi dello stack.

Negli strumenti per la creazione di puntatori alle singole funzioni in altri oggetti, le restrizioni sulla creazione di tali puntatori sono state rimosse nel codice del costruttore, che può essere utile quando si creano interfacce basate sulla libreria Fluttuare.

La biblioteca dart: core ha migliorato il supporto enum, ad esempio, ora puoi generare un valore stringa da ciascun valore di enumerazione utilizzando il metodo ".name", ottenere valori per nome o abbinare coppie di valori.

Si evidenzia anche questo è stata implementata una tecnica di compressione del puntatore, che consente di utilizzare una rappresentazione più compatta dei puntatori in ambienti a 64 bit se lo spazio di indirizzamento a 32 bit è sufficiente per l'indirizzamento (non vengono utilizzati più di 4 GB di memoria). I test hanno dimostrato che tale ottimizzazione riduce la dimensione dell'heap di circa il 10%. In Flutter SDK, la nuova modalità è già abilitata per Android per impostazione predefinita e si prevede che sarà abilitata per iOS in una versione futura.

anche si noti che il repository pub.dev ora ha la capacità di revocare una versione già pubblicata di un pacchetto, ad esempio, in caso di bug o vulnerabilità pericolosi.

Del altre modifiche che risaltano:

  • Protezione aggiuntiva contro la vulnerabilità (CVE-2021-22567) causata dall'uso di caratteri Unicode che modificano l'ordine di visualizzazione nel codice.
  • Risolta una vulnerabilità (CVE-2021-22568) che poteva impersonare un altro utente pub.dev durante la pubblicazione di pacchetti su un server di terze parti che accetta token di accesso oauth2 da pub.dev.
  • Dart SDK include strumenti per il debug e l'analisi delle prestazioni (DevTools), che in precedenza erano forniti in un pacchetto separato.
  • Sono stati aggiunti strumenti al comando "dart pub" e ai repository del pacchetto pub.dev per tenere traccia del rilascio accidentale di informazioni sensibili, ad esempio lasciando le credenziali per i sistemi di integrazione continua e gli ambienti cloud all'interno del pacchetto.
  • Se vengono rilevate tali perdite, il comando "dart pub publish" si interromperà con un messaggio di errore. In caso di falso allarme è possibile saltare il controllo tramite la white list.

fonte: https://medium.com/


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.