Quelles langues peuvent être compilées pour l’assemblage Web (ou wasm)?
Je crois que maintenant, C, C ++ et rust (experimental) peuvent être compilés en assembleur Web, avec le backend du compilateur llvm, avec des langages tels que Java, swift et C # actuellement pas supportés, mais des candidats possibles pour des développements futurs.
Je ne crois pas que javascript puisse être compilé en wasm. https://github.com/WebAssembly/design/issues/219
Le support de WebAssembly est en constante évolution. Actuellement, il est pris en charge par les langues suivantes:
Il existe également des solutions commerciales:
En ce qui concerne JavaScript, il est peu probable que WebAssembly soit un langage d’assemblage typé statiquement.
Voir https://github.com/mbasso/awesome-wasm#comstackrs – pour l’instant, il ne s’agit que de C / C ++, d’autres sont expérimentaux, mais la quantité de la partie “expérimentale” augmente.
Actuellement, WebAssembly ne prend en charge que la mémoire linéaire plate. Cela convient à C / C ++ / Rust et à beaucoup d’autres langages, mais la plupart des langages modernes ont besoin d’un ramasse-miettes pour s’exécuter. C’est la “fonctionnalité post-MVP” de WebAssembly (voir https://github.com/WebAssembly/design/issues/1079 ). Pour le moment, la seule option consiste à implémenter un garbage collector dans le wasm avec du code personnalisé.
TeaVM peut être utilisé pour transférer le bytecode JVM vers WebAssembly. Vous pouvez consulter la page d’accueil du projet à l’ adresse https://github.com/konsoletyper/teavm .
TeaVM à sa base peut transposer le bytecode JVM dans JS et WebAssembly. La prise en charge de WebAssembly en est à ses débuts, mais des démonstrations sont disponibles pour comparer les performances d’une simulation JBox2D simple avec GWT, TeaVM (sortie JS) et TeaVM (sortie WASM), qui sont assez impressionnantes.
Veuillez noter que WebAssembly n’a actuellement aucun access direct au DOM ou à d’autres API JavaScript. De même, dans le MVP actuel, il n’ya pas de support pour les types de données opaques ou même le GC. Cependant, il est possible d’effectuer des rappels / retours de JS à WASM et de revenir en arrière en utilisant une supercherie JS, comme dans les démos mentionnées.