feat: integra renaser (kernel SASOS bare-metal) al monorepo

renaser —kernel asíncrono de espacio de direcciones único, no-POSIX,
`no_std` x86_64— entra al monorepo como su PROPIO workspace de Cargo,
no fusionado: usa toolchain nightly, target `x86_64-unknown-none` y
`panic = "abort"`, incompatibles con los perfiles globales de brahman.

- `renaser/` — copia del proyecto (sin su `.git`; el repo original
  conserva su historia standalone). Workspace propio con su
  `rust-toolchain.toml` y `.cargo/`.
- `exclude = ["renaser"]` en el workspace de brahman: Cargo lo trata
  como ajeno.
- El kernel de renaser path-depende `mirada-layout` cruzando la
  frontera de workspace — primer núcleo compartido. Semilla de la
  Fase 8 (compositor): geometría de teselado compartida, framebuffer
  nativo de renaser; smithay se queda en el lado Linux.

Verificado: `cargo build -p boot` compila kernel + imagen UEFI con
mirada-layout enlazado para bare-metal.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-22 14:37:14 +00:00
parent 1c6aafbc24
commit e2272c0ed3
55 changed files with 6668 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
// =============================================================================
// renaser :: kernel/src/texto.rs — Fase 3 :: el texto como caso del dibujo
// -----------------------------------------------------------------------------
// Con el heap activo, el texto deja de ser un mapa de bits estatico. Una
// tipografia vectorial se empotra en el binario y se rasteriza glifo a glifo,
// bajo demanda: el texto se vuelve, literalmente, un caso particular del
// dibujo — la promesa fundacional de renaser.
// =============================================================================
use alloc::vec::Vec;
use fontdue::{Font, FontSettings, Metrics};
use spin::Once;
/// La tipografia vectorial, empotrada en el propio binario del kernel.
static FUENTE_TTF: &[u8] = include_bytes!("../assets/font.ttf");
/// La fuente ya analizada. Se funde una sola vez, tras activar el heap.
static FUENTE: Once<Font> = Once::new();
/// Analiza la tipografia empotrada. Requiere el heap ya activo.
pub fn init() {
FUENTE.call_once(|| {
Font::from_bytes(FUENTE_TTF, FontSettings::default())
.expect("renaser :: la tipografia empotrada es invalida")
});
}
/// Rasteriza un glifo al vuelo: devuelve sus metricas de colocacion y un mapa
/// de cobertura (un byte de opacidad, 0..=255, por cada pixel del glifo).
pub fn rasterizar(caracter: char, tam_px: f32) -> (Metrics, Vec<u8>) {
FUENTE
.get()
.expect("renaser :: la tipografia no fue fundida")
.rasterize(caracter, tam_px)
}