WASMまとめ
WebAssemblyとは
バイナリコードをブラウザで動かせるようにしたもの。
JavaScriptは動的型付けのインタプリタ言語ということで、実行速度の遅さが課題となっている。
その課題を解決するため、2013年頃にasm.jsというサブセットが生まれたが、
ファイルサイズが大きくなってしまうことなどの問題があった。
その代替案として生まれたのがWebAssembly(wasm)である。
wasmはファイルサイズがasm.jsと比べて小さくなっている。
使用できる言語一覧
github.com
DOMの処理やFetchAPI、WebAudioなどのAPIも使用できる。
しかしwasmは、jsをすべて置き換えようというものではなく、高速化したい部分をwasmで記述し、
jsと併用することを想定されている。
いろいろなTool
Binaryen
stdweb
wasm-bindgen周り
wasm-bindgen
js-sys
web-sys
wasm-pack
バイナリ表現とテキスト表現関連のツール群
- wabt
IoTでwasm
IoTデバイスでwasmを使用するという動きもある。
様々な言語がwasmへコンパイルできるようになっている。そのため、特定の言語に縛られることが無くなる。
wasmランタイ厶
Wasmer
WAMR
Lucet
Wasmtime
IoT × wasmについて
liux120.github.io
名前が似ていて混乱するやつら(実際に混乱した)
wasm
WebAssembly
wat
WebAssembly Text Format(バイナリ表現のwasmをテキスト表現にしたもの。wasmのテキスト表現は.wat
や.wast
が使われる。)
wast
watと同じ (昔の呼び方?コードの形式が違うらしい。)
wabt
WebAssembly Binary Toolkit (バイナリ表現とテキスト表現関連のツール群。)
wasi
WebAssembly System Interface (安全にOSやホストシステムの機能を呼び出そうという仕様
詳しくはStandardizing WASI: A system interface to run WebAssembly outside the web - Mozilla Hacks - the Web developer blog)
WAMR
WebAssembly Micro Runtime (組み込みデバイスを目的としたランタイム)