¿Qué lenguajes se pueden compilar en WebAssembly (Wasm)?
Creo que en este momento C, C ++ y Rust (experimental) se pueden compilar en WebAssembly, con el backend del compilador llvm, con lenguajes como Java, Swift y C # que no se admiten actualmente, pero son posibles candidatos para el desarrollo futuro.
No creo que JavaScript se pueda compilar en Wasm. https://github.com/WebAssembly/design/issues/219
llvm
programming-languages
webassembly
Jordan Stewart
fuente
fuente
Respuestas:
El soporte de WebAssembly está en constante evolución. En este momento es compatible con los siguientes idiomas:
D : el subconjunto "betterC" de D se puede compilar en WebAssembly a través de LDC (compilador LLVM).
TypeScript : a través de AssemblyScript , altamente experimental, pero ganando impulso.
También existen soluciones comerciales:
Con respecto a JavaScript, es poco probable que obtenga soporte ya que WebAssembly es un lenguaje ensamblador de tipado estático.
También hay varios lenguajes más oscuros / aficionados que admiten WebAssembly. Se pueden encontrar más detalles en la lista más exhaustiva de Awesome WebAssembly Languages .
fuente
Ver https://github.com/mbasso/awesome-wasm#compilers - por ahora es solo C / C ++, otros son experimentales, pero la cantidad de la parte "experimental" crece.
Actualmente, WebAssembly solo admite memoria lineal plana. Eso es adecuado para C / C ++ / Rust y muchos otros lenguajes, pero los lenguajes modernos más populares necesitan un recolector de basura para ejecutarse. Esa es la "función posterior a MVP" de WebAssembly (consulte https://github.com/WebAssembly/design/issues/1079 ). Por ahora, la única opción es implementar un recolector de basura dentro del wasm con un código personalizado.
fuente
TeaVM se puede utilizar para transpilar el código de bytes de JVM a WebAssembly. Puede consultar la página de inicio del proyecto en https://github.com/konsoletyper/teavm .
TeaVM en su núcleo puede transpilar código de bytes JVM a JS y WebAssembly. El soporte de WebAssembly se encuentra en una etapa temprana, pero hay demostraciones disponibles para comparar el rendimiento de una simulación JBox2D simple con GWT, TeaVM (salida JS) y TeaVM (salida WASM), que son bastante impresionantes.
Tenga en cuenta que WebAssembly actualmente no tiene acceso directo al DOM u otras API de JavaScript. Además, en el MVP actual no hay soporte para tipos de datos opacos o incluso el GC. Sin embargo, es posible realizar llamadas ascendentes / descendentes de JS a WASM y viceversa utilizando algunos trucos de JS, como se ve en las demostraciones mencionadas.
fuente
Este repositorio
Contiene una lista de lenguajes que actualmente compilan o tienen sus VM en WebAssembly (wasm)
caracteristicas:
fuente