1# llimphi-wasm-app-sdk
2
3*Read this in English: [README.md](README.md).*
4
5Lado guest de las apps WASM Tier 3.
6
7Una app implementa `WasmApp`: un `Model` propio, una transición
8`update(&mut self, Msg)` y una vista `view(&self, &mut Ui) -> WireNode`. La
9UI se arma con los constructores libres de `llimphi_wire_view`
10(`col`/`row`/`text`) para lo no-interactivo y con el `Ui` para lo
11interactivo (`button`/`text_input`/`checkbox`).
12
13**Eventos con payload.** El `Ui` asigna un `EventId` a cada control y guarda
14su handler. El nodo lleva sólo el id; el host, al disparar, manda
15`dispatch(event_id, payload)`. El guest mira su tabla y reconstruye el `Msg`:
16un botón rinde su `Msg` fijo, un input rinde `f(texto_tecleado)`, un checkbox
17`f(nuevo_estado)`. Por eso **`Msg` ya no cruza la frontera** — sólo el id y el
18`EventPayload` —, así que `Msg` se libera de (de)serializar: basta `Clone`.
19
20`export_wasm_app!` genera el ABI: `wasm_init`, `wasm_view() -> u64`
21(ptr<<32|len del `WireNode` postcard), `wasm_dispatch(event_id, ptr, len)`,
22`wasm_alloc`, `wasm_free`. El `Model` y la tabla de handlers viven en un
23global y persisten entre frames porque el host mantiene viva la instancia.
24
25---
26
27Parte de **llimphi** — ver [llimphi](../LEEME.md).
LEEME.md
llimphi-wasm-app-sdk
Read this in English: README.md.
Lado guest de las apps WASM Tier 3.
Una app implementa WasmApp: un Model propio, una transición
update(&mut self, Msg) y una vista view(&self, &mut Ui) -> WireNode. La
UI se arma con los constructores libres de llimphi_wire_view
(col/row/text) para lo no-interactivo y con el Ui para lo
interactivo (button/text_input/checkbox).
Eventos con payload. El Ui asigna un EventId a cada control y guarda
su handler. El nodo lleva sólo el id; el host, al disparar, manda
dispatch(event_id, payload). El guest mira su tabla y reconstruye el Msg:
un botón rinde su Msg fijo, un input rinde f(texto_tecleado), un checkbox
f(nuevo_estado). Por eso Msg ya no cruza la frontera — sólo el id y el
EventPayload —, así que Msg se libera de (de)serializar: basta Clone.
export_wasm_app! genera el ABI: wasm_init, wasm_view() -> u64
(ptr<<32|len del WireNode postcard), wasm_dispatch(event_id, ptr, len),
wasm_alloc, wasm_free. El Model y la tabla de handlers viven en un
global y persisten entre frames porque el host mantiene viva la instancia.
Parte de llimphi — ver llimphi.