可以將哪些語言編譯爲Web程序集(或wasm)?我相信現在C,C++和鐵鏽(實驗)可以編譯爲Web程序集,帶有llvm編譯器後端,目前不支持Java,Swift和C#等語言,但可能成爲未來的候選者發展。可以將哪些語言編譯爲Web程序集(或wasm)?
我不相信javascript可以編譯爲wasm。 https://github.com/WebAssembly/design/issues/219
可以將哪些語言編譯爲Web程序集(或wasm)?我相信現在C,C++和鐵鏽(實驗)可以編譯爲Web程序集,帶有llvm編譯器後端,目前不支持Java,Swift和C#等語言,但可能成爲未來的候選者發展。可以將哪些語言編譯爲Web程序集(或wasm)?
我不相信javascript可以編譯爲wasm。 https://github.com/WebAssembly/design/issues/219
TeaVM可用於將JVM字節碼轉換爲WebAssembly。您可以在https://github.com/konsoletyper/teavm處簽出項目主頁。
TeaVM的核心可以將JVM字節碼轉換爲JS和WebAssembly。 WebAssembly支持處於早期階段,但有些演示可用於比較簡單的JBox2D仿真與GWT,TeaVM(JS輸出)和TeaVM(WASM輸出)的性能,這些都非常令人印象深刻。
請注意,WebAssembly目前不能直接訪問DOM或其他JavaScript API。同樣在目前的MVP中,不支持不透明數據類型甚至GC。然而,如上述演示所示,可以從JS向WASM進行向上/向下調用,並使用一些JS技巧進行回放。
請參閱https://github.com/mbasso/awesome-wasm#compilers - 現在它只是C/C++,其他則是實驗性的,但「實驗」部分的數量會增加。
目前WebAssembly僅支持扁平線性內存。這適用於C/C++/Rust和很多其他語言,但大多數流行的現代語言都需要垃圾回收器才能運行。這是WebAssembly的「後MVP功能」(請參閱https://github.com/WebAssembly/design/issues/1079)。現在唯一的選擇是使用一些自定義代碼在wasm內部實現垃圾回收器。
WebAssembly支持不斷髮展。現在,它是由下列語言支持:
有正在進行積極工作,爲下列語言:
關於JavaScript,不太可能獲得支持,因爲WebAssembly是強類型彙編語言。
值得一提的是,asm.js可以輕鬆編譯爲wasm和asm.js _is_ javascript。也就是說,編譯javascript會更困難,因爲它通常缺少即時可用的上下文信息。 – Culex