Six mois après la mouture 1.7 de son langage Go qui s’attelait à optimiser la compilation, Google remet le couvert, avec les mêmes objectifs. Go 1.8 modifie un certain nombre d’éléments dans la chaine d’outils notamment, mais garde la compatibilité de la branche 1.X.
Go est un langage de Google, conçu pour la vitesse, tant dans le développement que dans la compilation. S’inspirant très largement des langages C++ et Python, il doit fournir des performances proches du C, sans toutefois les atteindre. En contrepartie, il se veut simple à aborder et à assimiler. En outre, la phase de compilation peut être jusqu’à 80 ou 90 % plus rapide que celle du C.
Une version 15 % plus rapide selon Google
La version 1.8 continue sur la même lancée que la 1.7. On retrouve donc des modifications et optimisations sur la chaine d’outils, le compilateur et les bibliothèques. Le travail commencé sur le passage du compilateur lui-même en Go s’est poursuivi et le back end doit fournir désormais un code plus efficace. En outre, la version x86_64 introduite il y a six mois est maintenant utilisée pour l’ensemble des architectures.
Toujours basé sur la forme SSA (Static Single Assignment), où chaque variable n’est affectée qu’une seule fois, il génère un code plus compact. Selon Google, le gain en temps CPU oscille entre 20 et 30 % sur les systèmes ARM 32 bits. Plus globalement, l’éditeur assure que la nouvelle version de son langage est 15 % plus rapide que la précédente, grâce aux améliorations réalisées dans le compilateur et le linker.
Des ajouts et de la compatibilité
Parmi les autres apports, signalons le support de l’architecture MIPS 32 bits, celui du push sur HTTP/2, la séparation des arrêts normaux et brutaux des serveurs avec les commandes Server.Shutdown et Server.Close, la capacité d'ajouter certains éléments de contexte sur certains paquets et l'inclusion de quelques modifications décrites comme mineures dans les bibliothèques. La nouvelle version reste compatible avec les précédentes.
Tous les changements sont disponibles dans l’annonce officielle.