Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

CLI リファレンス

コマンド

zwasm run / zwasm <file>

WebAssembly モジュールを実行します。run サブコマンドは省略可能です。zwasm file.wasmzwasm run file.wasm と同等です。

zwasm <file.wasm|.wat> [options] [args...]
zwasm run <file.wasm|.wat> [options] [args...]

デフォルトでは _start(WASI エントリーポイント)を呼び出します。特定のエクスポート関数を呼び出すには --invoke を使用してください。

使用例:

# WASI モジュールを実行(_start を呼び出す)
zwasm hello.wasm --allow-all

# WAT テキスト形式のファイルを実行(コンパイル不要)
zwasm program.wat

# 特定のエクスポート関数を呼び出す
zwasm math.wasm --invoke add 2 3

引数の型

関数の引数は型を認識します。zwasm は関数の型シグネチャを使用して、整数、浮動小数点数、負の数を正しくパースします。

# 整数
zwasm math.wat --invoke add 2 3          # → 5

# 負の数(-- は不要)
zwasm math.wat --invoke negate -5        # → -5
zwasm math.wat --invoke abs -42          # → 42

# 浮動小数点数
zwasm math.wat --invoke double 3.14      # → 6.28
zwasm math.wat --invoke half -6.28       # → -3.14

# 64ビット整数
zwasm math.wat --invoke fib 50           # → 12586269025

結果は自然な形式で表示されます:

  • i32/i64: 符号付き10進数(例: -14294967295 ではなく)
  • f32/f64: 10進数(例: 3.14、生のビット表現ではなく)

引数の数は関数シグネチャに対して検証されます:

zwasm math.wat --invoke add 2             # error: 'add' expects 2 arguments, got 1

WASI モジュール

WASI モジュールは _start を使用し、args_get 経由で文字列引数を受け取ります。WASI の引数と zwasm のオプションを区別するには -- を使用してください:

# WASI モジュールに文字列引数を渡す
zwasm app.wasm --allow-all -- hello world
zwasm app.wasm --allow-read --dir ./data -- input.txt

# 環境変数(注入された変数は --allow-env なしでもアクセス可能)
zwasm app.wasm --env HOME=/tmp --env USER=alice

# サンドボックスモード: 全権限を拒否 + fuel 10億 + メモリ 256MB
zwasm untrusted.wasm --sandbox
zwasm untrusted.wasm --sandbox --allow-read --dir ./data

マルチモジュールリンク

# インポートモジュールをリンクして関数を呼び出す
zwasm app.wasm --link math=math.wasm --invoke compute 42

リソース制限

# 命令数(fuel メータリング)とメモリを制限
zwasm untrusted.wasm --fuel 1000000 --max-memory 16777216

zwasm inspect

モジュールのインポートとエクスポートを表示します。

zwasm inspect [--json] <file.wasm|.wat>
# 人間が読める形式
zwasm inspect examples/wat/01_hello_add.wat

# JSON 出力(スクリプト用)
zwasm inspect --json math.wasm

オプション:

  • --json — JSON 形式で出力

zwasm validate

モジュールを実行せずに妥当性を検証します。

zwasm validate <file.wasm|.wat>

zwasm features

サポートしている WebAssembly プロポーザルの一覧を表示します。

zwasm features [--json]

zwasm version

バージョン文字列を表示します。

zwasm help

使い方の情報を表示します。

run オプション

実行

フラグ説明
--invoke <func>_start の代わりに <func> を呼び出す
--batchバッチモード: stdin から呼び出しコマンドを読み取る
--link name=fileモジュールをインポートソースとしてリンク(繰り返し指定可)

WASI ケーパビリティ

フラグ説明
--sandbox全ケーパビリティを拒否 + fuel 10億 + メモリ 256MB
--allow-allすべての WASI ケーパビリティを付与
--allow-readファイルシステムの読み取りを許可
--allow-writeファイルシステムの書き込みを許可
--allow-env環境変数へのアクセスを許可
--allow-pathパス操作(open, mkdir, unlink)を許可
--dir <path>ホストディレクトリをプリオープン(繰り返し指定可)
--env KEY=VALUEWASI 環境変数を設定(常にアクセス可能)

リソース制限

フラグ説明
--max-memory <N>メモリ上限(バイト単位、memory.grow を制限)
--fuel <N>命令 fuel の上限(使い切るとトラップ)

デバッグ

フラグ説明
--profile実行プロファイルを表示(オペコード頻度、呼び出し回数)
--trace=CATSトレースカテゴリ: jit,regir,exec,mem,call(カンマ区切り)
--dump-regir=N関数インデックス N のレジスタ IR をダンプ
--dump-jit=N関数インデックス N の JIT ディスアセンブリをダンプ

バッチモード

--batch を使用すると、zwasm は stdin から呼び出しコマンドを1行ずつ読み取ります:

add 2 3
mul 4 5
fib 10
echo -e "add 2 3\nmul 4 5" | zwasm math.wasm --batch --invoke add

終了コード

コード意味
0成功
1ランタイムエラー(トラップ、スタックオーバーフロー等)
2不正なモジュールまたはバリデーションエラー
126ファイルが見つからない