feat: llimphi standalone — framework UI soberano extraído del monorepo
Motor gráfico Llimphi como workspace independiente: bucle Elm (input→update→view→layout→raster→present) sobre wgpu+vello+taffy+parley. Núcleo (hal/raster/layout/text/ui/theme/surface/motion/icons) + ~40 widgets + módulos, sin dependencias al resto del monorepo. cargo check --workspace pasa (64 crates). Puerta de entrada: cargo run -p llimphi-ui --example counter. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1 @@
|
||||
plugin.wasm
|
||||
@@ -0,0 +1,11 @@
|
||||
name = "hello-status"
|
||||
version = "0.1.0"
|
||||
capabilities = ["status.greet"]
|
||||
|
||||
[permissions]
|
||||
networking = "none"
|
||||
filesystem = "none"
|
||||
processes = false
|
||||
|
||||
[permissions.ipc]
|
||||
allow = []
|
||||
@@ -0,0 +1,44 @@
|
||||
;; Plugin fixture: "hello-status".
|
||||
;;
|
||||
;; Lee el payload de args que el host escribió en memoria justo
|
||||
;; después del nombre de la capability, y lo concatena con un saludo
|
||||
;; fijo "hola, " en otro offset. Después emite el resultado via
|
||||
;; `plugin.set_status`.
|
||||
;;
|
||||
;; Layout de memoria al entrar `_invoke`:
|
||||
;; [0 .. cap_len) nombre de capability (UTF-8)
|
||||
;; [cap_len .. cap_len+arg_len) args del host (UTF-8)
|
||||
;;
|
||||
;; El plugin coloca su buffer de salida en el offset 256 para no
|
||||
;; pisar lo anterior. v0 del ABI no negocia layouts — la convención
|
||||
;; es que el plugin elige offsets altos.
|
||||
(module
|
||||
(import "plugin" "log" (func $log (param i32 i32)))
|
||||
(import "plugin" "set_status" (func $set_status (param i32 i32)))
|
||||
|
||||
(memory (export "memory") 1)
|
||||
|
||||
;; "hola, " en offset 256 (6 bytes)
|
||||
(data (i32.const 256) "hola, ")
|
||||
|
||||
(func (export "_invoke")
|
||||
(param $cap_ptr i32) (param $cap_len i32)
|
||||
(param $arg_ptr i32) (param $arg_len i32)
|
||||
(result i32)
|
||||
;; Traza para debug: el host capturará "[plugin] greet"
|
||||
(call $log (i32.const 256) (i32.const 5))
|
||||
|
||||
;; Copia los args al final del prefijo "hola, " en 256+6=262
|
||||
(memory.copy
|
||||
(i32.const 262) ;; dst = 256 + len("hola, ")
|
||||
(local.get $arg_ptr) ;; src = donde el host puso args
|
||||
(local.get $arg_len))
|
||||
|
||||
;; Total len = 6 ("hola, ") + arg_len
|
||||
(call $set_status
|
||||
(i32.const 256)
|
||||
(i32.add (i32.const 6) (local.get $arg_len)))
|
||||
|
||||
(i32.const 0)
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user