On connaissait Groovy, le langage de Strachan et McWriter, il y a maintenant Rooby. On dit aussi Goby, un mélange de Go pour l’écriture du compilateur et de Ruby, pour la syntaxe. Rooby est destiné par ses concepteurs à l’écriture des micro-services et à leur intégration dans un container.

Décidément, Ruby est une référence de plus en plus prisée par les concepteurs de langages, qui cherchent à imaginer des outils intelligents, des transpilers, des compilateurs, etc et prennent leurs idées là où ils certains de trouver les meilleures. Avec Ruby et Go ils ne seront pas déçus, tant Ruby est un véritable langage orienté objet, plus même qu’un C++, un C# ou un Java, par l’obligation qu’il impose, par exemple, à passer systématiquement par des références objet et Go, qui est désormais une référence du même niveau que les grands anciens, Java, C++ ou C#.

Mais attention, Rooby n’est pas une évolution ou une simple mise à jour de Ruby, dont il pourrait constituer un « fork ». Ce n’est pas non plus du « sucre syntaxique » apporté à certains aspects du langage de Mats, le célèbre Matsumoto, « inventeur » de Ruby en 1993.

Certes la filiation Ruby est évidente, mais la paternité du langage est autant à trouver dans Go, le langage « star » 2017 de Google que dans Ruby. L’idée étant bien de prendre ce qu’il y a de meilleur dans Go, les mécanismes de multithreading avec les goroutines, par exemple et un sous-ensemble de Ruby, adapté aux contraintes spécifiques des micro-services : modularité, simplicité de personnalisation dans un container (d’où la présence de Go, très utilisé dans les containers Docker), performances, etc.

En termes de développement pur, Rooby est équipé d’une librairie HTTP complète intégrée et d’un serveur Web HTTP « multithreadé », construit à partir des packages HTTP de Go.

L’interpréteur du code Rooby est un exécutable monolithique, constitué d’un run-time « YARV-like », d’un compilateur (qui génère du bytecode) et d’un REPL (Read-Eval-Print Loop).

Le langage Rooby n’en est pas encore au stade de l’usage industriel. Ce n’est pour l’instant qu’un projet, intéressant certes, mais qui a encore besoin de contributions. C’est surtout sa cible micro-services qui nous a semblé intéressante, si tant est que l’on puisse dédier un langage à ce type d’application.
Conçu pour les micro-services

L’un des avantages mis en avant par l’équipe Rooby tient au fait que l’on pourra réutiliser l’immense réservoir de packages Go, l’idée étant aussi éventuellement de les « binder », autrement dit de faire correspondre les scripts Go et Rooby, par un système de typage particulier.

Pour ce qui est des fonctionnalités d’écriture, rien d’extraordinaire à vrai dire, car tout est dans Ruby, mais les concepteurs du langage, qui en sont encore à développer les principales librairies, comme Net :: HTTP, Net :: SimpleServer, File, etc, sont très demandeurs d’idées originales.

D’où l’inscription en tant que projet dans GitHub.

On pourrait se demander pourquoi nous mettons l’emphase sur un tel projet qui n’est même pas abouti et a besoin de nous pour se développer. Mais Rooby est incontestablement dans l’air du temps, à la fois par sa filiation et son orientation micro-services, une architecture qui va fortement se développer dans les années à venir.

De toute façon, de temps en temps, ce n’est pas prendre un gros risque que de mettre l’emphase sur un petit nouveau…