😸
WASM関連のツールまとめ
はじめに
WASM関連のツールはBytecode Allianceが大体取りまとめているのですが、何せツールが複数に分離しており全体像が良く分からない、ということで自分用にメモしておこうと思います。
全てをカバーするのは大変なので有名なもの/使いどころがありそうなものに絞っています。
ソース: https://github.com/orgs/bytecodealliance/repositories?type=all&q=sort%3Astars
総覧
コマンド | サブコマンド | 出来ること |
---|---|---|
wasmtime | (全体) | *.wasmを実行するためのruntime |
run | 実行 | |
compile | ローカル環境向けにAhead-Of-Timeコンパイル(*.wasm -> *.cwasm) | |
serve |
wasi:http/ptoxy ワールドを実装したWASM Componentを実行してserve |
|
javy | jsスクリプトを元に標準入出力を扱うwasmを生成 | |
wasm-tools | (全体) | WASMを扱うツール |
dump | wasmバイナリのdump | |
objdump | wasmバイナリのobjdump | |
strip | wasmバイナリからメタデータを削除 | |
compose | wasm componentのcompose | |
component | wasm component関連、更にサブコマンドがある(wasmコンポーネント→モジュール等) | |
completion | bash/pwsh/zshなどターミナルの補完用スクリプトを作成するコマンド | |
wit-bindgen | (全体) | 各プログラミング言語向けにWIT実装のためのモックを作成 |
wizer | (全体) | WASMに初期化用関数がある場合、初期化実行済みのWASMモジュールを生成 |
jco | (全体) | JavaScript-WASM連携関連のツール、一部wasm-toolsの機能を含む(下表では省略) |
componentize | JS Module -> WASM Component (ComponentizeJS) | |
transpile | WASM ComponentをJSにトランスパイル | |
types | WIT -> JS types | |
cargo-component | (全体) | RustのCargoサブコマンドとしてcomponent を追加 |
new | Component実装向けにRustプロジェクトを初期化 | |
publish | wargへのリリース | |
ComponentizeJS | (全体) | JSのESM + WIT -> WASM Component |
warg(registry) | (全体) | WebAssembly Componentのレジストリ |
warg-server | レジストリ用サーバの起動 | |
publish | (wa.dev含む)レジストリ宛にパッケージの公開・設定 | |
componentize-py | (全体) | Python module + WIT -> WASM Component |
wRPC | (全体) | WITファイルをベースとしたRPCシステム |
wac | (全体) | WASM ComponentをComposeするためのツール |
plug | 単純なcompose、Component-Aとそのimportを実装したComponent-Bを結合して、importが不要なComponentを生成 | |
compose | WACファイル(独自形式)を元にComposeを実行 | |
wit-deps | (全体) | wit向けのdependency manager |
wasm-pkg-tools(wkg) | (全体) | WASM Componentのパッケージングツール、OCI(コンテナ)にも対応 |
waffle | (全体) | WASM <-> SSA-IR(中間表現)が可能なライブラリ |
改めて見ても多すぎる...
もちろん上以外に各言語別のwasmランタイムとか、Bytecode Alliance以外(wasmerとか)が出しているものもある。
Discussion