aiscript icon indicating copy to clipboard operation
aiscript copied to clipboard

WebAssemblyとしてコンパイルする機能

Open syuilo opened this issue 4 years ago • 15 comments

なんもわからん

syuilo avatar Jul 25 '21 10:07 syuilo

オッ

marihachi avatar Jul 25 '21 10:07 marihachi

https://qiita.com/uehaj/items/5276bd3425d1000e48ba https://github.com/WebAssembly/wabt 👀

syuilo avatar Aug 01 '21 13:08 syuilo

一旦WASTと呼ばれるWebAssemblyのテキスト表現を生成して、それを外部ライブラリの力を借りてwasmにコンパイルするのがやりやすそう しかしWASTなんもわからん

syuilo avatar Aug 01 '21 13:08 syuilo

https://ukyo.github.io/wasm-usui-book/webroot/get-started-webassembly.html

syuilo avatar Aug 01 '21 13:08 syuilo

WebAssemblyとしてコンパイルする場合、どうやってホストからJavaScript関数とかを提供するかが問題になる(不可能?)

syuilo avatar Aug 01 '21 13:08 syuilo

https://developer.mozilla.org/ja/docs/WebAssembly/Understanding_the_text_format

marihachi avatar Aug 01 '21 19:08 marihachi

全く詳しくないのでたくさん実験が必要そう

marihachi avatar Aug 01 '21 19:08 marihachi

コンパイルされた各モジュールは同じメモリとテーブルオブジェクトをインポートし、その結果同じ線形メモリとテーブルの「アドレス空間」を共有することができます。

これで共有メモリが使えそうな感じに書いてある。 JavaScript - wasm間で共有できれば通信っぽいことができそうな気がする

marihachi avatar Aug 01 '21 19:08 marihachi

最初のゴールとしては、AiScriptで記述した関数をWasmに変換できてJavaScriptから呼び出して結果を取得できるくらいのものでいい気がする

marihachi avatar Aug 01 '21 19:08 marihachi

Wasmの仕様的に、 #60 が必要かも

marihachi avatar Aug 02 '21 00:08 marihachi

examples :sparkles: https://github.com/mdn/webassembly-examples

marihachi avatar Aug 02 '21 01:08 marihachi

https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/simple.wat#L5 ここでwasmにインポートしたjs関数をコールしてるんじゃない?

関連: https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/index.html

marihachi avatar Aug 02 '21 01:08 marihachi

https://github.com/AssemblyScript/binaryen.js こんなのある

marihachi avatar Aug 02 '21 05:08 marihachi

wasmへのコンパイルは型が事前に決まっていないとできない。 明示的な型宣言や型推論が必要になる。

関連

#138 #139 #140

marihachi avatar Aug 10 '21 10:08 marihachi

WebAssemblyでは文字列の標準的な扱いが決まってないっぽい コンパイル元の実装に依存する

marihachi avatar Aug 26 '21 13:08 marihachi