aiscript
aiscript copied to clipboard
WebAssemblyとしてコンパイルする機能
なんもわからん
オッ
https://qiita.com/uehaj/items/5276bd3425d1000e48ba https://github.com/WebAssembly/wabt 👀
一旦WASTと呼ばれるWebAssemblyのテキスト表現を生成して、それを外部ライブラリの力を借りてwasmにコンパイルするのがやりやすそう しかしWASTなんもわからん
https://ukyo.github.io/wasm-usui-book/webroot/get-started-webassembly.html
WebAssemblyとしてコンパイルする場合、どうやってホストからJavaScript関数とかを提供するかが問題になる(不可能?)
https://developer.mozilla.org/ja/docs/WebAssembly/Understanding_the_text_format
全く詳しくないのでたくさん実験が必要そう
コンパイルされた各モジュールは同じメモリとテーブルオブジェクトをインポートし、その結果同じ線形メモリとテーブルの「アドレス空間」を共有することができます。
これで共有メモリが使えそうな感じに書いてある。 JavaScript - wasm間で共有できれば通信っぽいことができそうな気がする
最初のゴールとしては、AiScriptで記述した関数をWasmに変換できてJavaScriptから呼び出して結果を取得できるくらいのものでいい気がする
Wasmの仕様的に、 #60 が必要かも
examples :sparkles: https://github.com/mdn/webassembly-examples
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
https://github.com/AssemblyScript/binaryen.js こんなのある
wasmへのコンパイルは型が事前に決まっていないとできない。 明示的な型宣言や型推論が必要になる。
関連
#138 #139 #140
WebAssemblyでは文字列の標準的な扱いが決まってないっぽい コンパイル元の実装に依存する