Quels langages peuvent être compilés en WebAssembly (Wasm)?
Je pense qu'à l'heure actuelle, C, C ++ et Rust (expérimental) peuvent être compilés vers WebAssembly, avec le backend du compilateur llvm, avec des langages comme Java, Swift et C # qui ne sont pas actuellement pris en charge, mais sont des candidats possibles pour un développement futur.
Je ne pense pas que JavaScript puisse être compilé sur Wasm. https://github.com/WebAssembly/design/issues/219
llvm
programming-languages
webassembly
Jordan Stewart
la source
la source
Réponses:
Le support WebAssembly est en constante évolution. À l'heure actuelle, il est pris en charge par les langues suivantes:
D - le sous-ensemble "betterC" de D peut être compilé en WebAssembly via LDC (compilateur LLVM).
TypeScript - via AssemblyScript , hautement expérimental, mais qui prend de l'ampleur.
Il existe également des solutions commerciales:
En ce qui concerne JavaScript, il est peu probable qu'il soit pris en charge car WebAssembly est un langage d'assemblage de type statique.
Il existe également divers langages plus obscurs / amateurs qui prennent en charge WebAssembly. Plus de détails peuvent être trouvés sur la liste plus exhaustive des Awesome WebAssembly Languages .
la source
Voir https://github.com/mbasso/awesome-wasm#compilers - pour l'instant ce n'est que 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 à de nombreux autres langages, mais la plupart des langages modernes populaires ont besoin d'un garbage collector pour fonctionner. C'est la «fonctionnalité post-MVP» de WebAssembly (voir https://github.com/WebAssembly/design/issues/1079 ). Pour l'instant, la seule option est d'implémenter le garbage collector à l'intérieur du wasm avec du code personnalisé.
la source
TeaVM peut être utilisé pour transpiler le bytecode JVM en WebAssembly. Vous pouvez consulter la page d'accueil du projet à l' adresse https://github.com/konsoletyper/teavm .
TeaVM à sa base peut transpiler le bytecode JVM en JS et WebAssembly. La prise en charge de WebAssembly est à un stade précoce, mais il existe des démos disponibles pour comparer les performances d'une simple simulation JBox2D avec GWT, TeaVM (sortie JS) et TeaVM (sortie WASM), qui sont assez impressionnantes.
Veuillez noter que WebAssembly n'a actuellement aucun accès direct au DOM ou à d'autres API JavaScript. De plus, dans le MVP actuel, il n'y a pas de support pour les types de données opaques ou même le GC. Cependant, il est possible de faire des appels ascendants / descendants de JS vers WASM et inversement en utilisant une astuce JS, comme le montrent les démos mentionnées.
la source
Ce repo
Contient une liste des langages qui compilent actuellement ou ont leurs VM dans WebAssembly (wasm)
Fonctionnalités:
la source