June 15, 2024

Network System

Une technologie unique

Le langage Go révise le modèle de mémoire

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 kinds qui facilitent l’utilisation des valeurs atomiques.

Maintenant dans une stage de prévisualisation, Go 1.19 peut être téléchargé à partir de aller.dev. La version 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 version. Go 1.19 suggest également de nouveaux varieties 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 conditions 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 moreover 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 sort 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 guidelines 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 % plus rapides.
  • La variation prend en demand les liens, les listes et les titres in addition clairs dans les commentaires de documentation.
  • La contrainte de design, unixest maintenant reconnu dans //go:develop lignes.
  • La prise en charge est ajoutée pour l’architecture Loongson 64 bits LoongArch sous Linux.

Copyright © 2022 IDG Communications, Inc.