« Au cours des dernières années, le public de Go est passé des utilisateurs bêta aux utilisateurs traditionnels. Aujourd'hui, nos utilisateurs proviennent d'une grande variété de milieux, d'expériences et d'attentes. Les besoins des utilisateurs augmentent plus rapidement que le projet Go ne peut actuellement les aborder. Pour simplifier l'expérience pour les utilisateurs débutants de Go, nous avons créé le Developer eXperience Working Group (DXWG) », indiquait Google en mi-avril.
Aussi, il n’est pas étonnant de voir que c’est ce groupe de travail qui a fait l’annonce de la disponibilité de la version bêta 1 de Go 1.9.
Changements dans le langage
Il y a un changement dans le langage. Go prend désormais en charge les types d'alias pour supporter la réparation progressive du code tout en déplaçant un type entre les paquets. Le document de conception de type alias et un article sur la refactorisation couvrent le problème en détail. En bref, une déclaration de type alias a la forme:
Code Go : | Sélectionner tout |
Type T1 = T2
Cette déclaration introduit un nom d'alias T1– une autre orthographe – pour le type désigné par T2, c'est-à-dire que T1 et T2 correspondent au même type.
Outils
Compilation parallèle
Le compilateur Go prend désormais en charge la compilation des fonctions d'un package en parallèle, en profitant de multiples noyaux. Cela s'ajoute au support existant de la commande go pour la compilation parallèle de paquets distincts. La compilation parallèle est activée par défaut, mais peut être désactivée en définissant la variable d'environnement GO19CONCURRENTCOMPILATION à 0.
Correspondance du fournisseur avec. / …
Suite à une requête populaire. / ... ne correspond plus aux packages dans les répertoires des fournisseurs dans les outils acceptant les noms de paquets, tels que go test. Pour faire correspondre les répertoires des fournisseurs, écrivez ./fournisseur / ....
Chaîne de compilation
La division complexe est maintenant compatible avec C99. Cela a toujours été le cas dans gccgo et est maintenant corrigé dans la chaîne d'outils gc. Le linker générera maintenant des informations DWARF pour les exécutables cgo sur Windows.
Le compilateur comprend maintenant des étendues lexicales dans le DWARF généré, permettant aux débogueurs de cacher des variables qui ne sont pas dans la portée. La section .debug_info est maintenant DWARF version 4.
Les valeurs de GOARM et GO386 affectent maintenant l'ID de génération d'un package compilé, tel qu'utilisé par la mise en cache de dépendance de l'outil Go.
Performance
Les éditeurs assurent que la plupart des programmes devraient fonctionner un peu plus rapidement, en raison des accélérations dans le ramasse-miettes, de l’amélioration du code et des optimisations dans la bibliothèque centrale.
Bibliothèque principale
Nouveau paquet de manipulation d’octets
Go 1.9 comprend un nouveau paquet, math/bits, avec des implémentations optimisées pour manipuler des octets. Dans la plupart des architectures, les fonctions de ce package sont en outre reconnues par le compilateur et traitées comme intrinsèques pour des performances supplémentaires.
Fonctions d'aide aux tests
Les nouvelles méthodes (* T).Helper et (* B).Helper marquent la fonction d'appel en tant que fonction d'aide de test. Lors de l'impression des informations sur les fichiers et les lignes, cette fonction sera ignorée. Cela permet d'écrire des fonctions d'assistant de test tout en disposant de numéros de lignes utiles pour les utilisateurs.
Parmi les changements mineurs apportés à la bibliothèque, nous pouvons citer :
Archive/zip : le Writer ZIP définit maintenant l’octet UTF-8 dans FileHeader.Flags, le cas échéant ;
Crypto/x509 : sur les systèmes Unix, les variables d'environnement SSL_CERT_FILE et SSL_CERT_DIR peuvent maintenant être utilisées pour remplacer les emplacements par défaut du système pour le fichier de certificat SSL et le répertoire des fichiers de certificats SSL, respectivement ;
le chemin FreeBSD /usr/local/etc/ssl/cert.pem est maintenant inclus dans le chemin de recherche du certificat ;
le package prend désormais en charge les domaines exclus dans les contraintes de noms. En plus d'imposer de telles contraintes, CreateCertificate créera des certificats avec des contraintes de noms exclusives si le certificat de modèle fourni comporte le nouveau champ ExcludedDNSDomains peuplé.
Source : note de version
Mise à jour du 25/08/2017 : Google annonce la disponibilité de la version stable de Go 1.9
Cette version s'accompagne de plusieurs changements dans le langage, la bibliothèque principale, le runtime et les outils. La plupart d'entre eux ont été abordés durant la phase bêta. Bien entendu, Go 1.9 vient également avec de nombreuses améliorations et corrections de bogues.
Source : blog Go
Cette version s'accompagne de plusieurs changements dans le langage, la bibliothèque principale, le runtime et les outils. La plupart d'entre eux ont été abordés durant la phase bêta. Bien entendu, Go 1.9 vient également avec de nombreuses améliorations et corrections de bogues.
Source : blog Go