Skip to content

Что такое WASI

Коротко:

WASI (WebAssembly System Interface) — standard API для WebAssembly вне браузера. Даёт WASM access to filesystem, network, env vars в sandboxed way. Enables server-side WASM: Fastly Compute@Edge, Fermyon Spin, Docker WASM containers, Envoy WASM filters. Сompetes с containers для lightweight serverless. Runtimes: Wasmtime (Mozilla), WasmEdge, WasmCloud.

Ниже: подробности, пример, смежные термины, FAQ.

Подробности

  • WASI Preview 1: basic POSIX-like interface (deprecated — 2019)
  • WASI Preview 2 (2024 stable): component model, world interfaces
  • Sandboxing: capability-based security (explicit file/net access)
  • Start time: 1-5 ms vs container 100ms+ vs JVM 1s+
  • Languages: Rust, C/C++, Go, Python, TinyGo all compile to WASI

Пример

// Rust → WASI
// Cargo.toml
[dependencies]
wasi = "0.13"

// main.rs
use std::fs;
fn main() {
    let content = fs::read_to_string("/data/input.txt").unwrap();
    println!("{}", content);
}

// Build: cargo build --target wasm32-wasi
// Run: wasmtime --dir=/host/data main.wasm

Смежные термины

Больше по теме

Часто задаваемые вопросы

WASI vs containers?

WASI: much faster start, smaller (KB vs MB), language-neutral. Containers: больше compatibility с existing software. Для serverless/edge — WASI win.

Когда production-ready?

Preview 2 released 2024 stable. Fastly, Cloudflare Workers используют внутри. Для mainstream — 2026+.

Замена containers?

Не замена, а complement. Containers сохранятся для legacy apps. Новые edge functions, plugins, serverless — WASI.