Welche Sprachen können zu WebAssembly (Wasm) kompiliert werden?
Ich glaube, dass C, C ++ und Rust (experimentell) derzeit mit dem llvm-Compiler-Backend zu WebAssembly kompiliert werden können, wobei Sprachen wie Java, Swift und C # derzeit nicht unterstützt werden, aber mögliche Kandidaten für zukünftige Entwicklungen sind.
Ich glaube nicht, dass JavaScript zu Wasm kompiliert werden kann. https://github.com/WebAssembly/design/issues/219
llvm
programming-languages
webassembly
Jordan Stewart
quelle
quelle
Antworten:
Die Unterstützung für WebAssembly wird ständig weiterentwickelt. Derzeit wird es von folgenden Sprachen unterstützt:
D - Die Teilmenge "betterC" von D kann über LDC (LLVM-Compiler) zu WebAssembly kompiliert werden .
TypeScript - über AssemblyScript , sehr experimentell, aber auf dem Vormarsch.
Es gibt auch kommerzielle Lösungen:
In Bezug auf JavaScript ist es unwahrscheinlich, dass Unterstützung erhalten wird, da WebAssembly eine statisch typisierte Assemblersprache ist.
Es gibt auch verschiedene obskurere / Hobby-Sprachen, die WebAssembly unterstützen. Weitere Details finden Sie in der ausführlicheren Liste der Awesome WebAssembly Languages .
quelle
Siehe https://github.com/mbasso/awesome-wasm#compilers - im Moment ist es nur C / C ++, andere sind experimentell, aber die Menge des "experimentellen" Teils wächst.
Derzeit unterstützt WebAssembly nur einen flachen linearen Speicher. Das ist für C / C ++ / Rust und viele andere Sprachen geeignet, aber die meisten modernen Sprachen benötigen Garbage Collector, um ausgeführt zu werden. Dies ist die "Post-MVP-Funktion" von WebAssembly (siehe https://github.com/WebAssembly/design/issues/1079 ). Derzeit besteht die einzige Möglichkeit darin, den Garbage Collector mit einem benutzerdefinierten Code im Wasm zu implementieren.
quelle
TeaVM kann verwendet werden, um JVM-Bytecode in WebAssembly zu transpilieren. Sie können die Projekthomepage unter https://github.com/konsoletyper/teavm überprüfen .
TeaVM kann im Kern JVM-Bytecode in JS und WebAssembly transpilieren. Die Unterstützung von WebAssembly befindet sich noch in einem frühen Stadium. Es stehen jedoch Demos zur Verfügung, mit denen die Leistung einer einfachen JBox2D-Simulation mit GWT, TeaVM (JS-Ausgabe) und TeaVM (WASM-Ausgabe) verglichen werden kann.
Bitte beachten Sie, dass WebAssembly derzeit keinen direkten Zugriff auf das DOM oder andere JavaScript-APIs hat. Auch im aktuellen MVP gibt es keine Unterstützung für undurchsichtige Datentypen oder sogar den GC. Es ist jedoch möglich, mithilfe einiger JS-Tricks Up- / Downcalls von JS zu WASM und wieder zurück durchzuführen, wie in den genannten Demos gezeigt.
quelle
Dieses Repo
Enthält eine Liste der Sprachen, die derzeit in WebAssembly (wasm) kompiliert werden oder deren VMs vorhanden sind.
Eigenschaften:
quelle