gioser

tawasuyu/llimphi

Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.

Rust 229TOML 101Markdown 82Shell 24052 Sutichaykuna

⎇ main llimphi-wasm-runner/LEEME.md Markdown · 28 siq'ikuna · 1.0 KB Ñawpa willay ch'uya

chore: refresco desde el monorepo — 27 crates nuevos (anim, lottie, svg, mesh, image, layer, test, wire-view, widgets rag-sidebar/router/lazy-list/rive-button) y sync de los 95 existentes 93253cc22 · Sergio ·

1# llimphi-wasm-runner
2
3*Read this in English: [README.md](README.md).*
4
5Lado host de las apps WASM Tier 3.
6
7`WasmGuest` carga un `.wasm` que sigue el ABI de `llimphi-wasm-app-sdk`,
8lo instancia con wasmi y corre su bucle Elm:
9
101. `wasm_init` construye el `Model` del guest (vive en la instancia).
112. `wasm_view` devuelve un `WireNode` serializado; lo deserializamos y lo
12   cacheamos.
133. `wire_to_view` lo materializa en un `View<RunnerMsg>` Llimphi real.
144. Un click emite `RunnerMsg::Guest(bytes)`; `WasmGuest::dispatch` rebota
15   esos bytes a `wasm_dispatch` y refresca la vista.
16
17El host mantiene un único `Store` vivo por app, así el `Model` persiste
18entre frames — exactamente el contrato Elm de Llimphi, sólo que la
19transición corre del otro lado de la frontera WASM.
20
21Es el gemelo, del lado Linux, del ejecutor de apps WASM de wawa
22(`sys_render_frame` + caps por frontera física): el mismo espíritu de
23"abrir apps servidas/distribuidas", pero pintando con Llimphi en vez de un
24framebuffer crudo.
25
26---
27
28Parte de **llimphi** — ver [llimphi](../LEEME.md).

LEEME.md

llimphi-wasm-runner

Read this in English: README.md.

Lado host de las apps WASM Tier 3.

WasmGuest carga un .wasm que sigue el ABI de llimphi-wasm-app-sdk, lo instancia con wasmi y corre su bucle Elm:

  1. wasm_init construye el Model del guest (vive en la instancia).
  2. wasm_view devuelve un WireNode serializado; lo deserializamos y lo cacheamos.
  3. wire_to_view lo materializa en un View<RunnerMsg> Llimphi real.
  4. Un click emite RunnerMsg::Guest(bytes); WasmGuest::dispatch rebota esos bytes a wasm_dispatch y refresca la vista.

El host mantiene un único Store vivo por app, así el Model persiste entre frames — exactamente el contrato Elm de Llimphi, sólo que la transición corre del otro lado de la frontera WASM.

Es el gemelo, del lado Linux, del ejecutor de apps WASM de wawa (sys_render_frame + caps por frontera física): el mismo espíritu de "abrir apps servidas/distribuidas", pero pintando con Llimphi en vez de un framebuffer crudo.


Parte de llimphi — ver llimphi.