web-dev-qa-db-ja.com

WebAssembly(またはwasm)にコンパイルできる言語は何ですか?

Webアセンブリ(またはwasm)にコンパイルできる言語は何ですか?

現時点では、C、C++、およびRust(実験的​​)は、llvmコンパイラバックエンド、Java、Swift、C#などの言語は現在サポートされていませんが、候補としてWebアセンブリにコンパイルできます。将来の開発のため。

Javascriptをwasmにコンパイルできるとは思わない。 https://github.com/WebAssembly/design/issues/219

89
Jordan Stewart

WebAssemblyのサポートは常に進化しています。現在、次の言語でサポートされています。

商用ソリューションもあります:

JavaScriptについては、WebAssemblyは静的に型指定されたアセンブリ言語であるため、サポートが得られる可能性は低いです。

WebAssemblyをサポートする、より曖昧な/趣味のさまざまな言語もあります。詳細については、より包括的な Awesome WebAssembly Languages リストを参照してください。

87
ColinE

https://github.com/mbasso/awesome-wasm#compilers を参照してください。現在はC/C++のみで、他は実験的ですが、「実験」部分の量が増えています。

現在、WebAssemblyはフラットな線形メモリのみをサポートしています。これはC/C++/Rustおよび他の多くの言語に適していますが、最も人気のある最新の言語を実行するにはガベージコレクターが必要です。それがWebAssemblyの「MVP後の機能」です( https://github.com/WebAssembly/design/issues/1079 を参照)。現在のところ、唯一のオプションは、カスタムコードを使用してwasm内にガベージコレクタを実装することです。

16
nzeemin

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トリックを使用して再び戻ることができます。

10
Mirko Sertic

このレポ

WebAssembly(wasm)でVMに現在コンパイルされているか、VMを持っている言語のリストが含まれています

特徴:

  • 絵文字を使用して、各言語の現在の成熟度を示します
  • 各言語のプロジェクト名とオプションへのリンクを提供します
5
jasonleonhard