
WASI là gì? Chạy WebAssembly ngoài trình duyệt
WebAssembly (Wasm) đã chứng minh khả năng chạy code gần native trong trình duyệt. Nhưng tiềm năng thực sự của Wasm nằm ở việc chạy ngoài trình duyệt — trên server, edge, IoT, và thậm chí blockchain. Đây là lúc WASI (WebAssembly System Interface) phát huy tác dụng, cung cấp chuẩn POSIX-like để Wasm tương tác với hệ điều hành.
WASI do Fastly, Mozilla, Intel và các công ty khác phát triển, tách rời Wasm khỏi môi trường web. Trước WASI, Wasm trong trình duyệt chỉ truy cập được Web APIs — DOM, fetch, WebGL. Với WASI, Wasm có thể đọc file, mở socket, spawn process, và thậm chí chạy toàn bộ Linux user-space.

WASI Preview 1 và Preview 2
WASI Preview 1 là phiên bản ổn định đầu tiên, cung cấp basic capabilities: file system, clocks, random, environ, exit, fd_read/fd_write. Nhiều runtime như Wasmtime, Wasmer và WasmEdge đã implement Preview 1. Nó đủ cho các ứng dụng đơn giản như CLI tools, serverless functions.
WASI Preview 2 (hay WASI P2, còn gọi là wasi-io hay wit-bindgen) là thiết kế hoàn toàn mới, dựa trên wit (WebAssembly Interface Types) và component model. Thay vì syscall trực tiếp, P2 dùng async I/O với resource handles — object-oriented hơn, type-safe hơn. Component model cho phép compose nhiều module Wasm lại với nhau, tương tự microservices trong một binary.

Ứng dụng thực tế
Serverless và Edge: Cloudflare Workers, Fastly Compute@Edge và Fermyon Spin đều dùng Wasm + WASI để chạy code ở edge với cold start dưới 1ms. Ưu điểm so với container: nhẹ (megabytes thay vì gigabytes), boot nhanh, sandbox mạnh hơn.
Embedded và IoT: Wasmtime hỗ trợ nhiều target ARM, RISC-V, Xtensa — phù hợp chạy trên microcontroller. Ferret-SoC và WASI-threads cho phép chạy multithreaded code trên bare metal.
Blockchain: Cosmos SDK và CosmWasm dùng Wasm để triển khai smart contract. Polkadot Parachains cũng dùng Wasm runtime (Wasmtime). Ưu điểm: deterministic execution, portable, và cập nhật contract không cần hard fork.
Plugin systems: Envoy proxy dùng Wasm cho extensibility — filter có thể được load động. Dapr và Kratix cũng đang thử nghiệm Wasm plugin cho sidecar pattern.
So sánh runtime
| Runtime | Ngôn ngữ | Preview 1 | Preview 2 | Đặc điểm |
|---|---|---|---|---|
| Wasmtime | Rust | ✓ | ✓ | CNCF sandbox, phổ biến nhất |
| WasmEdge | C++ | ✓ | ✓ | Tối ưu AI inference, edge |
| Wasmmer | Rust | ✓ | α | Universal runtime, nổi tiếng nhất |
| V8 Wasm | C++ | ✓ | α | Hiệu năng cao, dùng trong Node.js |
WASM + WASI đang định hình lại cách chúng ta phân phối và chạy code. Thay vì container image nặng 500MB, bạn chỉ cần module Wasm vài megabyte. Thay vì cần root để cài đặt, Wasm chạy trong sandbox với minimal permissions. Đây là bước tiến lớn hướng tới world compute platform.
Thách thức và giới hạn
WASM không phải giải pháp mọi vấn đề. Hiệu năng với các workload I/O intensive vẫn chưa bằng native. WASI Preview 1 chưa hỗ trợ tốt multithreading — WASI threads mới chỉ ở proposal stage. Các thư viện phổ biến như Python asyncio hoặc Node.js Stream vẫn chưa tương thích trực tiếp với WASI.
Bảo mật sandbox của WASM rất mạnh nhưng cũng tạo ra thách thức khi cần tích hợp với hệ thống legacy. Không phải module Wasm nào cũng có thể chạy trong WASI — nó đòi hỏi code được compile đúng chuẩn và không phụ thuộc vào OS-specific APIs.
Component Model là giải pháp cho khả năng compose module, nhưng ecosystem vẫn non-trivial. Hiện tại, chỉ vài runtime support component model hoàn chỉnh. Việc chia sẻ state giữa các component phức tạp hơn HTTP microservices, và tooling chưa bằng Docker/Kubernetes.
WASI cho AI và Machine Learning
Một lĩnh vực đang tăng trưởng nhanh là AI inference với Wasm. Một số framework như llama.cpp hỗ trợ compile thành Wasm, cho phép chạy LLM nhỏ (Llama 3.2 1B, Phi-3 Mini) ngay trên trình duyệt hay serverless edge function. WASI là chìa khóa để chạy model này với sandbox an toàn mà không cần GPU chuyên dụng.
ByteDance, Shopify, và các công ty lớn đang thử nghiệm Wasm inference với WASI để tránh cold start của container và giảm chi phí serverless. Kết hợp với WASI P2 async I/O, model có thể stream output trực tiếp sang client mà không cần buffer trung gian.
Tương lai của WASI và Component Model
Component Model là đòn bẩy để Wasm trở thành platform đích thực sự. Khi có thể compose module Rust, Go, C++ thành một application mà không cần FFI phức tạp, khái niệm “write once, run anywhere” với native performance trở nên khả thi. WASI sẽ trở thành POSIX mới cho thế hệ cloud-native — đầy đủ, chuẩn hóa, nhưng nhẹ và secure.
