Cliquez pour suivre

Le 2 août, l'équipe Go a publié Go 1.19, qui peut être obtenu en visitant la page de téléchargement [1] .

Go 1.19 améliore et améliore Go 1.18 [2] , et le développement des génériques dans Go 1.19 se concentre sur la résolution des problèmes subtils et des cas particuliers signalés par la communauté, ainsi que sur des améliorations significatives des performances (jusqu'à 20 % pour certains programmes génériques ).

Les commentaires de documentation prennent désormais en charge les liens, les listes et la syntaxe d'en-tête plus propre [3] . Cette modification aide les utilisateurs à écrire des commentaires de documentation plus propres et plus faciles à parcourir, en particulier dans les packages avec de grandes API. Dans le cadre de ce changement, gofmtles commentaires de la documentation sont maintenant reformatés pour appliquer un formatage standard à l'utilisation de ces fonctions. Voir " Go Doc Comments [4] " pour tous les détails.

Le modèle de mémoire de Go [5] définit maintenant explicitement le comportement du paquet sync/atomic [6] . La définition formelle de la relation qui s'est produite auparavant a été modifiée pour s'aligner sur le modèle de mémoire utilisé par C, C++, Java, JavaScript, Rust et Swift. Les programmes existants ne sont pas affectés. Comme le modèle de mémoire a été mis à jour, il existe également de nouveaux types [7] dans le package sync/atomic , tels que atomic.Int64 [8] et atomic.Pointer[T] [9] , pour faciliter le travail avec atomic valeurs.

Pour des raisons de sécurité [10] , le paquet os/exec ne respecte plus les chemins relatifs dans les recherches PATH. Voir la documentation du package [11] pour plus de détails . L'utilisation existante de golang.org/x/sys/execabs[12 ] peut être ramenée à os/exec dans les programmes construits avec Go 1.19 ou version ultérieure uniquement.

Le ramasse-miettes ajoute la prise en charge des limites de mémoire logicielle, discutées en détail dans le nouveau guide de ramasse -miettes [13] . Cette limite est particulièrement utile pour optimiser les programmes Go afin qu'ils s'exécutent aussi efficacement que possible dans des conteneurs avec des quantités de mémoire dédiées.

unixLes nouvelles contraintes de construction sont satisfaites lorsque le système d'exploitation cible ( GOOS) est un système de type Unix. Aujourd'hui, semblable à Unix signifie tous les systèmes d'exploitation cibles de Go, à l'exception de js, plan9et .windowszos

Enfin, Go 1.19 inclut diverses améliorations de performances et d'implémentation, notamment l'ajustement dynamique de la pile de goroutines initiale pour réduire la copie de la pile, l'utilisation automatique de descripteurs de fichiers supplémentaires sur la plupart des systèmes Unix, le saut des grandes déclarations de commutateur sur les tables tournantes x86-64 et ARM64, la prise en charge de la fonction d'injection du débogueur appelle ARM64, enregistre la prise en charge d'ABI sur RISC-V et GOARCH=loong64prend en charge expérimentalement Linux s'exécutant sur LoongArch ( ) sur l'architecture Loongson 64 bits.

Référence

[1]

Page de téléchargement :https://go.dev/dl/

[2]

Allez 1.18 :https://go.dev/blog/go1.18

[3]

Liens, listes et syntaxe d'en-tête plus propre :https://go.dev/doc/comment

[4]

Go Doc Commentaires :https://go.dev/doc/comment

[5]

Modèle de mémoire de Go :https://go.dev/ref/mem

[6]

paquet sync/atomique :https://go.dev/pkg/sync/atomic/

[sept]

Il existe également de nouveaux types dans le package sync/atomic :https://go.dev/doc/go1.19#atomic_types

[8]

atomique.Int64 :https://go.dev/pkg/sync/atomic/#Int64

[9]

atomic.Pointer[T] :https://go.dev/pkg/sync/atomic/#Pointer

[dix]

Raisons de sécurité:https://go.dev/blog/path-security

[11]

Documentation du paquet :https://go.dev/pkg/os/exec/#hdr-Executables_in_the_current_directory

[12]

golang.org/x/sys/execabs :https://pkg.go.dev/golang.org/x/sys/execabs

[13]

Nouvelles directives de collecte des ordures :https://go.dev/doc/gc-guide#Memory_limit