Go 1.19, une mise à jour du langage de programmation développé par Google prévue en août, introduit un modèle de mémoire révisé et de nouveaux kinds qui facilitent l’utilisation des valeurs atomiques.
Maintenant dans une phase de prévisualisation, Go 1.19 peut être téléchargé à partir de aller.dev. La model est toujours considérée comme instable à ce stade.
Avec Go 1.19, le modèle de mémoire du langage a été révisé pour aligner Go sur le modèle de mémoire utilisé par C, C++, Java, JavaScript et Swift, selon notes de model. Go 1.19 propose également de nouveaux sorts dans le sync/atomic
forfait qui facilitent l’utilisation de valeurs atomiques telles que atomic.int64 et atomic.Pointer(T).
Le modèle de mémoire Go spécifie les circumstances dans lesquelles les lectures d’une variable dans une goroutine peuvent être garanties pour observer les valeurs produites par les écritures sur la même variable dans une goroutine différente. Go ne fournit que des atomiques séquentiellement cohérents, aucune des formes furthermore détendues proposées dans d’autres langues.
Go 1.19 introduit également une “petite” modification du langage, consistant en un correction de la portée des paramètres de form dans les déclarations de méthode. Les programmes existants ne sont pas affectés. Go 1.19 fait suite à la sortie mémorable en mars de Go 1.18, qui présentait des fonctionnalités génériques recherchées depuis longtemps.
Autres nouvelles fonctionnalités et améliorations de Go 1.19 :
- Le runtime inclut désormais la prise en cost d’une limite de mémoire logicielle. La limite inclut le tas Go et les autres mémoires gérées par le runtime et exclut les resources de mémoire externes telles que les mappages du binaire, la mémoire gérée dans d’autres langages et la mémoire détenue par le système d’exploitation pour le compte du programme Go. En outre, le runtime planifie désormais moins de routines de travail GC sur les threads du système d’exploitation inactifs lorsque l’application est suffisamment inactive pour forcer un cycle GC périodique.
- Le compilateur utilise maintenant une desk de sauts pour implémenter de grandes directions de commutation d’entiers et de chaînes. Les améliorations de performances pour l’instruction swap varient mais peuvent être de l’ordre de 20 % furthermore rapides.
- La version prend en demand les liens, les listes et les titres plus clairs dans les commentaires de documentation.
- La contrainte de building,
unix
est maintenant reconnu dans//go:establish
lignes. - La prise en charge est ajoutée pour l’architecture Loongson 64 bits LoongArch sous Linux.
Copyright © 2022 IDG Communications, Inc.