Depuis sa sortie en 2009, Go a connu une forte adoption, du moins d'après les différents baromètres. Mais le langage est relativement jeune et il a encore beaucoup à faire pour séduire les développeurs et entreprises. Google travaille donc pour y parvenir, et pour annoncer cela, la firme a commencé par travailler sur l'image de son langage, en se dotant d’un nouveau logo en avril dernier. Mais les efforts des développeurs de Go sont plus concentrés sur la version 2 du langage.
Le processus de réflexion sur la prochaine grande version de Go a été officiellement lancé l'année dernière, et fin août, Google a partagé des informations (un brouillon) sur la conception de Go 2, qui abordaient des thèmes importants comme la programmation générique et une meilleure prise en charge de la gestion des erreurs. Dans un récent billet de blog, Robert Griesemer, l'un des créateurs du langage, est revenu sur le processus de développement de Go et la manière dont les fonctionnalités seront livrées aux développeurs.
Go 2 ne viendra pas comme une seule version majeure, ses fonctionnalités arriveront de manière incrémentale
Ce qu'il faut savoir, c'est que Go 2 ne viendra pas comme une version majeure avec un tas de fonctionnalités majeures qui vont casser la compatibilité avec les versions précédentes. Oui, ce serait un peu brusque, et c'est d'ailleurs l'une des raisons pour lesquelles les développeurs sont réticents à adopter de jeunes langages ou technologies.
« Nous avons appelé ce futur langage de manière informelle Go 2, même si nous comprenons maintenant qu’il arrivera de manière incrémentale plutôt qu'avec un big-bang (un changement radical, NDLR) et une seule version majeure », explique Robert Griesemer. « Néanmoins, Go 2 est un surnom utile, ne serait-ce que pour avoir un moyen de parler de ce futur langage, alors continuons de l’utiliser pour le moment », dit-il.
En 2015, l'équipe Go a introduit un processus de proposition afin de recueillir un type de retour spécifique : les propositions de modification de langage et de bibliothèque. Un comité composé de membres éminents de l'équipe Go a ainsi été chargé d'examiner, catégoriser et décider des propositions entrantes sur une base régulière. Cela fonctionnait assez bien, mais dans le cadre de ce processus, ils ont ignoré toutes les propositions qui n'étaient pas compatibles avec les versions précédentes du langage. Ces propositions ont simplement été marquées avec la mention "Go 2", ce qui suggère qu'ils seraient intégrés dans Go 2.
Actuellement, il y a environ 120 propositions marquées "Go 2". Les propositions liées ont été fusionnées et celles qui semblaient clairement hors de la portée de Go ou qui ne pouvaient pas être gérées ont été fermées. Mais les propositions restantes vont probablement influencer les bibliothèques et le langage et, dans certains cas, ne vont pas permettre de satisfaire la garantie de compatibilité existante de Go 1.
Comme nous l'avons déjà dit, deux grands thèmes sont ressortis très tôt de ces propositions : la prise en charge d'une meilleure gestion des erreurs et les génériques. Mais il y en a bien d'autres. Alors qu'en est-il du reste ? Une question à laquelle répond le co-créateur de Go :
« Nous sommes limités par le fait que nous avons maintenant des millions de programmeurs Go et un vaste corpus de code Go, et que nous devons continuer dans cette voie, sans quoi nous risquerions un écosystème scindé. Cela signifie que nous ne pouvons pas faire beaucoup de changements, et les changements que nous allons faire doivent être choisis avec soin », explique M. Griesemer. Pour progresser, l'équipe Go met donc en place un nouveau processus d'évaluation des propositions pour ces changements potentiels importants.
Si Go 1 était donc un petit effort d'équipe avec une influence extérieure modeste, Go 2 sera beaucoup plus axé sur la communauté ; laquelle communauté pourra désormais influencer la conception et la façon dont les décisions sont prises, d'après Robert Griesemer.
Des propositions marquées "Go 2" seront publiées dans Go 1.13
Vu le défi à relever, l'équipe Go a décidé de commencer par un petit nombre de propositions de modification de langage compatibles avec les versions antérieures. « Cela fait longtemps que nous n’avons pas fait de changement dans le langage, alors cela nous ramène à ce mode. De plus, les changements ne nécessiteront pas que nous nous inquiétions de casser le code existant ».
Cela dit, elle soumet une petite sélection de propositions Go 2 qui seront publiées dans Go 1.13 - rappelons encore que les fonctionnalités de Go 2 seront livrées de manière incrémentale pour éviter tout changement radical. Les propositions concernent :
- l'adoption des identifiants Unicode généraux basés sur Unicode TR31 : cela corrige un problème important pour les programmeurs Go utilisant des alphabets non occidentaux et devrait avoir peu d’impact sur les autres développeurs ;
- les littéraux entiers binaires et prise en charge de _ dans les littéraux numériques : il s'agit selon l'équipe Go de modifications relativement mineures pour ajouter des fonctionnalités qui semblent extrêmement populaires chez les développeurs. Ils ne viennent pas résoudre un « problème important », estime Robert Griesemer, mais ils rapprochent Go de la plupart des autres langages à cet égard et peuvent soulager certains programmeurs. Ils ont en plus un impact minimal sur les autres utilisateurs indifférents au littéral entier binaire ou au formatage numérique, et la mise en œuvre est bien comprise ; et
- la modification de la spécification du langage de telle sorte que l'opérande de droite dans une opération << ou >> puisse être un entier (non constant) signé ou non signé, ou toute valeur constante non négative pouvant être représentée par un nombre entier.
En vertu du nouveau processus, ces propositions étant faites, c’est maintenant à la communauté Go de donner son avis. Pour chaque proposition pour laquelle l'équipe Go recevra des commentaires clairs et approuvés, cette dernière va procéder à l'implémentation pendant le cycle de développement de 3 mois (février, mars et avril 2019).
Source : Blog Go
Et vous ?
Utilisez-vous le langage Go ? Qu'en pensez-vous ?
A-t-il des chances de se faire une place parmi les langages les plus populaires ? Pourquoi ?
Que pensez-vous de l'approche de Google pour passer à Go 2 ?
Voir aussi :
Google annonce la sortie du runtime Go 1.11 sur App Engine, après la disponibilité de la nouvelle version de son langage
L'équipe de Go publie des brouillons du design du langage Go 2, au menu : la généricité, la gestion des erreurs et la sémantique des valeurs d'erreur
L'équipe en charge du développement de Go annonce la disponibilité de la version Go 1.11, qui s'accompagne d'un port expérimental pour WebAssembly
Go : après 5 ans de Go 1, la communauté du langage open source planifie une transition vers Go 2, en minimisant les perturbations entre les versions
Go est plus utilisé par les développeurs pour leurs projets personnels, selon le sondage Go 2016