Component Model — standard 2024+, позволяющий WASM-модулям обмениваться rich-типами (records, variants, strings, lists) без ручной сериализации. Описание интерфейсов на WIT (WebAssembly Interface Type). Runtime: Wasmtime, WasmEdge. Результат: JavaScript может импортировать Rust-компонент как обычный npm-package (ComponentizeJS, JCO).
Ниже: подробности, пример, смежные термины, FAQ.
// hello.wit
package example:hello;
world app {
export greet: func(name: string) -> string;
}
// Rust implementation
#[export_name = "greet"]
pub extern "C" fn greet(name: &str) -> String {
format!("Hello, {}!", name)
}Раньше WASM-модули обменивались только i32/i64/f32/f64 и указателями в shared memory. Component Model даёт rich types.
Fastly Compute@Edge, Cloudflare Workers (experimental), Spin от Fermyon.
Language-agnostic микросервисы: написал компонент на Rust, JS/Python/Go его импортируют как родной — без REST/gRPC/сериализации.