Avant l’arrivée de la version de production, les développeurs qui souhaitent utiliser le langage Go de Google - aussi appelé Golang - pour la programmation Web peuvent dès à présent tester le compilateur Joy open source disponible en bêta et apprécier la façon dont il transforme le code Go en code JavaScript.

Comme l’affirme le projet open source, Joy est capable de traduire le code Go idiomatique en JavaScript et ce code pourra être exécuté dans tous les navigateurs. Cela signifie également que les développeurs JavaScript pourront utiliser le système de typage et les outils de Go. Matthew Mueller, à l’origine du projet Joy, affirme que le travail de traduction de Go vers JavaScript est achevé à 90 % environ. La traduction de variantes supplémentaires de JavaScript est également en cours de finalisation, de même que la compilation au format WebAssembly ou wasm, un langage de représentation intermédiaire (IRL) compatible avec tous les navigateurs. Selon la feuille de route du projet, Joy supportera plus tard la bibliothèque React JavaScript UI et Preact, une bibliothèque alternative à React.

Le compilateur Joy analyse le code dans un arbre de syntaxe abstraite (AST), indexe ces processus et crée un graphe de dépendances. Le Go AST est ensuite traduit en JavaScript AST, après quoi le code JavaScript est créé.

Autres fonctionnalités de Joy

Parmi les autres fonctions à venir de Joy, le projet cite :

- Un système de macro simple à intégrer avec le JavaScript existant.

- L’utilisation des outils d'analyse statiques de Go pour éliminer le code mort.

- L’utilisation de Chrome intégré sans tête - sans interface graphique - pour exécuter le navigateur Chrome dans un environnement sans tête, pour exécuter des scripts.

- Limiter le temps d'exécution au minimum quand le runtime est nécessaire.

- Des paquets typés DOM à coût mémoire nul et DOM virtuels.

GopherJS, premier compilateur Go vers JavaScript

Joy n'est pas le premier à compiler du Go en JavaScript. GopherJS le fait déjà et permet d’exécuter du code Go dans les navigateurs Web. GopherJS est plus avancé que Joy, notamment dans la traduction syntaxique. La version bêta du compilateur Joy est téléchargeable sur GitHub .