WebAssembly(Wasm)にコンパイルできる言語は何ですか?
現在、C、C ++、およびRust(実験的)は、Java、Swift、C#などの言語が現在サポートされていないが、将来の開発の候補になる可能性があるllvmコンパイラバックエンドを使用して、WebAssemblyにコンパイルできると思います。
JavaScriptをWasmにコンパイルできるとは思いません。 https://github.com/WebAssembly/design/issues/219
WebAssembly(Wasm)にコンパイルできる言語は何ですか?
現在、C、C ++、およびRust(実験的)は、Java、Swift、C#などの言語が現在サポートされていないが、将来の開発の候補になる可能性があるllvmコンパイラバックエンドを使用して、WebAssemblyにコンパイルできると思います。
JavaScriptをWasmにコンパイルできるとは思いません。 https://github.com/WebAssembly/design/issues/219
回答:
WebAssemblyのサポートは常に進化しています。現在、次の言語でサポートされています。
D - Dの「betterC」サブセットは、LDC(LLVMコンパイラ)を介してWebAssemblyにコンパイルできます。
TypeScript - AssemblyScriptを介して、非常に実験的ですが勢いを増しています。
商用ソリューションもあります:
JavaScriptに関しては、WebAssemblyが静的に型付けされたアセンブリ言語であるため、サポートが得られる可能性は低いです。
また、WebAssemblyをサポートするさまざまなあいまい/趣味の言語もあります。詳細については、より包括的なAwesome WebAssembly言語リストをご覧ください。
https://github.com/mbasso/awesome-wasm#compilersを参照してください。現在のところ、これはC / C ++のみであり、その他は実験的なものですが、「実験的」部分の量は増えています。
現在、WebAssemblyはフラットリニアメモリのみをサポートしています。これはC / C ++ / Rustや他の多くの言語に適していますが、最も一般的な最近の言語を実行するにはガベージコレクターが必要です。それがWebAssemblyの「MVP後の機能」です(https://github.com/WebAssembly/design/issues/1079を参照)。現時点では、カスタムコードを使用してwasm内にガベージコレクターを実装するのが唯一のオプションです。
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のトリックを使用して再度呼び出したりすることは可能です。
WebAssembly(wasm)で現在コンパイルされているか、VMを持っている言語のリストが含まれています