November 28, 2022

Branches Tech

Engagé pour la qualité technologique

Go language revises memory model

2 min read

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 styles 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 kinds 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 situations 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 as well as 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 variety 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 demand 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 sources 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 table de sauts pour implémenter de grandes recommendations de commutation d’entiers et de chaînes. Les améliorations de performances pour l’instruction switch varient mais peuvent être de l’ordre de 20 % in addition rapides.
  • La variation prend en charge les liens, les listes et les titres plus clairs dans les commentaires de documentation.
  • La contrainte de construction, unixest maintenant reconnu dans //go:make lignes.
  • La prise en demand est ajoutée pour l’architecture Loongson 64 bits LoongArch sous Linux.

Copyright © 2022 IDG Communications, Inc.