Présentation de Goeteia

Goeteia est un outil de programmation web pur Scheme qui compile du code Scheme en WebAssembly dans le navigateur. Le compilateur est écrit en Scheme et est capable de se compiler lui-même. Le code source est recompilé à chaque exécution en environ 15 ms.

Architecture et fonctionnement

Le compilateur Goeteia est écrit en Scheme et utilise une architecture de compilation à la demande. Les fixnums sont représentés par des i31refs non emballés, les paires et les enregistrements sont des structs GC, et la fonction eq? est implémentée en utilisant ref.eq. Le compilateur utilise également des références de fonctions typées avec des entrées rapides par arité et une entrée générique par fermeture.

$ git clone https://github.com/guenchi/Goeteia
$ cd Goeteia
$ ./run-tests.sh                # every test, both compiler stages
$ ./build-self.sh               # rebuild the compiler with itself

Implications et limites

Goeteia permet de créer des applications web réactives en utilisant des signaux fins et des templates. Le compilateur peut également être utilisé pour créer des scènes réactives Three.js et des applications WebGL. Cependant, le compilateur nécessite un environnement de développement spécifique, notamment Chez Scheme, pour fonctionner correctement.

Exemples et cas d'utilisation

Goeteia peut être utilisé pour créer des applications web complexes en utilisant des langages de programmation fonctionnels. Par exemple, il est possible de créer des applications web réactives en utilisant des signaux fins et des templates. Le code suivant montre un exemple de fonction récursive en Scheme :

(define (fact n) (if (zero? n) 1 (* n (fact (- n 1)))))