Google annonce la disponibilité de Go 1.8 qui serait 15 % plus rapide que son prédécesseur
Grâce à une optimisation de son compilateur

Le , par Stéphane le calme, Chroniqueur Actualités
Google a rendu disponible la version 1.8 de son langage de programmation Go. La plupart des changements qui l’accompagnent sont situés au niveau de la chaîne de compilation et des bibliothèques.

Chaîne de compilation
Go 1.7 a introduit un nouveau compilateur back-end pour les systèmes 64 bits x86. Dans Go 1.8, ce compilateur a été amélioré et est désormais utilisé pour toutes les architectures.

Ce nouveau compilateur, qui s’appuie sur le SSA (Static Single Assignment form, une méthode d'optimisation pour la compilation) comme son prédécesseur, génère un code plus compact et plus efficace. Il fournit également une meilleure plateforme pour les optimisations telles que l’élimination de la vérification des limites. Selon le benchmark de Google, il réduit également de 20 à 30 % le temps CPU requis sur les systèmes ARM 32 bits.

Le compilateur et le linker ont été optimisés et s’exécutent plus rapidement dans cette version que dans Go 1.7. Google assure que, par rapport à la version précédente, Go 1.8 est environ 15 % plus rapide.

Bibliothèque standard

Le paquet net/http inclut désormais un mécanisme pour effectuer des push serveurs HTTP/2 depuis un type Handler. Comme les interfaces Flusher et Hijacker, un ResponseWriter HTTP/2 implémente désormais une interface Pusher.

Go 1.8 ajoute également aux paquets existants plus de support de contexte, une méthode qui comporte un délai, un signal d'annulation et d'autres valeurs sur les limites de l'API. Par exemple, le nouveau Server.Shutdown prend un argument de contexte, des ajouts importants de support de contexte ont été apportés au paquet database/sql et toutes les neuf nouvelles méthodes de Lookup sur net.Resolver prennent désormais un contexte.

Autres changements dans la bibliothèque

archive / tar : l'implémentation de tar corrige de nombreux bogues dans le format de fichier. Le Reader est maintenant capable de traiter les fichiers tar au format PAX avec des entrées supérieures à 8 Go. Le Writer ne produit plus de fichiers tar non valides dans certaines situations impliquant de longs chemins.

compress/flate :
  • il y a eu quelques corrections mineures qui ont été apportées à l'encodeur pour améliorer le taux de compression dans certaines situations. Par conséquent, la sortie codée exacte de DEFLATE peut être différente de Go 1.7. Puisque DEFLATE est la compression sous-jacente de gzip, png, zlib et zip, ces formats peuvent avoir changé de sortie ;
  • le codeur, lorsqu'il fonctionne en mode NoCompression, produit maintenant une sortie cohérente qui n'est pas dépendante de la taille des tranches passées à la méthode Write ;
  • le décodeur, après avoir rencontré une erreur, renvoie maintenant toutes les données tampon qu'il avait décompressées avec l'erreur.

crypto/tls :
  • la nouvelle méthode Conn.CloseWrite permet aux connexions TLS d'être à moitié fermées ;
  • la nouvelle méthode Config.Clone clone une configuration TLS ;
  • le nouveau rappel de Config.GetConfigForClient permet de sélectionner une configuration pour un client dynamiquement, en fonction de ClientHelloInfo du client. La structure ClientHelloInfo a maintenant de nouveaux champs Conn, SignatureSchemes (utilisant le nouveau type SignatureScheme), SupportedProtos et SupportedVersions ;
  • le nouveau rappel de Config.GetClientCertificate permet de sélectionner un certificat client basé sur le message TLS CertificateRequest du serveur, représenté par le nouveau CertificateRequestInfo ;
  • le nouveau Config.KeyLogWriter permet de déboguer des connexions TLS dans WireShark et des outils similaires ;
  • le nouveau rappel de Config.VerifyPeerCertificate permet une validation supplémentaire du certificat présenté par un pair ;
  • le paquetage crypto / tls prend désormais en charge les ensembles de chiffrement AES-128-CBC avec SHA-256, même s’ils sont désactivés par défaut.

Source : note de version


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