コンテンツにスキップ

ホスト関数

WASMモジュールはホスト関数インポートを通じてランタイム機能にアクセスします。各インポートはimportsリストでエントリごとに明示的に宣言されます。

インポート説明
wasi:cli環境変数、終了、stdin/stdout/stderr、ターミナル
wasi:ioストリーム、エラー処理、ポーリング
wasi:clocksウォールクロックとモノトニッククロック
wasi:filesystemマウントされたディレクトリを通じたファイルシステムアクセス
wasi:random暗号学的に安全な乱数
wasi:socketsTCP/UDPネットワーキングとDNS解決
wasi:http送信HTTPクライアントリクエスト

エントリ設定でインポートを有効にします:

- name: my_function
kind: function.wasm
fs: myns:assets
path: /module.wasm
hash: sha256:...
method: run
imports:
- wasi:cli
- wasi:io
- wasi:clocks
- wasi:filesystem
pool:
type: inline

モジュールが実際に必要とするインポートのみを宣言してください。

wasi:*インポートは関連するWASI Preview 2インターフェースのグループを有効にします。

インターフェース: wasi:clocks/wall-clockwasi:clocks/monotonic-clock

時間操作用のウォールクロックとモノトニッククロック。モノトニッククロックは非同期スリープのためにWippyディスパッチャと統合されています。

インターフェース: wasi:io/errorwasi:io/streamswasi:io/poll

ストリーム読み書き操作と非同期ポーリング。pollインターフェースはディスパッチャを通じた協調的yieldを可能にします。

インターフェース: wasi:cli/environmentwasi:cli/exitwasi:cli/stdinwasi:cli/stdoutwasi:cli/stderr

環境変数、プロセス終了コード、標準I/Oストリームへのアクセス。環境変数はWASI設定を通じてWippy環境レジストリからマッピングされます。

インターフェース: wasi:filesystem/typeswasi:filesystem/preopens

マウントされたディレクトリを通じたファイルシステムアクセス。マウントはエントリごとに設定され、Wippyファイルシステムエントリをゲストパスにマッピングします。

wasi:
mounts:
- fs: myns:data
guest: /data
read_only: true

インターフェース: wasi:random/randomwasi:random/insecurewasi:random/insecure-seed

暗号学的に安全な乱数および非安全な乱数生成。

インターフェース: wasi:sockets/networkwasi:sockets/instance-networkwasi:sockets/ip-name-lookupwasi:sockets/tcpwasi:sockets/tcp-create-socketwasi:sockets/udp

DNS解決を伴うTCPおよびUDPネットワーキング。ソケット操作は非同期I/Oのためにディスパッチャと統合されています。

インターフェース: wasi:http/typeswasi:http/outgoing-handler

WASMモジュール内からの送信HTTPクライアントリクエスト。WASI HTTP仕様で定義されたリクエスト/レスポンス型をサポートします。

  • 概要 - WebAssemblyランタイムの概要
  • 関数 - WASM関数の設定
  • プロセス - WASMをプロセスとして実行する