Перейти к содержимому

Хост-функции

WASM-модули получают доступ к возможностям среды выполнения через импорт хост-функций. Каждый импорт объявляется явно для каждой записи в списке imports.

ImportОписание
wasi:cliОкружение, выход, stdin/stdout/stderr, терминал
wasi:ioПотоки, обработка ошибок, опрос (polling)
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.

Interfaces: wasi:clocks/wall-clock, wasi:clocks/monotonic-clock

Системные и монотонные часы для операций со временем. Монотонные часы интегрируются с диспетчером Wippy для асинхронного sleep.

Interfaces: wasi:io/error, wasi:io/streams, wasi:io/poll

Операции чтения/записи потоков и асинхронный опрос (polling). Интерфейс poll обеспечивает кооперативную передачу управления через диспетчер.

Interfaces: wasi:cli/environment, wasi:cli/exit, wasi:cli/stdin, wasi:cli/stdout, wasi:cli/stderr

Доступ к переменным окружения, кодам выхода процесса и стандартным потокам ввода/вывода. Переменные окружения привязываются из реестра окружения Wippy через конфигурацию WASI.

Interfaces: wasi:filesystem/types, wasi:filesystem/preopens

Доступ к файловой системе через смонтированные директории. Точки монтирования настраиваются для каждой записи и связывают записи файловой системы Wippy с путями в госте.

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

Interfaces: wasi:random/random, wasi:random/insecure, wasi:random/insecure-seed

Криптографически стойкая и нестойкая генерация случайных чисел.

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.

Interfaces: wasi:http/types, wasi:http/outgoing-handler

Исходящие HTTP-запросы клиента из WASM-модулей. Поддерживает типы запросов/ответов, определенные спецификацией WASI HTTP.