web assembly メモ

WebAssembly を試した記録

WebAssembly はコンパイルでバイナリの WASM ファイル,テキストベースのW ASIf アイルが作れる

WASM,WASI をブラウザ用 Javascript のコードや,Node js で読み込み,関数を実行できる(WASM でエクスポートした関数を呼び出す形)

WASM の仕様は現在も策定続いている? WASM 自身がファイルアクセスやネットワークアクセスするためには,Javascript 側のファイルアクセスやネットワークアクセスの機能を使う(コールする)必要がある

WASM へのコンパイルは様々な言語で試みられている RUST はデフォルトで WASM への出力がある C#は DOTNET 7以降であれば,wasm-sdk を入れてコンパイルすれば WASM 出力できる また,Blazor WebAssembly でも内部的に使われている(あまり意識する必要なかった)

Javascript Typescript ではまだ完全な WASM へのコンパイラはできていない(これから仕様策定の段階とのこと)

Typescript 風に書ける AssemblyScript というのがあるが,型拡張できなかったり,JSON パースもなかったり,ネットワーク系はじめ標準ライブラリも制限されているので用途限られる(多くは,QuickJS というのを処理系に入れているのでそれで使える機能のみが使える状態)

WebAssembly に期待していること

もともとバックエンドよりなので,個人的にはフロントエンドの高速化よりもバックエンド側での用途を期待している

Docker 初めとしたコンテナの実行環境がメジャーになってはいるが,個人的にコンテナは ベースイメージのメンテナンスと,ライブラリのメンテナンス2つあるとこで動かなくなったり,イメージビルドできなくなったりと課題感じていたので,コンパイルした後はそれを使いまわせる WebAssembly のほうが取り回し楽なのではと感じている