feat: mirada standalone — compositor Wayland + WM sobre Llimphi (build magro)
1// =============================================================================
2// renaser :: format — el format del grafo de objetos en disco
3// -----------------------------------------------------------------------------
4// Hasta la Fase 7a, el format del grafo de objetos —el superbloque, los
5// registros del log, el manifiesto— vivia disperso entre `kernel/almacen.rs`
6// y `kernel/manifiesto.rs`. Lo conocia solo el kernel.
7//
8// La Fase 7b se lo entrega tambien a `boot`: el constructor de imagen de
9// ANFITRION debe sembrar el disco con el grafo ya poblado —los objetos de
10// bytecode y el Manifiesto de Genesis— para que el kernel jamas vuelva a
11// empotrar una sola app. Para ello, kernel y boot han de hablar EXACTAMENTE
12// el mismo format: la misma serializacion, el mismo hash, el mismo trazado
13// de registros en el log.
14//
15// Esta crate es esa unica verdad. Es un nucleo `#![no_std]` —el kernel
16// bare-metal la enlaza— y, por ser no_std, el anfitrion `boot` la compila sin
17// friccion. Define los tipos del grafo, su (de)serializacion `postcard`, la
18// funcion hash BLAKE3 que da identidad a cada objeto y el trazado de un
19// registro en el log. Ni kernel ni boot vuelven a definir nada de esto.
20// =============================================================================
21
22#![no_std]
23
24extern crate alloc;
25
26use alloc::string::String;
27use alloc::vec;
28use alloc::vec::Vec;
29
30use serde::{Deserialize, Serialize};
31use serde_big_array::BigArray;
32
33// --- Split temático del format (todo pub; API plana preservada con `pub use
34// <mod>::*`). Cada módulo abre con `use super::*` para ver los otros tipos +
35// las imports de alloc/serde del root. Sigue siendo `#![no_std]`. ---
36mod cable;
37mod constantes;
38mod firma;
39mod grafo;
40mod tipos;
41#[cfg(test)]
42mod pruebas;
43
44pub use cable::*;
45pub use constantes::*;
46pub use firma::*;
47pub use grafo::*;
48pub use tipos::*;