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


116

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

現在、C、C ++、およびRust(実験的)は、Java、Swift、C#などの言語が現在サポートされていないが、将来の開発の候補になる可能性があるllvmコンパイラバックエンドを使用して、WebAssemblyにコンパイルできると思います。

JavaScriptをWasmにコンパイルできるとは思いません。 https://github.com/WebAssembly/design/issues/219


1
これを読んでいる人へのメモと同じように、私は最近、emscriptenを介してWASMにCおよびC ++を使用しましたが、非常にうまく機能します。
CoffeeTableEspresso

回答:


121

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

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

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

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



良い点-RemObjectsは、多言語で商用のため、独自のカテゴリとして追加しました
ColinE

1
しかし、Pythonは動的に型付けされます!
Richard Eng 2018

17

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

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


2
asm.js wasmに簡単にコンパイルでき、asm.js javascriptであることを追加する価値があります。そうは言っても、javascriptのコンパイルは、一般にすぐに利用できるコンテキスト情報が不足しているため、はるかに困難です。
キューレックス2017

11

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のトリックを使用して再度呼び出したりすることは可能です。


8

このレポ

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

特徴:

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

3
「絵文字を使って、各言語が現在どれだけ成熟しているかを示します」と数回読んでみてください...それはかなり深い声明です。
ipatch

うん、愚かな表現と相まって簡単な直感的な説明。
jasonleonhard
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.