Le langage de programmation très attendu Go 1.18 a finalement été lancé en tant que version de production, avec ses capacités génériques révolutionnaires. Il s'agit du changement le plus important apporté au langage de programmation Go depuis le lancement initial de Go 1.0 en 2012. Go 1.18 peut être téléchargé sur go.dev à partir du 15 mars.
Les génériques ont été la fonctionnalité la plus demandée par les programmeurs Go, offrant une prise en charge du code générique utilisant des types paramétrés. Les versions ultérieures devraient fournir une prise en charge supplémentaire pour les cas d'utilisation génériques plus complexes. Les utilisateurs peuvent accéder aux informations sur cette fonctionnalité via un didacticiel générique et des notes de version .
Le serveur de langage Go, gopls, ainsi que l'extension Visual Studio Code Go, prennent désormais en charge les génériques. Pour obtenir des instructions sur l'installation de gopls avec des génériques, reportez-vous à la documentation.
La version de production Go 1.18 suit ses étapes bêta et de version candidate. La sortie initiale était prévue pour février 2022 mais a été reportée à la mi-mars. Go 1.18 Beta 1, qui a fait ses débuts le 14 décembre, était la première version de prévisualisation du langage open source développé par Google pour prendre en charge le code générique utilisant des types paramétrés. Cette version bêta a également été la version bêta de Go la plus téléchargée à ce jour, avec deux fois plus de téléchargements que n'importe quelle version bêta précédente.
La programmation générique est une amélioration qui permet la représentation des fonctions et des structures de données sous une forme générique, les types étant factorisés. Cela facilite le partage de code et simplifie la construction de programmes.
L'équipe Go a conseillé la prudence à l'approche des nouvelles fonctionnalités génériques, car de nouveaux bogues pourraient apparaître avec toute nouvelle fonctionnalité importante. De plus, la prise en charge de cas subtils spécifiques, tels que certains types de types génériques récursifs, a été reportée aux versions futures.
Malgré cet avertissement, les premiers utilisateurs auraient été satisfaits de la nouvelle fonctionnalité. Un bref tutoriel sur la prise en main des génériques a été publié ici . Alors que Go avait des types d'interface, une forme de programmation générique, il lui manquait certains aspects que les développeurs de Go attendaient des génériques, comme indiqué dans un article de blog de juillet 2019. Par exemple, les partisans des génériques Go recherchaient des fonctions comme Reverse sans se soucier du type d'élément d'une tranche.
Les notes publiées pour Go 1.18 mettent également en évidence ses autres fonctionnalités clés, telles que :
- Prise en charge intégrée de l'écriture de tests basés sur le fuzzing pour identifier les entrées provoquant le plantage d'un programme ou renvoyant des réponses invalides. Cette fonctionnalité est expérimentale dans Go 1.18.
- Un mode d'espace de travail Go permettant aux développeurs de travailler avec plusieurs modules Go simultanément, indispensable pour les projets plus étendus.
- Une commande go version -m améliorée qui enregistre désormais les détails de la construction, tels que les indicateurs du compilateur.
- Une variable d'environnement GOAMD64 permettant aux utilisateurs de choisir parmi quatre versions de l'architecture AMD64.
- Améliorations des performances du processeur sur Apple M1, ARM64 et PowerPC64 jusqu'à 20 %, attribuables à l'extension de la convention d'appel ABI du registre Go 1.17 à ces architectures.
- Les ports Windows/Arm et Windows/Arm64 prennent désormais en charge la préemption non coopérative, ce qui rend cette fonctionnalité disponible pour les quatre ports Windows et corrige potentiellement les bogues subtils rencontrés lors de l'appel de fonctions Win32 qui bloquent pendant de longues périodes.
- Frais généraux de récupération de place plus prévisibles lorsque les sources de travail GC hors tas sont importantes, en raison de l'inclusion de ces sources lors de la détermination de la fréquence des exécutions de récupération de place.
Go 1.17 est sorti en août. Go est surtout connu pour son utilisation dans le développement du système de conteneur Docker et a été conçu pour être un langage de programmation simple et facile à apprendre avec un support robuste pour la concurrence. Pour les développeurs qui souhaitent explorer des solutions no-code, telles que la plate-forme d' AppMaster, pour créer des applications Web, mobiles et backend, cela peut aider à accélérer le développement d'applications et à réduire les coûts tout en éliminant la dette technique.