Google publie la version stable de son langage de programmation Go 1.5
Et se débarrasse des derniers vestiges de C
Le 2015-08-20 11:01:24, par Stéphane le calme, Chroniqueur Actualités
Google a publié la sixième version stable de son langage de programmation Go. Go 1.5 inclut des changements significatifs dans son implémentation. Parmi eux, Google cite le fait que « l’outil de chaîne de compilation a été traduit de C vers Go, enlevant les derniers vestiges du code C dans la base de code de Go ». Ce qui a pour effet de créer une intégration plus étroite entre les parties du langage.
De plus, le récupérateur de mémoire a été complètement repensé, conduisant à une réduction conséquente des pauses observées dans la gestion automatique de la mémoire. Russel Cox, un ingénieur supervisant le développement de Go, a expliqué que Google voit désormais des pauses dans une fourchette comprise entre 10 et 20 millisecondes pour un programme de 10Go, contre 1 à 2 secondes de pauses pour la version précédente du récupérateur de mémoire.
Le planificateur a été amélioré de sorte que le nombre de routines Go qui s’exécutent simultanément (valeur par défaut de GOMAXPROCS) puissent être modifié, allant de 1 au nombre de processeurs disponibles. En clair, les développeurs utilisant Go 1.5 n’auront plus à spécifier l’utilisation des cœurs du processeur ; cela sera fait par défaut. « Le récupérateur de mémoire et le programme principal peuvent fonctionner sur des threads et des cœurs différents », a précisé Cox.
Notons également que le linker a été modifié pour permettre la distribution de packages Go sous forme de bibliothèques partagées afin de relier des programmes Go.
Cette mouture embarque également des améliorations des outils développeurs. Le support des paquets dits « internes » vous permet de partager les détails de mise en œuvre entre les paquets. Le support expérimental des paquets de dépendances externes est une étape vers un mécanisme standard de la gestion des dépendances dans les programmes Go. La nouvelle commande « go tool trace » permet la visualisation des traces de programmes générées par la nouvelle infrastructure de traçage dans le runtime. La nouvelle commande « go doc » fournit pour sa part une interface de ligne de commande améliorée pour l’affichage de la documentation du package Go.
Avec « l’expérience mobile Go » de Google améliorée dans cette mouture, les développeurs pourront écrire un programme C qui appelle Go comme une bibliothèque. La version 1.5 supporte également les architectures arm64 pour les systèmes d’exploitation Darwin (iPad et iPhone) et Linux mais également arm pour Darwin. La combinaison de la capacité à appeler Go depuis des programmes C / C++ ainsi que le support ARM sur Darwin permet à l'expérimentation mobile de Go, qui « explore l'utilisation de Go comme un langage NDK (Native Development Kit), un langage natif sur les dispositifs mobiles qui tournent sur Android mais également iOS », a expliqué Cox.
Go pourrait être utilisé comme un langage NDK pour concevoir la logique en arrière-plan pour des applications Android et iOS. De nombreuses applications, en particulier les jeux, font appel à Java ou à Objective-C pour l’interface utilisateur, mais le code natif est utilisé pour concevoir la logique principale de l’application, a expliqué Cox. Pour lui, « l’idée ici est que là où vous utilisez C++, vous pouvez utiliser Go à la place ».
télécharger Go 1.5
Go mobile (gitHub)
Rubrique Go, Forum Go, & tutoriels Go.
Source : note de version
De plus, le récupérateur de mémoire a été complètement repensé, conduisant à une réduction conséquente des pauses observées dans la gestion automatique de la mémoire. Russel Cox, un ingénieur supervisant le développement de Go, a expliqué que Google voit désormais des pauses dans une fourchette comprise entre 10 et 20 millisecondes pour un programme de 10Go, contre 1 à 2 secondes de pauses pour la version précédente du récupérateur de mémoire.
Le planificateur a été amélioré de sorte que le nombre de routines Go qui s’exécutent simultanément (valeur par défaut de GOMAXPROCS) puissent être modifié, allant de 1 au nombre de processeurs disponibles. En clair, les développeurs utilisant Go 1.5 n’auront plus à spécifier l’utilisation des cœurs du processeur ; cela sera fait par défaut. « Le récupérateur de mémoire et le programme principal peuvent fonctionner sur des threads et des cœurs différents », a précisé Cox.
Notons également que le linker a été modifié pour permettre la distribution de packages Go sous forme de bibliothèques partagées afin de relier des programmes Go.
Cette mouture embarque également des améliorations des outils développeurs. Le support des paquets dits « internes » vous permet de partager les détails de mise en œuvre entre les paquets. Le support expérimental des paquets de dépendances externes est une étape vers un mécanisme standard de la gestion des dépendances dans les programmes Go. La nouvelle commande « go tool trace » permet la visualisation des traces de programmes générées par la nouvelle infrastructure de traçage dans le runtime. La nouvelle commande « go doc » fournit pour sa part une interface de ligne de commande améliorée pour l’affichage de la documentation du package Go.
Avec « l’expérience mobile Go » de Google améliorée dans cette mouture, les développeurs pourront écrire un programme C qui appelle Go comme une bibliothèque. La version 1.5 supporte également les architectures arm64 pour les systèmes d’exploitation Darwin (iPad et iPhone) et Linux mais également arm pour Darwin. La combinaison de la capacité à appeler Go depuis des programmes C / C++ ainsi que le support ARM sur Darwin permet à l'expérimentation mobile de Go, qui « explore l'utilisation de Go comme un langage NDK (Native Development Kit), un langage natif sur les dispositifs mobiles qui tournent sur Android mais également iOS », a expliqué Cox.
Go pourrait être utilisé comme un langage NDK pour concevoir la logique en arrière-plan pour des applications Android et iOS. De nombreuses applications, en particulier les jeux, font appel à Java ou à Objective-C pour l’interface utilisateur, mais le code natif est utilisé pour concevoir la logique principale de l’application, a expliqué Cox. Pour lui, « l’idée ici est que là où vous utilisez C++, vous pouvez utiliser Go à la place ».
Source : note de version
-
Logan MauzaizeRédacteur/ModérateurSauf que le langage est open-source. Comme toute entreprise si "le langage Go" devient une ressource critique, elle investira.
Comme le font beaucoup d'entreprises : Vaadin pour GWT, CloudBees pour Jenkins, etc.le 20/08/2015 à 13:22 -
octalMembre éprouvéEn dehors de Google, connaissez vous déjà des structures (ici en France) ou des institutions utilusant Go comme language pour du développement ?le 20/08/2015 à 11:43
-
UtherExpert éminent séniorRien d'anormal : seuls les langages qui sont fortement poussés ou obligés par des environnements particuliers ont pu vraiment décoller en quelques année comme C#(a cause du .net), Javascript (a cause du Web client) ou ObjectiveC (à cause de Apple)
Pour un langage qui n'est poussé par aucun système particulier (comme Rust, D, Haskell, ...) Go a au contraireun un succès plutôt correct. Il faut voir que ce genre de langage ne peux pas exploser rapidement, il faut d'abord créer l'écosystème, et que les gens le découvrent... On ne va pas se ruer dessus.le 20/08/2015 à 15:21 -
BufferBobExpert éminentj'ai toujours eu l'impression que ce langage n'arrivait pas à décoller, pourtant quand c'est sorti ça a fait à peu près autant de bruit que Rust et on nous le vendait comme la 8e merveille du monde presquele 20/08/2015 à 13:54
-
TheGuitMembre régulierle 20/08/2015 à 15:16
-
Picasso11Nouveau Candidat au Cluble 20/08/2015 à 15:25
-
FraisDesRiquesMembre actifle 20/08/2015 à 15:32
-
delta07Membre régulierApparement le service de youtube chez google serait implémenté en GO...donc, oui des entreprises l'utilisent.
Petite vidéo intéressante au passage, avec Francesc Campoy Flores, responsable des relations développeurs Go (Google US). :
le 27/08/2015 à 16:49 -
Logan MauzaizeRédacteur/ModérateurSurement l'une de ces boîtes : http://www.meetup.com/fr/Golang-Paris/sponsors/. Autrement tu peux te farcir cette page : https://github.com/golang/go/wiki/GoUsers
Les gens font souvent références à des "scripts" ou des outils internes mais je n'ai pas vu d'annonce concernant l'utilisation en production. Après les boîtes communiquent pas beaucoup sur leurs infrastructures.le 20/08/2015 à 13:34 -
FraisDesRiquesMembre actifJe reste enchanté par cette initiative osée de Google. Il n'est finalement pas si important que ça de savoir si Go va vraiment être adopté massivement ou pas. Il apportera de facto des nouveaux concepts (ou du moins, des concepts existants améliorés) qui finiront par enrichir les langages ou plateformes de développement les plus en vue en ce moment.
Donc, si il est adopté massivement, tant mieux, cela voudra dire qu'il est vraiment un langage génial qui fait progresser le développement d'un certain type d'applications.
Si non, rien de grave, il aura de toute manière enrichi l'expérience des milliers de développeurs qui essaimeront de nouveaux concepts intéressants.le 20/08/2015 à 15:09