Peu de temps après 6 mois de la sortie de la version précédente, la nouvelle version du langage de programmation populaire Go 1.21 arrive et cette nouvelle version met en évidence les nouvelles fonctionnalités ajoutées au langage, ainsi que PGO, la rétrocompatibilité et plus encore.
Pour ceux qui ne connaissent pas Go, je dois vous dire qu’il s’agit d’un langage de programmation développé par Google avec la participation de la communauté comme une solution hybride qui combine les hautes performances des langages compilés avec des avantages tels que les langages de script comme la facilité d’écriture du code, la rapidité de développement et la protection contre les erreurs.
Principales nouveautés de Go 1.21
Avec le lancement de cette nouvelle version de Go 1.21, un petit changement est introduit dans la numérotation des versions, puisque la numérotation avait été gérée à la manière de Go 1.x pour faire référence à la fois à la version globale du langage Go et à la famille de versions , ainsi que la première version de cette famille. Depuis Go 1.21, la première version est maintenant Go 1.X.0. Vous pouvez obtenir plus d’informations sur la façon dont la nouvelle numérotation Go sera gérée sur le lien suivant.
Pour la partie des changements qui se démarquent dans cette nouvelle version, nous pouvons trouver le support mis en œuvre pour les optimisations basées sur les résultats du profilage de code ( PGO – Profile Guided Optimization), car dans la version précédente, il n’était disponible qu’en aperçu et maintenant dans Go 1.21, il est disponible pour une utilisation générale.
Un autre des changements qui ressort de cette nouvelle version est qu’un port expérimental a été implémenté pour compiler le code de préparation WebAssembly à l’aide de l’API WASI (WebAssembly System Interface) afin de fournir une exécution indépendante.
En plus de cela, il convient également de noter que des fonctions min et max intégrées ont été ajoutées pour sélectionner la valeur la plus petite/la plus grande, ainsi que la fonction d’effacement pour supprimer ou réinitialiser tous les éléments sur la carte ou les structures de coupe.
Notez également que dans cette nouvelle version, l’utilitaire go est compatible en amont et en aval avec les autres versions du langage Go, vous permettant d’utiliser d’anciens outils pour créer du nouveau code et vice versa. Lorsque Go doit modifier ce type de comportement, il choisit désormais entre l’ancien et le nouveau comportement en fonction de l’espace de travail.
D’autre part, nous pouvons également constater que le support expérimental de la nouvelle sémantique pour le traitement des variables dans les boucles a été ajouté , ce qui nous permet d’éviter les erreurs typiques dues à un comportement spécifique lors de l’utilisation de fermetures et de coroutines dans les itérations. La nouvelle sémantique implique la création pour chaque itération de la boucle d’une instance distincte de la variable déclarée dans la boucle “for” à l’aide de l’opérateur “:=”.
Des améliorations ont également été apportées à l’inférence de type dans les fonctions génériques conçues pour fonctionner avec plusieurs types en même temps, à savoir qu’une fonction peut désormais être appelée avec des arguments qui sont eux-mêmes des fonctions génériques, en plus de l’inférence de type, considérez désormais également les méthodes lors de l’affectation une valeur à une interface et cette inférence de type est maintenant précise en faisant correspondre les types correspondants dans les affectations
Parmi les autres changements mis en évidence , on retrouve les nouveaux packages ajoutés à la bibliothèque standard :
- log/slog : fonctions d’écriture de logs structurés.
- tranches : opérations typiques avec des tranches de tout type.
- cartes : opérations utiles sur les affectations (carte) avec n’importe quel type de clés et d’éléments.
cmp : fonctions pour comparer les valeurs ordonnées. - Le compilateur a été reconstruit avec l’inclusion des optimisations PGO, ce qui a permis d’accélérer la compilation des programmes de 2 à 4 %.
- Le ramasse-miettes a été optimisé pour réduire la latence jusqu’à 40 % dans certaines applications.
- Réduction des frais généraux lors du traçage du code avec le package runtime/trace sur les systèmes amd64 et arm64.
Enfin, si vous souhaitez en savoir plus, vous pouvez consulter les détails sur le lien suivant.