tawasuyu/llimphi
Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.
chore: refresco desde el monorepo — vello 0.9 / wgpu 29, 120 miembros
1[package]
2name = "llimphi-hal"
3version.workspace = true
4edition.workspace = true
5license.workspace = true
6authors.workspace = true
7publish.workspace = true
8
9description = "Surface/device HAL for the llimphi UI framework (wgpu) — one scene tree across Wayland/X11/Win32/Android/bare-metal."
10repository.workspace = true
11[dependencies]
12wgpu = { workspace = true }
13raw-window-handle = { workspace = true }
14winit = { workspace = true }
15pollster = { workspace = true }
16
17[target.'cfg(target_arch = "wasm32")'.dependencies]
18# El `<canvas>` al que se ata [`CanvasSurface`]. Sólo se usan los tipos DOM
19# mínimos: el elemento, sus atributos width/height y el `devicePixelRatio` de
20# la ventana. Nada de eventos ni de `requestAnimationFrame` — eso es del
21# eventloop (winit ya lo hace).
22web-sys = { version = "0.3", features = [
23 "Document",
24 "Element",
25 "HtmlCanvasElement",
26 "Window",
27] }
28# `webgl` habilita el backend GL de wgpu sobre WebGL2, el fallback para los
29# navegadores sin WebGPU (Safari viejo, Firefox sin flag). Va target-gated
30# para que el escritorio NO lo arrastre: allí el backend GL de Mesa tiene el
31# bug de teardown documentado en `Hal::new_inner`, y justamente por eso el
32# default de escritorio es `Backends::PRIMARY`.
33wgpu = { workspace = true, features = ["webgl"] }
34
35[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
36# Sólo para el example `canvas_clear`: `spawn_local` (el arranque del `Hal` es
37# async y el main thread del navegador no se puede bloquear), `console` para el
38# log, y `JsCast` para bajar de `Element` a `HtmlCanvasElement`.
39wasm-bindgen = "0.2"
40wasm-bindgen-futures = "0.4"
41web-sys = { version = "0.3", features = ["console"] }
42
43[[example]]
44name = "clear_screen"
45path = "examples/clear_screen.rs"
46
47# El HAL del navegador. En targets nativos es un `main` que sólo avisa: así
48# `cargo check --workspace --examples` lo cubre sin romperse, y
49# `--target wasm32-unknown-unknown --examples` compila el camino real.
50[[example]]
51name = "canvas_clear"
52path = "examples/canvas_clear.rs"