Хост-функции
WASM-модули получают доступ к возможностям среды выполнения через импорт хост-функций. Каждый импорт объявляется явно для каждой записи в списке imports.
Типы импортов
| Import | Описание |
|---|---|
wasi:cli |
Окружение, выход, stdin/stdout/stderr, терминал |
wasi:io |
Потоки, обработка ошибок, опрос (polling) |
wasi:clocks |
Системные и монотонные часы |
wasi:filesystem |
Доступ к файловой системе через смонтированные директории |
wasi:random |
Криптографически стойкие случайные числа |
wasi:sockets |
TCP/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:* включает группу связанных интерфейсов WASI Preview 2.
wasi:clocks
Interfaces: wasi:clocks/wall-clock, wasi:clocks/monotonic-clock
Системные и монотонные часы для операций со временем. Монотонные часы интегрируются с диспетчером Wippy для асинхронного sleep.
wasi:io
Interfaces: wasi:io/error, wasi:io/streams, wasi:io/poll
Операции чтения/записи потоков и асинхронный опрос (polling). Интерфейс poll обеспечивает кооперативную передачу управления через диспетчер.
wasi:cli
Interfaces: wasi:cli/environment, wasi:cli/exit, wasi:cli/stdin, wasi:cli/stdout, wasi:cli/stderr
Доступ к переменным окружения, кодам выхода процесса и стандартным потокам ввода/вывода. Переменные окружения привязываются из реестра окружения Wippy через конфигурацию WASI.
wasi:filesystem
Interfaces: wasi:filesystem/types, wasi:filesystem/preopens
Доступ к файловой системе через смонтированные директории. Точки монтирования настраиваются для каждой записи и связывают записи файловой системы Wippy с путями в госте.
wasi:
mounts:
- fs: myns:data
guest: /data
read_only: true
wasi:random
Interfaces: wasi:random/random, wasi:random/insecure, wasi:random/insecure-seed
Криптографически стойкая и нестойкая генерация случайных чисел.
wasi:sockets
Interfaces: wasi:sockets/network, wasi:sockets/instance-network, wasi:sockets/ip-name-lookup, wasi:sockets/tcp, wasi:sockets/tcp-create-socket, wasi:sockets/udp
TCP- и UDP-сети с DNS-разрешением. Операции с сокетами интегрируются с диспетчером для асинхронного I/O.
wasi:http
Interfaces: wasi:http/types, wasi:http/outgoing-handler
Исходящие HTTP-запросы клиента из WASM-модулей. Поддерживает типы запросов/ответов, определенные спецификацией WASI HTTP.