il existe un prototype de compilateur pour un langage appelé thinscript
ça n'a absolument rien d'opérationnel.
ce qui est intéressant c'est que thinscript n'est que peu ou prou du TypeScript.
l'un comme l'autre sont des langages qui peuvent sans difficulté être interprété. Mais pour un usage normal on passe par une phase de compilation.
TypeScript fournis un compilateur écrit en typescript qui produit du js.
de ce fait le compilateur lui-même s'exécute sur node-js et produit un script JS.
thinscript est conçu de la même façon. il est écrit en thinscript mais il produit soit du js soit du c soit du wasm
ainsi le compilateur peut être recompilé avec gcc ou autre et produire un exécutable
mais une application produite avec thinScript pourra par ce biais être exécuté par node-js ou un navigateur si on a produit du js
sur une machine si on est passé par une compilation C
ou sur WebAssembly.
typescript tout comme thinscript sont des langage très proche de javascript. voire encore plus des dernière génération ecmascript.
il montre bien que de tels langages peuvent être compilés.
il est un point qui lui ne peut absolument pas être compilé c'est la génération de code dynamiquement. je ne parle pas d'affecter une fonction à un membre ou ce genre de chose mais bien de définir du code dans une string pour l’exécuter ensuite.
Mais ce point est facile à résoudre dans WASM moyennant quelques astuces. L'interactivité WASM/JS est prévue et il est possible de faire appel à JS pour évaluer un script. lors de la compilation il faut donc dans ce cas généré un appel à js
en gros tout le reste peut être compilé.
Quels intérêts ? j'en vois deux
permettre au développeur front de continuer à travailler dans leurs langages front.
produire un exécutable dont le source n'est pas "directement" accessible du client. (au même titre qu'un code C++ peut être désassemblé le code WASM peut être converti en AST lisible par un développeur.)
ces deux points sont des inquiétude forte de la communauté.
attention tout comme le projet thinscript il s'agit d'un test qui n'a pas vocation à aboutir.
j'ai écrit en thinscript un complément pour produire un compilateur thinscript qui s'exécute sur la JVM.
ce compilateur fonctionne avec eclipse et maven et produit directement depuis un sources thinscript un js un wasm un c
Mais il montre qu'on peut produire du WASM avec les outils habituels des développeurs.
Dans le même ordre d'idée en me basant sur http://www.jsweet.org/ j'ai regardé comment produire un WSAM à partir de java
Il ne s'agit pas d’exécuter une JVM ou du code JAVA sur le navigateur. il s'agit d'utilise la SYNTAXE java pour développer des appli front
seule la syntaxe est retenue. c'est la même approche que le compilateur java du gnu qui produit un exec pour votre machine.
il n'embarque pas de JVM seule la syntaxe est retenue. là encore le compilateur JAVA va produire un AST qu'il faut parcourir pour produire le wasm, d ela même façon que Javac parcours l'AST pour produire du ByteCode.
A+JYT
Partager