tawasuyu/llimphi
Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.
chore: refresco desde el monorepo — 128 miembros, los 76 widgets y los 11 módulos
1# =============================================================================
2# llimphi-cable — el caño entre una app enjaulada y su anfitrión, en Linux
3# -----------------------------------------------------------------------------
4# W4 dejó resuelto QUÉ cruza la frontera (`llimphi-wire-escena`), quién lo emite
5# (`llimphi-jaula`) y quién lo pinta (`llimphi-reproductor`). Lo que faltaba para
6# usar ese mismo cable entre dos procesos de Linux —y no entre una app `.wasm` y
7# el kernel— es esto: el transporte y la vuelta.
8#
9# Es deliberadamente tonto: enmarca, serializa y ordena. No dibuja, no mide, no
10# sabe qué es una escena. Todo lo que decide algo vive de los otros lados.
11#
12# Vive en el workspace principal porque el ANFITRIÓN es de acá (shuma, pata), y
13# el huésped —que compila aparte, con el backend `wire` de `llimphi-text`— lo
14# toma por `path`. No arrastra ningún backend, así que cruzar esa frontera no
15# dispara el `compile_error!` de features excluyentes.
16# =============================================================================
17
18[package]
19name = "llimphi-cable"
20version.workspace = true
21edition.workspace = true
22license.workspace = true
23authors.workspace = true
24publish.workspace = true
25description = "llimphi — el transporte entre una app enjaulada y su anfitrión en Linux: marcos con largo al frente, escenas de ida, medidas y eventos de vuelta."
26
27[dependencies]
28# Sólo los TIPOS del cable. Ni rasterizador ni shaper: este crate no dibuja.
29llimphi-wire-escena = { path = "../llimphi-wire-escena", version = "0.1.0" }
30# El modelo de ENTRADA. Se usa el de verdad y no un espejo: `NamedKey` tiene 31
31# variantes, y una copia se desincroniza en la primera tecla que alguien agregue
32# — el síntoma sería una tecla que anda suelta y no enjaulada. Vive en su propio
33# crate justamente para poder cruzar acá sin arrastrar un backend de pintura.
34llimphi-entrada = { path = "../llimphi-entrada", version = "0.1.0", features = ["serde"] }
35serde = { workspace = true }
36postcard = { workspace = true }
37
38[features]
39default = ["proceso"]
40# Lanzar y vigilar un proceso hijo (`vida::lanzar`, `vida::como_murio`). Apagable
41# porque el núcleo del cable —marcos, orden, estados, reintentos— es puro y se
42# prueba sin tocar el sistema; un anfitrión que ya tiene su propio supervisor
43# usa los tipos y no el lanzador.
44proceso = []
45
46# El único test que necesita un proceso de verdad. `harness = false` porque el
47# binario tiene que poder desviarse a «modo huésped» antes de que libtest quiera
48# correr nada: el huésped es este mismo ejecutable con una variable puesta, y así
49# no queda un ejecutable de mentira en el crate que después nadie sabe qué es.
50[[test]]
51name = "vida_con_proceso"
52harness = false