Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Go 1.24: tutte le feature della nuova versione

Go 1.24, nuova versione del linguaggio di programmazione, introduce diverse funzionalità e ottimizzazioni per prestazioni e runtime
Go 1.24: tutte le feature della nuova versione
Go 1.24, nuova versione del linguaggio di programmazione, introduce diverse funzionalità e ottimizzazioni per prestazioni e runtime
Link copiato negli appunti

Il team del linguaggio ha rilasciato Go 1.24, release che introduce funzionalità e ottimizzazioni mantenendo la compatibilità con le versioni precedenti.

Funzionalità di Go 1.24

Go 1.24 supporta gli alias di tipo generics permettendo di parametrizzarli come con i tipi definiti. È per esempio possibile definire un alias come type MioAlias[T int | string] = T, utilizzabile poi con variabili di tipo int o string. Tale funzionalità è disattivabile impostando GOEXPERIMENT=noaliastypeparams ma l'opzione verrà rimossa in Go 1.25.

Nel contesto dei moduli è stata introdotta la direttiva tool nel file go.mod per facilitare il tracciamento delle dipendenze eseguibili. Questo approccio sostituisce la pratica di aggiungere strumenti come importazioni vuote in tools.go. Ora, tramite il comando go tool, è possibile eseguire sia strumenti personalizzati che quelli inclusi nella distribuzione del linguaggio. Inoltre, il comando go get dispone del flag -tool per aggiungere la direttiva tool per un pacchetto specifico. Il meta-pattern tool consente poi di aggiornare o installare in blocco gli strumenti in un modulo con go get tool o go install tool.

Gli eseguibili creati con go run e go tool vengono automaticamente memorizzati nella cache di build per velocizzare le esecuzioni a fronte di un aumento dello spazio occupato dalla cache. I comandi go build, go install e go test includono il flag -json che produce output strutturato in formato JSON per i risultati di build ed eventuali errori. I dati dei risultati di build e test sono poi distinti da un nuovo tipo Action.

Go 1.24 introduce la variabile d'ambiente GOAUTH per un metodo di autenticazione più flessibile. go build imposta la versione del modulo principale nel file binario compilato basandosi sui tag e/o sulle informazioni di commit del sistema di versioning. In presenza di modifiche non committate, il numero di versione aggiunge automaticamente il suffisso +dirty.

Per ignorare le informazioni di versioning è possibile utilizzare -buildvcs=false. L'impostazione GODEBUG=toolchaintrace=1 aiuta inoltre a tracciare il processo di selezione della toolchain di go.

Il tipo os.Root consente di eseguire operazioni sul filesystem in una directory specifica garantendo che le operazioni siano limitate ad essa e prevenendo accessi a percorsi esterni tramite link simbolici. runtime.AddCleanup fornisce un meccanismo di finalizzazione più efficiente rispetto a runtime.SetFinalizer mentre testing.B.Loop offre infine un modo meno soggetto a errori per eseguire iterazioni nei benchmark.

Prestazioni e runtime

Come verificato dai benchmark, Go 1.24 apporta ottimizzazioni al runtime con una riduzione media del 2-3% dell'overhead della CPU. Le ottimizzazioni includono un'implementazione della mappa basata su Swiss Tables, un'allocazione della memoria più efficiente per oggetti di piccole dimensioni e un'implementazione del mutex interno al runtime. Si possono disabilitare la nuova implementazione della mappa e il mutex interno impostando GOEXPERIMENT=noswissmap e GOEXPERIMENT=nospinbitmutex durante il processo di build.

Ti consigliamo anche