Процессы WASM
Процессы WASM
Заголовок раздела «Процессы WASM»WASM-модули могут запускаться как процессы через вид записи process.wasm. Процессы выполняются внутри хоста процессов Wippy и поддерживают полный жизненный цикл: порождение, мониторинг и контролируемое завершение.
Конфигурация записи
Заголовок раздела «Конфигурация записи»entries: - name: wasm_binaries kind: fs.directory directory: ./wasm
- name: compute_worker kind: process.wasm fs: myns:wasm_binaries path: /worker.wasm hash: sha256:292b796376f8b4cc360acf2ea6b82d1084871c3607a079f30b446da8e5c984a4 method: computeПоля конфигурации
Заголовок раздела «Поля конфигурации»| Field | Required | Описание |
|---|---|---|
fs | Yes | ID записи файловой системы, содержащей бинарник |
path | Yes | Путь к .wasm-файлу внутри файловой системы |
hash | Yes | SHA-256 хеш для проверки целостности |
method | Yes | Имя экспортируемой функции для выполнения |
transport | No | Транспорт вызова: payload (по умолчанию) или wasi-http |
wit | No | WIT-сигнатура для raw/core-модулей |
imports | No | Хост-импорты для подключения |
wasi | No | Конфигурация WASI (args, env, mounts) |
limits | No | Ограничения выполнения |
CLI-команды
Заголовок раздела «CLI-команды»Зарегистрируйте WASM-процесс как именованную команду с помощью meta.command:
- name: greet kind: process.wasm meta: command: name: greet short: Greet someone via WASM fs: myns:wasm_binaries path: /component.wasm hash: sha256:... method: greetЗапуск:
wippy run greetСписок доступных команд:
wippy run list| Field | Required | Описание |
|---|---|---|
name | Yes | Имя команды для использования с wippy run <name> |
short | No | Краткое описание, отображаемое в wippy run list |
Для работы CLI-команд необходимы terminal.host и process.host.
Жизненный цикл процесса
Заголовок раздела «Жизненный цикл процесса»WASM-процессы следуют модели жизненного цикла Init/Step/Close:
- Init - Модуль инстанцируется, входные аргументы захватываются
- Step - Выполнение продвигается. Для асинхронных модулей планировщик управляет циклами yield/resume. Для синхронных модулей выполнение завершается за один шаг.
- Close - Ресурсы экземпляра освобождаются
Порождение из Lua
Заголовок раздела «Порождение из Lua»Порождение WASM-процесса с мониторингом завершения:
local process = require("process")local time = require("time")
-- Spawn with monitoringlocal pid, err = process.spawn_monitored( "myns:compute_worker", -- entry ID "myns:processes", -- process group 6, 7 -- arguments passed to the WASM function)
if err then error("spawn failed: " .. tostring(err))end
-- Wait for the process to completelocal events = process.events()local event = events:receive()if event and event.kind == process.event.EXIT then local result = event.result.value -- return value from the WASM functionendАсинхронное выполнение
Заголовок раздела «Асинхронное выполнение»WASM-процессы, импортирующие WASI-интерфейсы, могут выполнять асинхронные операции. Планировщик приостанавливает процесс во время I/O и возобновляет его после завершения операции:
- name: http_worker kind: process.wasm fs: myns:wasm_binaries path: /http_worker.wasm hash: sha256:... method: run imports: - wasi:io - wasi:cli - wasi:http wasi: env: - id: myns:api_url name: API_URL required: trueМеханизм yield/resume прозрачен для WASM-кода. Стандартные блокирующие вызовы в госте (sleep, read, write, HTTP-запросы) автоматически передают управление диспетчеру.
Конфигурация WASI
Заголовок раздела «Конфигурация WASI»Процессы поддерживают ту же конфигурацию WASI, что и функции:
- name: file_processor kind: process.wasm fs: myns:wasm_binaries path: /processor.wasm hash: sha256:... method: process imports: - wasi:cli - wasi:io - wasi:clocks - wasi:filesystem wasi: args: ["--input", "/data/input.csv"] cwd: "/app" env: - id: myns:output_format name: OUTPUT_FORMAT mounts: - fs: myns:input_data guest: /data read_only: true - fs: myns:output_dir guest: /outputСм. также
Заголовок раздела «См. также»- Обзор - Обзор среды выполнения WebAssembly
- Функции - Конфигурация функций WASM
- Хост-функции - Доступные хост-интерфейсы
- Модель процессов - Жизненный цикл процессов
- Супервизия - Деревья супервизии процессов