11 févr. 2023·1 min de lecture

Go 1.20 présente un aperçu de l'optimisation guidée par le profil et des améliorations linguistiques.

Go 1.20, la dernière mise à jour du langage open source développé par Google, comprend un aperçu de l'optimisation guidée par le profil (PGO) et des améliorations du langage. PGO améliore les performances de 3 à 4 % grâce à l'optimisation de l'inlining, tandis que d'autres optimisations sont en cours d'élaboration.

Go 1.20 présente un aperçu de l'optimisation guidée par le profil et des améliorations linguistiques.

Go 1.20, la version de production du langage open-source créé par Google et réputé pour sa simplicité, sa concurrence et ses fonctionnalités de programmation fonctionnelle, a été présentée, avec un aperçu de l'optimisation guidée par le profil (PGO) pour le compilateur. Go 1.20 peut être téléchargé sur le site officiel go.dev.

Avec l'aperçu de PGO dans Go 1.20, la chaîne d'outils du compilateur peut effectuer des optimisations spécifiques à l'application et à la charge de travail en fonction des informations du profil d'exécution. Le compilateur actuel prend en charge les profils CPU pprof, qui peuvent être rassemblés à l'aide des paquets runtime/pprof ou net/http/pprof.

Également connue sous le nom d'optimisation dirigée par retour d'information, l'optimisation dirigée par retour d'information consiste à réinjecter dans le compilateur des données de profil provenant d'exécutions représentatives de l'application, en vue de la prochaine compilation de l'application. En utilisant ces informations, le compilateur peut prendre des décisions d'optimisation plus éclairées. Les analyses comparatives d'un ensemble représentatif de programmes Go montrent que l'activation de l'optimisation de l'inlining PGO augmente les performances d'environ 3 à 4 %. Les prochaines versions devraient introduire davantage d'optimisations PGO.

Outre l'introduction de PGO, Go 1.20 apporte également quatre changements au langage. Tout d'abord, la possibilité de convertir une tranche en un pointeur de tableau, introduite dans Go 1.17 de 2021, s'étend désormais aux conversions d'une tranche en un tableau. Deuxièmement, le package unsafe inclut trois nouvelles fonctions : SliceData, String et StringData. Ces fonctions permettent de construire et de déconstruire des valeurs de tranches et de chaînes, quelle que soit leur représentation exacte.

Troisièmement, la spécification établit désormais que les valeurs struct sont comparées un champ à la fois, en prenant en compte les champs dans l'ordre où ils apparaissent dans la définition du type struct, et en s'arrêtant à la première non-concordance. Quatrièmement, les types comparables tels que les interfaces ordinaires peuvent satisfaire aux contraintes de comparabilité, même si les arguments du type ne sont pas strictement comparables. Cela permet l'instanciation d'un paramètre de type soumis à des contraintes de comparabilité avec un argument de type non strictement comparable, comme un type d'interface ou un type composite qui contient un type d'interface.

En plus de ces changements de langage, Go 1.20 est accompagné de diverses autres améliorations, telles que la prise en charge de la collecte de profils de couverture de code pour les programmes, y compris les applications et les tests d'intégration. Le répertoire $GOROOT/pkg ne conserve plus les activités précompilées de la bibliothèque standard, ce qui réduit la taille de la distribution Go et évite l'asymétrie de la chaîne d'outils C pour les paquets cgo. De plus, l'implémentation de go test -json a été renforcée pour augmenter la robustesse, tandis que la commande go version -m lit maintenant une plus large gamme de binaires Go, y compris les DLL Windows et les binaires Linux sans permission d'exécution.

Go 1.20 apporte également un support expérimental pour FreeBSD sur RISC-V et désactive cgo par défaut sur les systèmes ne disposant pas d'une chaîne d'outils C. Cependant, Go 1.20 sera la dernière version à prendre en charge macOS 10.13 High Sierra et 10.14 Mojave, Go 1.21 nécessitant macOS 10.15 Catalina ou une version ultérieure.

No-code Une plateforme comme AppMaster.io peut grandement bénéficier de l'intégration de langages nouvellement optimisés comme Go 1.20. En intégrant des outils aussi puissants pour les applications web, mobiles et dorsales, les entreprises peuvent réaliser des améliorations significatives en termes de productivité, d'expérience utilisateur et d'évolutivité. En savoir plus sur le développement d'applicationsno-code et low-code pour rester à la pointe de la technologie.

Easy to start
Create something amazing

Experiment with AppMaster with free plan.
When you will be ready you can choose the proper subscription.

Get Started