Go 1.21 arriba amb canvis en la numeració, millores i més

Goland

Go és un llenguatge de programació concurrent i compilat amb tipat estàtic inspirat en la sintaxi de C

Poc després de 6 mesos del llançament de la versió anterior, arriba la nova versió del popular llenguatge de programació Vés 1.21 i en aquesta nova versió es destaquen les noves característiques afegides a l'idioma, així com també PGO, la compatibilitat amb versions anteriors i més.

Per als que desconeixen de Go, els he de dir que aquest es un llenguatge de programació que està sent desenvolupat per Google amb la participació de la comunitat com una solució híbrida que combina l'alt rendiment dels llenguatges compilats amb avantatges com ara els llenguatges de scripting com la facilitat per escriure codi, velocitat de desenvolupament i protecció contra errors.

Principals novetats de Go 1.21

Amb el llançament d'aquesta nova versió de Go 1.21, s'introdueix un petit canvi a la numeració de versions, ia la numeració es venia manejant de la forma Go 1.x per referir-nos tant a la versió global de l'idioma Go com a la família de versions, així com a la primera versió d'aquesta família. A partir de Go 1.21, la primera versió ara és Go 1.X.0. Podeu obtenir més informació sobre com s'està manejant la nova numeració de Go a el següent enllaç.

Per part dels canvis que es destaquen d'aquest nou llançament podrem trobar el suport implementat per a optimitzacions basades en els resultats del perfilat de codi (PGO – Optimització guiada per perfils), ja que a la versió anterior només estava disponible com una vista prèvia i ara a Go 1.21 està disponible per al seu ús general.

Un altre dels canvis que es destaca d'aquesta nova versió, és que es va implementar un port experimental per compilar el codi de preparació de WebAssembly usant l'API WASI (WebAssembly System Interface) per proporcionar una execució independent.

A més, també es destaca que es van afegir funcions integrades min i màx per seleccionar el valor més petit/més gran, així com la funció d'esborrar per eliminar o restablir tots els elements al mapa o estructures de tall.

També es destaca que en aquesta nova versió, la utilitat go és compatible amb versions anteriors i posteriors d'altres versions del llenguatge Go, cosa que us permet utilitzar eines antigues per crear codi nou i viceversa. Quan Go ha de fer aquest tipus de canvi de comportament, ara tria entre el comportament antic i el nou en funció de l'espai de treball.

D'altra banda, també podrem trobar que es va afegir el suport experimental per a la nova semàntica per al processament de variables en bucles, la qual cosa permet evitar errors típics per comportament específic en utilitzar tancaments i corrutines a les iteracions. La nova semàntica implica la creació per a cada iteració del cicle d'una instància separada de la variable declarada al cicle for utilitzant l'operador :=.

S'han realitzat també millores en la inferència de tipus en funcions genèriques dissenyades per treballar amb diversos tipus alhora i és que ara es pot trucar a una funció amb arguments que són en si mateixes funcions genèriques, a més que la inferència de tipus ara també considera els mètodes quan s'assigna un valor a una interfície i que la inferència de tipus ara és necessària en fer coincidir els tipus corresponents a les assignacions

Dels altres canvis que es destaquen, podem trobar els nous paquets agregats a la biblioteca estàndard:

  • log/slog: funcions per escriure registres estructurats.
  • slices: operacions típiques amb slices de qualsevol tipus.
  • maps: operacions útils en assignacions (mapa) amb qualsevol tipus de claus i elements.
    cmp: funcions per comparar valors ordenats.
  • El compilador es va reconstruir amb la inclusió d'optimitzacions PGO, cosa que va permetre accelerar la compilació de programes en un 2-4%.
  • El recol·lector d'elements no utilitzats s'ha optimitzat per reduir la latència fins a un 40% en algunes aplicacions.
  • Reducció de les despeses generals en rastrejar el codi amb el paquet runtime/trace als sistemes amd64 i arm64.

Finalment, si hi ets interessat a poder conèixer més sobre això, pots consultar els detalls al següent enllaç.