跳转到内容

宿主函数

WASM 模块通过宿主函数导入访问运行时能力。每个导入在条目的 imports 列表中显式声明。

Import描述
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 调度器集成,支持异步 sleep。

接口: wasi:io/errorwasi:io/streamswasi:io/poll

流读写操作和异步轮询。poll 接口通过调度器实现协作式让出。

接口: 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

TCP 和 UDP 网络,支持 DNS 解析。套接字操作与调度器集成,支持异步 I/O。

接口: wasi:http/typeswasi:http/outgoing-handler

从 WASM 模块内部发出 HTTP 客户端请求。支持 WASI HTTP 规范定义的请求/响应类型。

  • 概述 - WebAssembly 运行时概述
  • 函数 - WASM 函数配置
  • 进程 - 将 WASM 作为进程运行