Webアセンブリ(またはwasm)にコンパイルできる言語は何ですか?
現時点では、C、C++、およびRust(実験的)は、llvmコンパイラバックエンド、Java、Swift、C#などの言語は現在サポートされていませんが、候補としてWebアセンブリにコンパイルできます。将来の開発のため。
Javascriptをwasmにコンパイルできるとは思わない。 https://github.com/WebAssembly/design/issues/219
WebAssemblyのサポートは常に進化しています。現在、次の言語でサポートされています。
D-Dの「betterC」サブセットをWebAssemblyにコンパイルできます LDC経由 (LLVMコンパイラー)。
TypeScript- AssemblyScript を介して、非常に実験的ですが、勢いを得ています。
商用ソリューションもあります:
JavaScriptについては、WebAssemblyは静的に型指定されたアセンブリ言語であるため、サポートが得られる可能性は低いです。
WebAssemblyをサポートする、より曖昧な/趣味のさまざまな言語もあります。詳細については、より包括的な Awesome WebAssembly Languages リストを参照してください。
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では、不透明(OPAQUE)型やGCさえサポートされていません。ただし、前述のデモで見られるように、JSからWASMへのアップ/ダウンコールを行い、JSトリックを使用して再び戻ることができます。
WebAssembly(wasm)でVMに現在コンパイルされているか、VMを持っている言語のリストが含まれています