Grain : un nouveau langage pour WebAssembly

Par:
fredericmazue

mar, 18/05/2021 - 16:14

Grain est un nouveau langage qui a été présenté lors du WebAssembly Summit 2021. La présentation (video ci-dessous) a été réalisée par Oscar Spencer, un des responsables du projet.

Grain est un langage de haut niveau, fortement typé, qui compile en WebAssembly via Binaryen. Le code Grain peut donc être exécuté sur tous les navigateurs qui supportent WebAssembly.

Grain trouve ses racines dans les langages fonctionnels et ambitionne de rendre les idées propres à ces langages plus abordables qu'elles ne le sont généralement. Les responsables du projet Grain expliquent :

Grain vise à moderniser les fonctionnalités innovantes des langages de programmation fonctionnels et académiques et à les apporter au grand public. De nombreuses langues ont eu des idées merveilleuses, mais elles ont finalement été rejetées comme ésotériques ou trop difficiles à apprendre et, par conséquent, ont eu du mal à rallier une large communauté autour d'elles. Grain espère donner une nouvelle vie à ces idées et les présenter sous une forme accessible, facile à utiliser et à comprendre.

Parmi les fonctionnalités empruntées aux langages fonctionnels par Grain nous trouvons l'inférence de types, avec un vérificateur de type à la Objective Caml, la correspondance de motifs, les fermetures (closures), les fonctions de première classes, c'est-à-dire des fonctions qui sont traitées comme n'importe quelle variable, et qui notamment peuvent être des arguments d'autres fonctions ou des valeurs retournées par d'autres fonctions, etc. Avec Grain, les variables sont mutables. Il ne s'agit donc pas d'un langage fonctionnel pur. Ses concepteurs ont fait ce choix pour donner de la flexibilité au langage.

Grain dispose d'une bibliothèque standard et d'un système de modules. La chaîne d'outils Grain (CLI, compilateur, runtime et bibliothèque standard) est livrée sous la forme d'un binaire unique. Les binaires sont disponibles pour MacOS x64 , Linux x64 et Windows x64. Une version JavaScript du compilateur Grain est disponible pour une utilisation dans les plates-formes où un binaire personnalisé n'est pas disponible.

Grain dispose d'un site dédié, grain-lang.org, sur lequel on trouve un guide de démarrage et une documentation complète.

Grain, en version 0.3 pour le moment, n'en est qu'à ses tous débuts. Le développement futur de Grain devrait inclure une meilleure interface de fonction étrangère pour invoquer du code natif, l'édition de liens statique, une bibliothèque standard DOM, des macros, etc.Grain est un logiciel libre sous licence GNU Lesser General Public License v3.0 disponible sur GitHub.