Go 1.22 est déjà sorti, découvrez ses nouvelles fonctionnalités et améliorations

Golande

Go est un langage de programmation concurrent compilé avec un typage statique inspiré de la syntaxe C.

La nouvelle version de Go 1.22, arrive six mois après la version 1.21, avec un certain nombre de changements notables dans l'ensemble d'outils, le runtime, les améliorations d'optimisation, les améliorations du compilateur et les bibliothèques.

Pour ceux qui ne connaissent pas Go, je dois vous dire que c'estC'est un langage de programmation développé par Google avec la participation de la communauté en tant que solution hybride qui combine les hautes performances des langages compilés avec des avantages tels que les langages de script tels que la facilité d'écriture du code, la rapidité de développement et la protection contre les erreurs.

Actualités principales de Go 1.22

Dans cette nouvelle version, introduite à partir de Go 1.22, met en évidence deux changements dans les boucles "for"Comme Auparavant, les variables déclarées par une boucle for étaient créées une seule fois et ont été mis à jour à chaque itération. Dans Go 1.22, chaque itération de la boucle crée de nouvelles variables pour éviter les erreurs de partage accidentelles, en plus Ajout du support expérimental (GOEXPERIMENT=rangefunc) pour les fonctions de plage dans les boucles for, qui vous permet de spécifier une fonction comme itérateur et résolu un problème de longue date avec les boucles for ce qui a amené les appels de coroutine à partager les variables de boucle entre les itérations. De plus, les boucles for peuvent désormais parcourir des entiers. Par exemple:

package main import "fmt" func main() { for i := range 10 { fmt.Println(10 - i) } fmt.Println("go1.22 décolle!") }

Un autre changement notable dans cette nouvelle version est l'introduction du possibilité d'utiliser un répertoire «vendeur« qui contient les dépendances de l'espace de travail. Maintenant les commandes vous pouvez utiliser ce répertoire, qui est créé avec `aller travailler, vendeur` et est utilisé dans les commandes de construction quand ` est défini-mod` dans «vendeur«, ceci étant la valeur par défaut lorsqu'un répertoire existe «vendeur» dans l'espace de travail.

Il est important de noter que la fonctionnalité de `va chercher` n'est plus supporté en dehors d'un module en mode GOPATH hérité Cependant, d'autres commandes de construction comme « allez construire » et « allez tester » Ils continueront à travailler indéfiniment pour les anciens programmes GOPATH. De plus, la commande `aller mod init` n'essaiera plus d'importer les exigences du module à partir des fichiers de configuration d'autres «« vente » (comme Gopkg.lock).

Go 1.22 introduit un nouveau paquet io/dangereux qui fournit des fonctionnalités pour travailler avec des pointeurs et une mémoire non sécurisée. Ce paquet fournit des méthodes pour convertir des pointeurs vers et depuis des types sûrs et non sécurisés, ainsi que pour effectuer des opérations de copie de mémoire sans vérification des limites.

Les travaux se sont poursuivis pour inclure des optimisations dans le compilateur basées sur les résultats de la pProfilage de code PGO, et est-ce maintenant le compilateur utilise des outils de dévirtualisation pour remplacer les appels indirects de diverses méthodes avec exécution de blocs en ligne étendue. Lorsque PGO a été activé, le changement ajouté a amélioré les performances de la plupart des programmes de 2 % à 14 %.

Dans la version de Optez pour Windows, les programmes qui lient ou chargent des bibliothèques Allez construire avec -buildmode=c-archive o -buildmode=c-partagé peut désormais utiliser l'API Event Logging Windows (ETW) à travers les nouveaux forfaits exécution/trace y crochet de trace, qui implémente le protocole de collecte de traces d'événements Go en tant que fournisseur ETW.

Parmi les autres changements qui ressortent:

  • La commande allez tester -couverture imprime désormais les résumés de couverture pour les packages couverts qui ne disposent pas de leurs propres fichiers de test.
  • système d'exploitation/exécutable, la possibilité de définir des attributs de contexte a été ajoutée, vous permettant de définir des valeurs telles que le répertoire de travail, les variables d'environnement et le descripteur de fichier d'entrée/sortie pour les commandes exécutées.
  • Gestion optimisée de la mémoire lors de l'exécution, entraînant une augmentation des performances de 1 à 3 % et une réduction de 1 % de la consommation de mémoire pour la plupart des applications.
  • El Paquete réseau/http, la fonction a été ajoutée FermerIdleConnections au client HTTP, qui ferme toutes les connexions inactives que le client a récemment utilisées
  • Une implémentation expérimentale améliorée (GOEXPERIMENT=newinliner) du mécanisme d'insertion d'appel a été ajoutée au compilateur, qui utilise des heuristiques pour séparer les opérations importantes des opérations non importantes.
  • Le package a été ajouté » maths/rand/v2 » à la bibliothèque standard, qui propose une API plus cohérente et utilise des algorithmes plus rapides pour générer des nombres pseudo-aléatoires.
  • El Paquete net/http.ServeMux Ajout de la possibilité de spécifier des méthodes et des masques dans les modèles.

Enfin, si vous êtes intéressé à en savoir plus, vous pouvez vérifier les détails dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.