Files
brahman/renaser
sergio 42fee6fcbc feat(renaser): Fase 20 — Akasha Over Ether (grafo distribuido)
Tres mensajes y un EtherType propio bastan para extender el grafo de
objetos —direccionado por contenido, ya BLAKE3— a otras maquinas
renaser que escuchen en la misma red de capa-2. Sin TCP, sin IP,
sin DNS.

Crate nueva 'akasha/' (no_std compartido, gemela de 'formato',
excluida del workspace):

  - MensajeAkasha enum con SolicitarObjeto(id), ProveedorObjeto(id,
    payload), AnunciarRaiz(id).
  - Codec: postcard (mismo que ya usa el grafo en disco).
  - EtherType: 0x88B5. MAX_PAYLOAD_AKASHA = 1486 (MTU sin fragmentar).
  - Helpers componer_frame(src, dst, msg) y analizar_frame(bytes) que
    distinguen EtherType ajeno, frame truncado y payload basura.
  - 6 pruebas unitarias en verde.

Modulo nuevo 'kernel/src/akasha.rs' con tres oficios:

  1. Demuxer (drenar_y_demultiplexar): drena la cola RX del dispositivo
     virtio-net y demultiplexa: frames AoE con payload valido los
     procesa el respondedor; el resto va a una cola del userspace que
     'sys_net_recibir' ahora lee. Frames 0x88B5 con payload
     no-postcard (saludo de pregon) se cuentan y tambien viajan al
     userspace.

  2. Atencion de mensajes (procesar):
     - SolicitarObjeto(id): consulta almacen::recuperar; si tenemos el
       objeto, respondemos ProveedorObjeto unicast con objeto.serializar()
       y re-hashing de defensa en profundidad.
     - ProveedorObjeto(id, payload): verifica blake3(payload)==id antes
       de absorber con almacen::almacenar.
     - AnunciarRaiz(id): si ignoramos el nodo, le solicitamos al emisor.

  3. Faro periodico (difundir_raiz cada 5 s): broadcast del hash del
     manifiesto actual. Cadencia medida contra reloj::milisegundos(),
     no contra los awaits — el interprete wasmi de los apps degrada
     la cadencia de EsperaFrame::await a varios cientos de ms, asi
     que se mide contra el reloj monotono y los oficios per-fotograma
     se enganchan al tic del compositor (cuyo latido es fiable).

Contadores ResumenAkasha (rx/tx por variante, descartados, cola del
usuario) listos para un futuro indicador AoE en la barra de tareas.

Cambios complementarios:

  - sys_net_recibir lee de akasha::pop_usuario, no de
    drivers::red::recibir_en (que queda #[allow(dead_code)] como
    primitiva del driver para diagnostico).
  - tarea_red queda corta: envia un ARP al gateway y termina. El
    demuxer y el faro viven en el tic del compositor.

Verificacion:

  - 'cargo test -p akasha' → 6 pruebas en verde.
  - QEMU headless 60 s con -object filter-dump → 14 frames: 11
    AnunciarRaiz (Δ promedio 5.86 s sobre 5.00 s de target), 2 ARP
    y el pregon hello. Cada AnunciarRaiz lleva el hash del manifiesto
    '2f3deadfcc7dae25..' en 33 bytes postcard sobre 47 bytes de frame.
  - COM1 vuelca 'akasha :: ANUNCIO emitido :: raiz=2f3deadfcc7dae25..'
    en cada disparo.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 05:14:43 +00:00
..

renaser

renaser es un kernel asíncrono de Espacio de Direccionamiento Único (SASOS), escrito en Rust #![no_std] para x86_64 bare-metal.

Es un sistema operativo disruptivo que rompe por completo con el paradigma POSIX de los años 70: no emula Linux, no usa archivos planos, no usa TTYs ni capas GNU. El aislamiento entre aplicaciones no descansa en la MMU ni en los anillos de privilegio de la CPU, sino en límites matemáticos sobre el bytecode — aislamiento por software (SFI). La interfaz es visual desde el primer microsegundo: el texto es, simplemente, un caso particular del dibujo.

Qué hace, hoy

  • Arranca por UEFI y adopta el framebuffer GOP con doble búfer sin parpadeo.
  • Se autoempaqueta en una imagen de disco UEFI y se lanza en QEMU.
  • Tiene reflejos de fallo: GDT/TSS, IDT y manejadores de excepción; si colapsa, lo dibuja (franja roja de pánico, naranja de memoria agotada).
  • Late con el hardware: PIC remapeado, temporizador (PIT) y teclado.
  • Gestiona memoria dinámica (heap de 64 MiB, asignador global).
  • Ejecuta un reactor asíncrono cooperativo sobre los Future nativos de Rust: las interrupciones no conmutan contexto, despiertan tareas.
  • Rasteriza texto vectorial al vuelo con fontdue.
  • Ejecuta un userspace WebAssembly aislado por capacidades (wasmi): las aplicaciones solo tocan el mundo a través de funciones de host concedidas.

Construir y ejecutar

Requisitos: rustup con toolchain nightly, QEMU y firmware OVMF.

cargo run

Compila el kernel para x86_64-unknown-none, forja la imagen de disco UEFI y abre QEMU. Ver CLAUDE.md para el resto de comandos y el flujo de la app WASM.

Documentación

Documento Contenido
ARCHITECTURE.md la arquitectura del sistema, subsistema a subsistema
ROADMAP.md fases completadas y plan de las siguientes
CLAUDE.md guía operativa: comandos, estructura y convenciones

Licencia

MPL-2.0