Go 1.19 è già stato rilasciato e queste sono le sue novità

recentemente è stata annunciata l'uscita della nuova versione del linguaggio di programmazione «Go 1.19»., una versione che migliora la versione precedente aggiungendo vari miglioramenti e, soprattutto, correzioni di bug.Tra le novità che possiamo evidenziare ci sono i miglioramenti nella gestione della memoria, miglioramenti della sicurezza, tra le altre cose.

Per coloro che non conoscono Go, dovresti sapere che si tratta di un linguaggio di programmazione sviluppato con la partecipazione della community come soluzione ibrida che combina le elevate prestazioni dei linguaggi compilati con vantaggi come linguaggi di scripting come la facilità di scrittura del codice, lo sviluppo e la protezione dai bug.

La sintassi di Go si basa sui consueti elementi del linguaggio C. con alcuni prestiti dal linguaggio Python. Il linguaggio è piuttosto conciso, ma il codice è facile da leggere e capire.

Il codice Go viene compilato in file eseguibili binari separati che vengono eseguiti in modo nativo, senza utilizzare una macchina virtuale (i sottosistemi di profilazione, debug e altri sottosistemi di risoluzione dei problemi di runtime sono integrati come componenti di runtime).

Principali novità di Go 1.19

In questa nuova versione di Go 1.19 che viene presentata, viene evidenziato che è stato svolto un lavoro per perfezionare il supporto per funzioni e tipi generici aggiunto nell'ultima versione, con l'aiuto del quale lo sviluppatore può definire e utilizzare funzioni progettate per funzionare con più tipi contemporaneamente, inoltre l'ottimizzazione delle prestazioni di alcuni programmi che utilizzano i generici è stata aumentata del 20%.

Un altro cambiamento che si distingue dalla nuova versione è quello aggiunto supporto per collegamenti, elenchi e sintassi più semplice per definire le intestazioni nei commenti del documento. L'utilità gofmt fornisce la formattazione tenendo conto delle funzionalità avanzate dei commenti con la documentazione dell'API.

Oltre ad esso modello di memoria Go rivisto per allinearlo a C, C++, Java, JavaScript, Rust e Swift che non ammettono valori atomici sequenzialmente coerenti. Nuovi tipi come atomic.Int64 e atomic.Pointer[T] sono stati introdotti nel pacchetto sync/atomic per semplificare l'uso dei valori atomici.

D'altra parte, si dice anche che Garbage Collector ora ha la capacità di definire limiti soft, che vengono applicati limitando la dimensione dell'heap e restituendo memoria al sistema in modo più aggressivo, ovvero non è garantito che il consumo rientri nei limiti specificati in tutte le condizioni. I limiti software possono essere utili per ottimizzare i programmi eseguiti in contenitori di memoria fissi.

Si evidenzia anche questo sui sistemi Unix, vengono abilitati automaticamente descrittori di file aggiuntivi (aumentando il limite RLIMIT_NOFILE), per velocizzare le espressioni di grandi modifiche sui sistemi x86-64 e ARM64, vengono utilizzate le tabelle di salto, che consentono di elaborare le espressioni di grandi modifiche fino al 20% più velocemente.

Sui sistemi riscv64 è stato implementato il passaggio di argomenti di funzione tramite i registri della CPU, che ha consentito un aumento delle prestazioni di circa il 10%.

Delle altre modifiche che si distinguono da questa nuova versione:

  • Sono state implementate numerose ottimizzazioni delle prestazioni.
  • Aggiunto supporto per l'impostazione dinamica della dimensione dello stack di routine per ridurre la dimensione dei dati copiati
  • Aggiunto supporto sperimentale per ambienti Linux su sistemi con processori Loongson basati sull'architettura LoongArch a 64 bit (GOARCH=loong64).
  • La modifica del modello di memoria non ha influito sulla compatibilità con il codice scritto in precedenza.
  • Aggiunta una nuova restrizione di build "unix" che può essere utilizzata nelle righe "go:build" per filtrare i sistemi simili a Unix (aix, android, darwin, dragonfly, freebsd, hurd, illumos, ios, linux, netbsd, openbsd, solaris ).
  • Per migliorare la sicurezza, il modulo os/exec ora ignora i percorsi relativi durante l'espansione della variabile di ambiente PATH (ad esempio, quando si determina il percorso di un file eseguibile, la directory corrente non viene più verificata).

Infine, se sei interessato a saperne di più su questa nuova versione, puoi controllare i dettagli all'indirizzo il seguente collegamento.


Lascia un tuo commento

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

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  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.