Connexion
Abonnez-vous

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

Binaires plus rapides et légers à la clé

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

Le 19 août 2016 à 09h00

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.

Commentaires (33)

Vous devez être abonné pour pouvoir commenter.

Abonnez-vous
votre avatar

 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.

votre avatar

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.

votre avatar

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.

votre avatar

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.

votre avatar

euuh il ont sans doute mis des pokemon dedans ->[]

votre avatar







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.





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.


votre avatar

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

votre avatar

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

 

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.



 ;)

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

votre avatar

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.

votre avatar







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=" />


votre avatar

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++.

votre avatar

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;

votre avatar







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.


votre avatar

On peut faire de la GUI avec ça ?

votre avatar







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 …)


votre avatar

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.

votre avatar

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

votre avatar

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

votre avatar

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)

votre avatar







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;


votre avatar

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.

votre avatar

Merci pour la ressource :)

votre avatar







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.


votre avatar

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

&nbsp;

votre avatar

&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.

votre avatar

C’est principalement pour faire des applications sur serveur.

votre avatar







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.





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 :github.com GitHub


votre avatar







Noodens a écrit :



&nbsp;C’est utilisé comme langage ?





Non, mais c’est pas l’objectif.


votre avatar







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 ^^


votre avatar

C’est pour Pokémon GO non ?

votre avatar

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).

votre avatar

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

votre avatar

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

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

Fermer