tawasuyu

tawasuyu/llimphi

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

Rust 660Markdown 302TOML 157RON 312382 Definiciones

⎇ main llimphi-hal/Cargo.toml TOML · 64 líneas · 2.5 KB Historia crudo

chore: refresco desde el monorepo — 132 miembros, 79 widgets, la galería vuelve y licencia dual d8edd9a9c · Sergio ·

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# `dup2` para poner `/dev/null` en el descriptor 2 cuando `stderr` se rompe.
18# Ver `src/aviso.rs`: sin eso, el próximo `eprintln!` de CUALQUIER dependencia
19# vuelve a ser fatal. Nada más se usa de libc acá.
20[target.'cfg(unix)'.dependencies]
21libc = { workspace = true }
22
23# El sumidero de avisos en Android. `avisar!` escribe en `stderr`, y el `stderr`
24# de una app de Android no llega a ningún lado; el chasis instala
25# `android_logger`, que escucha a este crate. Ver `src/aviso.rs`.
26[target.'cfg(target_os = "android")'.dependencies]
27log = "0.4"
28
29[target.'cfg(target_arch = "wasm32")'.dependencies]
30# El `<canvas>` al que se ata [`CanvasSurface`]. Sólo se usan los tipos DOM
31# mínimos: el elemento, sus atributos width/height y el `devicePixelRatio` de
32# la ventana. Nada de eventos ni de `requestAnimationFrame` — eso es del
33# eventloop (winit ya lo hace).
34web-sys = { version = "0.3", features = [
35    "Document",
36    "Element",
37    "HtmlCanvasElement",
38    "Window",
39] }
40# `webgl` habilita el backend GL de wgpu sobre WebGL2, el fallback para los
41# navegadores sin WebGPU (Safari viejo, Firefox sin flag). Va target-gated
42# para que el escritorio NO lo arrastre: allí el backend GL de Mesa tiene el
43# bug de teardown documentado en `Hal::new_inner`, y justamente por eso el
44# default de escritorio es `Backends::PRIMARY`.
45wgpu = { workspace = true, features = ["webgl"] }
46
47[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
48# Sólo para el example `canvas_clear`: `spawn_local` (el arranque del `Hal` es
49# async y el main thread del navegador no se puede bloquear), `console` para el
50# log, y `JsCast` para bajar de `Element` a `HtmlCanvasElement`.
51wasm-bindgen = "0.2"
52wasm-bindgen-futures = "0.4"
53web-sys = { version = "0.3", features = ["console"] }
54
55[[example]]
56name = "clear_screen"
57path = "examples/clear_screen.rs"
58
59# El HAL del navegador. En targets nativos es un `main` que sólo avisa: así
60# `cargo check --workspace --examples` lo cubre sin romperse, y
61# `--target wasm32-unknown-unknown --examples` compila el camino real.
62[[example]]
63name = "canvas_clear"
64path = "examples/canvas_clear.rs"