Google optimise la compilation de son langage Go avec la version 1.7

Google optimise la compilation de son langage Go avec la version 1.7

Binaires plus rapides et légers à la clé

Avatar de l'auteur
Vincent Hermann

Publié dans

Logiciel

19/08/2016 2 minutes
33

Google optimise la compilation de son langage Go avec la version 1.7

Google propose depuis peu la version 1.7 de son langage de développement Go. Au programme, des améliorations sur la compilation, notamment sur l’utilisation du processeur.

Six mois après la version 1.6, la nouvelle mouture 1.7 du langage Go est disponible. Elle est surtout synonyme d’améliorations pour la chaine d’outils. Google a entrepris de vastes travaux visant à convertir le compilateur lui-même en langage Go, une opération qui débute avec le back end. Il est désormais basé sur la forme SSA (Static single assignment), chaque variable n’étant donc affectée qu’une seule et unique fois.

Selon Google, les optimisations sont donc appliquées de manière beaucoup plus efficace, comme l’élimination des sous-expressions communes. Dans l’ensemble, le gain de performances irait de 5 à 35 % selon les opérations d’après les tests réalisés par l’éditeur. En outre, le code produit est annoncé comme plus compact. Pour l’instant, ces changements ne sont exploitables que sur architecture x86_64, même si les autres seront ajoutées par la suite.

Ces améliorations se combinent à un nouveau format d’exportation, lui aussi plus compact. Google indique dans son annonce que les binaires qui en résultent seront plus légers de 20 à 30 %, soit un gain significatif. Les programmes ainsi compilés devraient outre être plus rapides, grâce à des optimisations dans la bibliothèque standard et dans le ramasse-miettes. Ce devrait être particulièrement le cas pour les programmes ayant de nombreuses goroutines.

Outre un support ajouté pour macOS Sierra, on pourra consulter la liste complète des nouveautés depuis cette page. Go peut quant à lui se télécharger depuis son site officiel.

Écrit par Vincent Hermann

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Commentaires (33)


 C’est utilisé comme langage ?



Hormis les news sur les nouvelles versions je n’en entends jamais parler… je ne sais même pas quel IDE est compatible.


C’est principalement pour faire des applications sur serveur.








Noodens a écrit :



 C’est utilisé comme langage ?



Hormis les news sur les nouvelles versions je n’en entends jamais parler… je ne sais même pas quel IDE est compatible.





Niveau IDE je ne sais pas trop, après quelques “gros” projets l’utilisent, je pense notamment à Docker ou Kubernetes.



Tu peux en trouver d’autres ici :https://github.com/trending/go









Noodens a écrit :



 C’est utilisé comme langage ?





Non, mais c’est pas l’objectif.









vloz a écrit :



Non, mais c’est pas l’objectif.





Là je suis un peu perdu <img data-src=" />ou alors c’est de l’ironie ^^



C’est pour Pokémon GO non ?


On n’en parle pas beaucoup mais ça attire la curiosité. C’est un langage à la fois très simple à prendre en main, très puissant, très compatible et très performant.



Après je ne connais pas de langage récent qui a fait l’unanimité instantanément, sauf sur les plateformes où ces langages sont obligatoires (style swift sur iOS).


Perso j’en ai fait un peu pour test avec visual studio code


Ah, parfait ! Ce langage est particulièrement excellent, ça fait plaisir de voir une nouvelle version sortir :-)


&nbsp;Ok, merci à vous pour ces infos.



J’avoue que de ce que j’en ai vu j’aime bien la syntaxe, mais je n’ai pas l’impression de voir une vraie dynamique/écosystème autour.


C’était volontairement impertinent, la réponse plus détaillée:

Google ne vise à pas à s’étendre à tout prix avec ce langage (contrairement à Dart, qui est un echec sur ce point) car la cible c’est plus des gros barbus avec des projet bien specifique qu’une cours de récrée pleine de hype.

Les mecs les plus enclins à utiliser Go aujourd’hui ne craignent pas pour sa pérennité car le langage est assez mature et ouvert, et leur bagage assez solide pour ne pas en dépendre.


Ce langage est très utiliser pour les projets entourant docker par exemple,a un point même que si tu veux faire un truc pour docker, tu ne seras pas pris aux sérieux si c’est pas développé en Golang.



J’exagère un peu c’est vrai.


Golang à été crée pour que les jeunes employées ayant très peu d’expérience puissent être productif le plus rapidement possible. &nbsp;Rob Pike a été très claire la dessus.


euuh il ont sans doute mis des pokemon dedans -&gt;[]








MoonRa a écrit :



Golang à été crée pour que les jeunes employées ayant très peu d’expérience puissent être productif le plus rapidement possible. &nbsp;Rob Pike a été très claire la dessus.





Oui t’as lu la page wikipedia, c’est bien. Maintenant va faire un tour au meet-up de go et cherche les “debutant” qui utilisent go dans un cadre pro.



Intellij a un plugin golang bien foutu, sinon sublime text avec gosublime est aussi très bon.


https://blog.golang.org/go1.7-binary-size

&nbsp;

Go was designed for writing servers. That is how it is most widely used today, and as a result a lot of work on the runtime and compiler is focused on issues that matter to servers: latency, ease of deployment, precise garbage collection, fast startup time, performance.



&nbsp;;)

Edit: y’a pas moyen de connaitre les tags pour les commentaires ? Et je trouve que les smileys sont pas très rangés :(


Intellij community et pycharm community avec le plugin go font très bien le taf.

En plus de docker et kubernes, on peut citer influxdb (db timeseries) ou grafana (frontend métrologie).

Concernant les applications desktop ce n’est pas utilisé même si ce serait possible.








MoonRa a écrit :



Golang à été crée pour que les jeunes employées ayant très peu d’expérience puissent être productif le plus rapidement possible.  Rob Pike a été très claire la dessus.







Je rejoins l’avis de @vloz. Malgré sa syntaxe abordable, c’est plutôt utilisé par des gens qui savent ce qu’ils font et ont eu une bonne raison de choisir Go et pas Python, Js, ou autre…



De toutes façons, je ne connais pas de boites qui commencent un projet en se disant: “bah, on va coder en Go, comme ca on pourra prendre de jeunes employées ayant très peu d’expérience”. <img data-src=" />



Je vois de plus en plus de nouveaux projets en Go.



C’est un language élégant et puissant, une sorte de C++ nouvelle génération.



De ce point de vue ça doit être plus facile de former qqun au Go qu’au C++.


Je ne connaissais que de nom ; à la faveur de cet article, je connais en plus via la description faite dans son article wikipédia.



Ca a l’air effectivement intéressant, notamment l’approche du sous-typage qui semble une forme de mix entre la notion de contrat par interface, celle d’OO, et celle (qui a ma faveur en ce moment) d’orienté prototype à la Javascript. Le tout avec du fortement typé, et de bonnes perfs…



… vu comme ça, de loin, ça pourrait être ma prochaine marotte <img data-src=" />

&nbsp;








brazomyna a écrit :



Je ne connaissais que de nom ; à la faveur de cet article, je connais en plus via la description faite dans son article wikipédia.

&nbsp;



Et pour ceux qui découvrent comme moi et que ça intéresse, le site gobyexample.com montre en dix minutes la gueule du code et les principales caractéristiques du langage.



On peut faire de la GUI avec ça ?








Noodens a écrit :



&nbsp;C’est utilisé comme langage ?



Hormis les news sur les nouvelles versions je n’en entends jamais parler… je ne sais même pas quel IDE est compatible.





Si tu veux des références :&nbsp;Les infras de LetsEncrypt et Twitch sont codés en GoLang.

&nbsp;

La plupart des IDE sont compatibles (Intellij, SublimeText …)



J’ai fait le choix de Go dans mon entreprise. C’est un langage simple et performant. Côté server on est 10x plus rapide que du python et ruby.m et cela s’apprend en moins d’une semaine. Le seul problème de Go est l’absence de genericité. C’est une des raison principale qui fait qu’il n’y ait pas de framework mais plutôt des librairies.


Vmware l’utilise pour sa gestion des containers il me semble ( vSphere Integrated Container )


Les goroutines et les channels sont simplement une pure merveille. #love#


Je viens de retranscrire toute une API basée sur LAMP en Node.JS et je vais bientôt la faire en Go ^^ J’avais gagné en perf et surtout en réactivité, je ne pense pas voir de diff avec Go… mais bon ça a l’air puissant et intéressant comme langage. (et les callback hell m’y poussent un peu)








manu0086 a écrit :



Node.JS&nbsp; (…) et les callback hell m’y poussent un peu





Même avec l’utilisation de promises&nbsp; (genre avec la lib Q) ?

&nbsp;



J’utilise async pour gérer les callbacks, ça suffit à mes besoins actuels.&nbsp;&nbsp;



Je n’ai jamais été fan de javascript mais les perfs sont excellentes, si Go est aussi performant (ce qui semble être le cas), je vais devoir sérieusement m’y intéresser.


Merci pour la ressource :)








manu0086 a écrit :



si Go est aussi performant (ce qui semble être le cas), je vais devoir sérieusement m’y intéresser.





Vu l’ADN de Go (typage fort, compil, …) ça ne me semble que pouvoir aller dans le sens de perfs plus élevées.



Après, comme tu le dis bien, le JS est déjà très performant ; donc hormis pour des projets où les contraintes en perfs sont centrales, perso j’aurais tendance à privilégier la richesse de l’écosystème existant sous nodeJS pour gagner en rapidité de développement.



Déjà les langages de programmation fonctionnelle c’est marginal alors de la programmation fonctionnelle multithread/concurente c’est encore plus rare&nbsp; :)

&nbsp;