feat(mirada): mirada-layout no_std — primer núcleo compartible con renaser

mirada-layout (el motor de teselado del compositor) pasa a `no_std +
alloc` para poder compilarse también en bare-metal — es el primer
crate-núcleo que brahman y renaser compartirán.

- `#![cfg_attr(not(test), no_std)]` + `extern crate alloc`: usa
  `alloc::{vec, collections::BTreeMap}` en vez de `std`.
- Matemática de punto flotante vía `libm` (`sqrt`/`ceil`/`round` viven
  en `std`, no en `core`).
- `serde` pasa a feature opcional: los consumidores Linux
  (mirada-protocol/brain) la activan; un consumidor bare-metal no
  necesita (de)serializar el layout.
- Deps declaradas directas (no `workspace = true`): un núcleo que
  cruzará fronteras de workspace se mantiene autocontenido.

Verificado: `cargo build --target x86_64-unknown-none` compila;
32 tests verdes; mirada-protocol/brain sin regresión.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-22 14:37:03 +00:00
parent 5770759f2e
commit 1c6aafbc24
8 changed files with 54 additions and 12 deletions
@@ -8,7 +8,9 @@ publish.workspace = true
description = "mirada — orquestador de escritorio del compositor: mantiene salidas, escritorios virtuales, ventanas y foco; consume BodyEvent y produce BrainCommand. Agnóstico de GPUI y de smithay."
[dependencies]
mirada-layout = { path = "../mirada-layout" }
# `serde` activa los `derive` de los tipos de layout (este crate
# serializa el estado del escritorio a RON).
mirada-layout = { path = "../mirada-layout", features = ["serde"] }
mirada-protocol = { path = "../mirada-protocol" }
serde = { workspace = true }
ron = { workspace = true }