gioser

tawasuyu/brahman

Rust 582TOML 222Markdown 73JSON 198635 Sutichaykuna

⎇ main renaser/CLAUDE.md Markdown · 116 siq'ikuna · 6.1 KB Ñawpa willay ch'uya

feat(renaser): Fase 20 — Akasha Over Ether (grafo distribuido) 42fee6fcb · sergio ·

1# renaser — guía operativa
2
3**renaser** es un kernel asíncrono de *Espacio de Direccionamiento Único*
4(SASOS) en Rust `#![no_std]`, bare-metal x86_64. Rompe con POSIX: interfaz
5visual nativa desde el arranque, aislamiento **por software** (no por MMU),
6el texto como caso particular del dibujo.
7
8Documentos hermanos: `ARCHITECTURE.md` (arquitectura), `ROADMAP.md` (fases y
9plan), `CHANGELOG.md` (registro técnico de cambios), `DIARIO.md` (crónica en
10lenguaje llano), `README.md` (presentación).
11
12## Construir y ejecutar
13
14Desde la raíz del repositorio:
15
16| Comando | Efecto |
17|---|---|
18| `cargo run` | compila el kernel, forja la imagen UEFI y abre QEMU |
19| `cargo build` | compila el kernel + la imagen, sin lanzar QEMU |
20| `cargo kernel` | alias: compila solo el kernel para `x86_64-unknown-none` |
21
22Verificación headless (sin ventana): añadir
23`-- -display none -monitor unix:/tmp/q.sock,server,nowait` y capturar con
24`screendump` por el socket del monitor.
25
26Reconstruir una app WASM del userspace tras tocarla. Los `.wasm` viven en
27`kernel/assets/` —de ahí los lee `boot` al sembrar la imagen (Fase 7b)—; el
28modulo `hello_wasm` se copia como `app.wasm`, el resto conserva su nombre:
29
30```sh
31cd apps/<app>            # hello_wasm, discola, glotona, cronista, memoriosa, pulso, tonada, bitacora, pregon
32cargo build --target wasm32-unknown-unknown --release
33cp target/wasm32-unknown-unknown/release/<app>.wasm ../../kernel/assets/<app>.wasm
34# (hello_wasm es la excepcion: su destino es kernel/assets/app.wasm)
35```
36
37## Estructura del espacio de trabajo
38
39- `boot/` — orquestador de **anfitrión**: construye la imagen de disco UEFI con
40  la crate `bootloader` 0.11 y lanza QEMU. Es el **único miembro** del workspace.
41- `kernel/` — el kernel **bare-metal**. Está **excluido** del workspace y se
42  compila solo como dependencia de artefacto de `boot` (target
43  `x86_64-unknown-none`). NUNCA debe ser miembro del workspace ni compilarse
44  para el anfitrión: lo haría fallar por un `_start` duplicado.
45- `apps/` — aplicaciones del userspace, módulos `.wasm`
46  (target `wasm32-unknown-unknown`). Workspaces propios, excluidos.
47
48Módulos del kernel (`kernel/src/`): `main`, `grafico`, `consola`, `compositor`,
49`baliza`, `sync`, `gdt`, `interrupts`, `pic`, `drivers/`, `almacen`,
50`manifiesto`, `memory/`, `async_system/`, `texto`, `wasm/`. El detalle de cada
51uno está en `ARCHITECTURE.md`.
52
53## Toolchain
54
55Nightly, fijado en `rust-toolchain.toml`. Targets `x86_64-unknown-none` y
56`wasm32-unknown-unknown`. Componentes `rust-src` y `llvm-tools` (los exige el
57build script de la crate `bootloader`). Entorno verificado: Artix Linux,
58QEMU 11, OVMF en `/usr/share/edk2/x64/OVMF.4m.fd` (sin módulo KVM → TCG).
59
60## Convenciones
61
62- **Idioma:** comentarios E identificadores en español.
63- **`unsafe`:** confinado en células mínimas, envuelto de inmediato en una
64  abstracción segura. `#![deny(unsafe_op_in_unsafe_fn)]`. Cada bloque `unsafe`
65  lleva un comentario `SEGURIDAD:` que justifica su corrección.
66- **Framebuffer / MMIO:** siempre `core::ptr::write_volatile`; jamás asignación
67  indexada directa (el optimizador la elidiría).
68- **`no_std` estricto:** solo `core::*` y `alloc::*` (heap vivo desde la Fase 3).
69  Prohibido cualquier ruta de `std::*`.
70- **Alineación:** 16 bytes para estructuras genéricas; 4096 bytes (página) para
71  buffers de memoria y regiones de asignador.
72- Código densamente comentado; se cuida la coherencia de estilo entre módulos.
73
74## Estado
75
76Fases 1 a 5, 6.0, 6.1, 6.2, la Fase 7 COMPLETA —el userspace nace del grafo de
77objetos—, la Fase 8 COMPLETA —el compositor teselante e interactivo: teselado
78con `mirada-layout` (8a), ciclado de layout (8b), foco y enrutamiento selectivo
79del teclado (8c), promoción y reordenación de ventanas (8d)—, la Fase 9
80COMPLETA —orden-Z y ventanas flotantes: composición con solapamiento (`Alt+F`)—
81la Fase 10 COMPLETA —alta y baja de aplicaciones en vivo (`Alt+N` / `Alt+Q`)—,
82la Fase 11 COMPLETA —el reloj del sistema como capacidad de host
83(`sys_tiempo_mono`) + la app `pulso`—, la Fase 12 COMPLETA —la bocina del PC
84como capacidad de host (`sys_tono`) + la app `tonada`—, la Fase 13 COMPLETA
85—ratón PS/2, puntero, clic-para-enfocar y arrastre de ventanas flotantes—,
86infraestructura `memory::mmio` (mapeador propio de regiones MMIO en la tabla
87L4), la Fase 14 COMPLETA —nombres en cada ventana y barra de tareas con
88clic-para-enfocar—, la Fase 15 COMPLETA —la voz del sistema: acorde al
89arrancar, repique al lanzar o cerrar, bajo al desalojar, con prioridad
90sobre `sys_tono`— la Fase 16 COMPLETA —la barra viva: botón «+»
91lanzador a la izquierda y reloj `mm:ss` a la derecha que late cada
92segundo— la Fase 17 COMPLETA —`bitacora`, editor de texto que persiste entre
93arranques en el grafo de objetos (tipografía 8×8 embebida)— la Fase 18
94COMPLETA —red: virtio-net + ARP al gateway de QEMU + recepción de
95paquetes registrada por COM1—, la Fase 19 COMPLETA —voz del userspace
96hacia la red: capacidades `sys_net_mac` / `sys_net_enviar` / `sys_net_recibir`
97+ la app `pregon` que pregona su presencia con un broadcast Ethernet
98y muestra el tráfico entrante— y la Fase 20 COMPLETA —Akasha Over Ether:
99crate `akasha` (no_std compartido) con `MensajeAkasha` postcard sobre
100EtherType 0x88B5 + respondedor en el kernel (demuxer, atención de
101SolicitarObjeto / ProveedorObjeto / AnunciarRaiz, faro periódico cada
1025 s contra reloj monótono)—. Todo verificado en QEMU. Ver `ROADMAP.md`.
103
104## Flujo de trabajo
105
106En **cada iteración** de trabajo, sin excepción:
107
1081. Actualizar `CHANGELOG.md` — la entrada técnica detallada del cambio.
1092. Actualizar `DIARIO.md` — la misma jornada contada en lenguaje llano y
110   elegante, sin carga técnica (es una crónica humana, no un registro técnico).
1113. Verificar en QEMU si el cambio es observable (con captura de pantalla).
1124. `git commit` (mensaje en español, descriptivo) y `git push origin main`.
113
114renaser vive ahora dentro del monorepo **brahman**; los commits van al remoto
115de brahman (`gitea.gioser.net/sergio/brahman`). Mensajes de commit en español.
116Verifica una fase en QEMU antes de darla por cerrada.

CLAUDE.md

renaser — guía operativa

renaser es un kernel asíncrono de Espacio de Direccionamiento Único (SASOS) en Rust #![no_std], bare-metal x86_64. Rompe con POSIX: interfaz visual nativa desde el arranque, aislamiento por software (no por MMU), el texto como caso particular del dibujo.

Documentos hermanos: ARCHITECTURE.md (arquitectura), ROADMAP.md (fases y plan), CHANGELOG.md (registro técnico de cambios), DIARIO.md (crónica en lenguaje llano), README.md (presentación).

Construir y ejecutar

Desde la raíz del repositorio:

ComandoEfecto
cargo runcompila el kernel, forja la imagen UEFI y abre QEMU
cargo buildcompila el kernel + la imagen, sin lanzar QEMU
cargo kernelalias: compila solo el kernel para x86_64-unknown-none

Verificación headless (sin ventana): añadir -- -display none -monitor unix:/tmp/q.sock,server,nowait y capturar con screendump por el socket del monitor.

Reconstruir una app WASM del userspace tras tocarla. Los .wasm viven en kernel/assets/ —de ahí los lee boot al sembrar la imagen (Fase 7b)—; el modulo hello_wasm se copia como app.wasm, el resto conserva su nombre:

cd apps/<app>            # hello_wasm, discola, glotona, cronista, memoriosa, pulso, tonada, bitacora, pregon
cargo build --target wasm32-unknown-unknown --release
cp target/wasm32-unknown-unknown/release/<app>.wasm ../../kernel/assets/<app>.wasm
# (hello_wasm es la excepcion: su destino es kernel/assets/app.wasm)

Estructura del espacio de trabajo

Módulos del kernel (kernel/src/): main, grafico, consola, compositor, baliza, sync, gdt, interrupts, pic, drivers/, almacen, manifiesto, memory/, async_system/, texto, wasm/. El detalle de cada uno está en ARCHITECTURE.md.

Toolchain

Nightly, fijado en rust-toolchain.toml. Targets x86_64-unknown-none y wasm32-unknown-unknown. Componentes rust-src y llvm-tools (los exige el build script de la crate bootloader). Entorno verificado: Artix Linux, QEMU 11, OVMF en /usr/share/edk2/x64/OVMF.4m.fd (sin módulo KVM → TCG).

Convenciones

Estado

Fases 1 a 5, 6.0, 6.1, 6.2, la Fase 7 COMPLETA —el userspace nace del grafo de objetos—, la Fase 8 COMPLETA —el compositor teselante e interactivo: teselado con mirada-layout (8a), ciclado de layout (8b), foco y enrutamiento selectivo del teclado (8c), promoción y reordenación de ventanas (8d)—, la Fase 9 COMPLETA —orden-Z y ventanas flotantes: composición con solapamiento (Alt+F)— la Fase 10 COMPLETA —alta y baja de aplicaciones en vivo (Alt+N / Alt+Q)—, la Fase 11 COMPLETA —el reloj del sistema como capacidad de host (sys_tiempo_mono) + la app pulso—, la Fase 12 COMPLETA —la bocina del PC como capacidad de host (sys_tono) + la app tonada—, la Fase 13 COMPLETA —ratón PS/2, puntero, clic-para-enfocar y arrastre de ventanas flotantes—, infraestructura memory::mmio (mapeador propio de regiones MMIO en la tabla L4), la Fase 14 COMPLETA —nombres en cada ventana y barra de tareas con clic-para-enfocar—, la Fase 15 COMPLETA —la voz del sistema: acorde al arrancar, repique al lanzar o cerrar, bajo al desalojar, con prioridad sobre sys_tono— la Fase 16 COMPLETA —la barra viva: botón «+» lanzador a la izquierda y reloj mm:ss a la derecha que late cada segundo— la Fase 17 COMPLETA —bitacora, editor de texto que persiste entre arranques en el grafo de objetos (tipografía 8×8 embebida)— la Fase 18 COMPLETA —red: virtio-net + ARP al gateway de QEMU + recepción de paquetes registrada por COM1—, la Fase 19 COMPLETA —voz del userspace hacia la red: capacidades sys_net_mac / sys_net_enviar / sys_net_recibir

Flujo de trabajo

En cada iteración de trabajo, sin excepción:

  1. Actualizar CHANGELOG.md — la entrada técnica detallada del cambio.
  2. Actualizar DIARIO.md — la misma jornada contada en lenguaje llano y elegante, sin carga técnica (es una crónica humana, no un registro técnico).
  3. Verificar en QEMU si el cambio es observable (con captura de pantalla).
  4. git commit (mensaje en español, descriptivo) y git push origin main.

renaser vive ahora dentro del monorepo brahman; los commits van al remoto de brahman (gitea.gioser.net/sergio/brahman). Mensajes de commit en español. Verifica una fase en QEMU antes de darla por cerrada.