Go est disponible en version 1.6
Avec un support automatique du protocole HTTP 2.0 et un nouveau mécanisme pour la réutilisation des templates

Le , par Olivier Famien, Chroniqueur Actualités
Six mois après la sortie de la version 1.5, Go vient de passer à la version 1.6. Dans cette nouvelle itération, l’on peut retenir d’emblée que la compatibilité avec les versions antérieures a été conservée. Par ailleurs, aucun changement au niveau de la spécification du langage n’a été introduit.

Pour cette nouvelle mouture, le point le plus important est le support du protocole HTTP 2.0. Pour rappel, HTTP 2.0 est le successeur du protocole de transfert HTTP 1.1. Le but de cette implémentation est d’améliorer les performances du protocole de transfert. Pour cela, il assure une connexion unique entre les navigateurs et un site web donné.

Dans cette version 1.6, le support de ce protocole HTTP 2.0 a été intégré par défaut. Les applications clientes ou serveur compilées avec cette nouvelle version pourront bénéficier de manière transparente des avantages de ce protocole.

À côté du support du protocole HTTP/2, l’on a également plusieurs autres améliorations.

Dans la version 1.5, il avait été ajouté de manière expérimentale, un mécanisme permettant d’inclure les bibliothèques externes qui se trouvent dans le répertoire « vendor », en utilisant la variable d’environnement GO15VENDOREXPERIMENT optionnelle. Dans cette nouvelle version, cette variable est maintenant activée par défaut.

Au niveau du runtime, il est maintenant possible de détecter automatiquement les erreurs qui surviennent lorsqu’une goroutine essaie de lire un map (contenant des objets clé-valeur associés) tandis qu’une autre goroutine essaie d’accéder au même map en écriture. Quand le scénario ci-dessus se produit, le runtime édite un diagnostic et met fin à l’exécution du programme. Toutefois, pour avoir une meilleure compréhension du problème, il est recommandé de lancer race detector qui est un outil permettant de détecter les erreurs.

Par ailleurs, lorsque le programme rencontre un bogue qui engendre un arrêt d’exécution du code, le runtime n’imprime maintenant que les goroutines concernées par le panic et non l’ensemble des goroutines.

Au niveau des templates, quelques changements ont également été introduits. Lorsque vous utilisez le signe « — » après une action, l’espace après cette action est supprimé. Et lorsque le signe se trouve avant cette action, l’espace avant l’action est également supprimé. À côté de cette nouvelle gestion des espaces autour des expressions, nous avons une nouvelle action {{block}} qui permet de définir une partie d’un template pouvant être remplacée dans différentes instanciations. Pour cela, il va falloir associer ce bloc avec la possibilité de redéfinir les templates nommés.

Enfin, l’on a l’outil CGO qui a connu aussi des aménagements. Nous rappelons que CGO permet aux programmes Go de fonctionner de manière interopérable avec les bibliothèques C. Le changement majeur, en ce qui concerne cet outil, réside dans la définition des règles de partage des pointeurs Go avec les codes C. Pour que Go et C puissent partager une mémoire allouée par Go, il faut qu’un pointeur de cette mémoire soit passé à C comme faisant partie de l’appel de CGO. Pour que cela n’engendre pas d’erreur, il faut que la mémoire elle-même ne contienne aucun pointeur de la mémoire allouée à Go et que le code C ne retienne pas le pointeur après le retour d’appel.

En dehors de ces éléments, l’on note également plusieurs améliorations au niveau de la bibliothèque, du compilateur, du linker et bien d’autres choses encore.

Source : Notes de version

Et vous ?

Que pensez-vous de la nouvelle version de Go ? répond-elle à vos attentes ?

Quelles améliorations souhaiteriez-vous voir dans les prochaines versions du langage ?

Voir aussi

Forum Go


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :
Contacter le responsable de la rubrique Accueil