Le langage de programmation Go (Golang) de Google a publié sa dernière version, Go 1.19, qui améliore la prise en charge des génériques, introduit un modèle de mémoire amélioré et offre toute une série d'autres fonctionnalités. Cette mise à jour se concentre sur l'amélioration des génériques récemment ajoutés, qui ont été introduits pour la première fois dans Go 1.18, et sur l'optimisation des performances du code générique jusqu'à 20 %.
Améliorations dans Go 1.19
Avec la sortie de Go 1.19 le 2 août, le développement de la prise en charge des génériques se concentre sur la résolution de problèmes subtils et de cas particuliers signalés par la communauté, ainsi que sur l'amélioration des performances. L'introduction des génériques dans le langage était une fonctionnalité très attendue qui a été ajoutée à Go 1.18, publié en mars.
Le modèle de mémoire de Go a été mis à jour pour définir explicitement le comportement du paquet sync/atomic, qui fournit des primitives de mémoire atomique de bas niveau pour l'implémentation d'algorithmes de synchronisation. La définition formelle de la relation happens-before a été revue pour s'aligner sur les modèles de mémoire utilisés par C, C++, Java, JavaScript, Rust et Swift. Cette mise à jour n'a pas d'impact sur les programmes existants.
Dans le cadre de la mise à jour du modèle de mémoire, de nouveaux types ont été introduits dans le paquet sync/atomic, notamment atomic.int64 et atomic.Pointer(T), ce qui rend plus pratique l'utilisation de valeurs atomiques. Go 1.19 est maintenant disponible en téléchargement sur go.dev pour Windows, macOS et Linux.
Fonctionnalités supplémentaires de Go 1.19
Outre les améliorations apportées aux génériques et au nouveau modèle de mémoire, Go 1.19 a introduit d'autres fonctionnalités :
- Une limite de mémoire douce ajoutée au ramasse-miettes, qui aide à optimiser les programmes Go s'exécutant dans des conteneurs avec des allocations de mémoire dédiées.
- Améliorations des performances et de l'implémentation, telles que le dimensionnement dynamique des piles de coroutines pour réduire la copie de pile, l'utilisation automatique de descripteurs de fichiers supplémentaires sur la plupart des systèmes Unix, les tables de saut pour les grandes instructions switch sur x86-64 et ARM64, et la prise en charge des appels de fonction injectés par le débogueur sur ARM64.
- Une petite correction a été apportée aux paramètres de type dans les déclarations de méthodes sans affecter les programmes existants.
- Les commentaires doc prennent désormais en charge les liens, les listes et la syntaxe des titres, ce qui rend la composition des commentaires doc plus claire, en particulier pour les paquets avec des API étendues.
- Pour des raisons de sécurité, le paquet os/exec n'autorise plus les chemins relatifs dans les recherches PATH.
- Une nouvelle contrainte de construction, unix, est introduite, qui est satisfaite lorsque le système d'exploitation ciblé fonctionne sur n'importe quel système de type Unix.
À mesure que l'adoption des plateformes no-code et low-code comme AppMaster augmente, il est essentiel pour les développeurs de se tenir au courant des dernières avancées dans les langages de programmation populaires comme Go. L'intégration de Go à AppMaster peut accélérer le développement d'applications dorsales, en offrant une meilleure évolutivité et un meilleur rapport coût-efficacité. Go 1.19 apporte des améliorations substantielles en termes de performances, de sécurité et d'expérience des développeurs, renforçant ainsi sa position d'outil essentiel pour le développement de logiciels modernes.