tawasuyu

tawasuyu/brahman

Rust 582TOML 222Markdown 83JSON 198635 Definitions

⎇ 42fee6fcbc7eb98267f5abfad803018bf43224a9 renaser/Cargo.toml TOML · 102 lines · 5.5 KB History raw

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

1# =============================================================================
2#  renaser :: manifiesto raíz del espacio de trabajo
3# -----------------------------------------------------------------------------
4#  Un único espacio de direccionamiento, una única verdad de versiones.
5#  Las dependencias se declaran aqui una sola vez y persisten, coherentes,
6#  a traves de todos los miembros del sistema.
7# =============================================================================
8
9[workspace]
10resolver = "2"
11# Solo `boot` es miembro del espacio de trabajo: corre en el anfitrion. El
12# kernel queda EXCLUIDO a proposito —es bare-metal puro y jamas debe compilarse
13# para el anfitrion— y se construye unica y exclusivamente como dependencia de
14# artefacto de `boot`, que le fija el target `x86_64-unknown-none`.
15members = ["boot"]
16# El kernel (bare-metal) y las apps WASM (target wasm32) se compilan aparte,
17# cada cual con su propio target; quedan fuera del espacio de trabajo.
18# `formato` —el formato del grafo en disco— y `akasha` —el protocolo Akasha
19# Over Ether (Fase 20)— tambien se excluyen: son nucleos `no_std` que enlaza
20# el kernel bare-metal, asi que se compilan como dependencia de cada lado
21# (kernel y boot) y no como miembros del workspace anfitrion.
22exclude = ["kernel", "apps", "formato", "akasha"]
23
24# -----------------------------------------------------------------------------
25#  Metadatos compartidos: cada miembro hereda esta identidad con `*.workspace`.
26# -----------------------------------------------------------------------------
27[workspace.package]
28version = "0.1.0"
29edition = "2021"
30license = "MPL-2.0"
31authors = ["JL Soltech <gerencia@jlsoltech.com>"]
32description = "renaser :: kernel asincrono SASOS basado en aislamiento por software"
33
34# -----------------------------------------------------------------------------
35#  Dependencias del ecosistema. Reutilizamos infraestructura madura en lugar
36#  de reinventar boilerplate. `default-features = false` se aplica con bisturi,
37#  unicamente alli donde las features por defecto arrastrarian `std`.
38# -----------------------------------------------------------------------------
39[workspace.dependencies]
40# Constructor de la imagen de disco UEFI/BIOS. Es una herramienta de ANFITRION
41# (usa std), la consume el miembro `boot` y NO debe enlazarse jamas en el kernel.
42bootloader = "0.11"
43
44# API `#![no_std]` que el kernel SI consume: expone `entry_point!`, `BootInfo`
45# y la descripcion del framebuffer GOP. Su version debe acompasar a `bootloader`.
46bootloader_api = "0.11"
47
48# Abstraccion de la CPU x86_64: registros de control, GDT, IDT e instrucciones
49# privilegiadas sin ensamblador inline. Es `#![no_std]` de nacimiento; su
50# feature `instructions` (activa por defecto) nos da `hlt` y el control de IRQ.
51x86_64 = "0.15"
52
53# Rasterizacion de primitivas vectoriales sobre el framebuffer. `#![no_std]`,
54# sin heap: en la Fase 1 solo aporta el rasgo `DrawTarget` del lienzo.
55embedded-graphics = "0.8"
56
57# Rasterizador de tipografias. REQUIERE `alloc`, de modo que solo se teje en el
58# kernel una vez exista el asignador (Fase 2). `default-features = false`
59# silencia su feature `std`. Se declara ya para congelar la version.
60# `hashbrown` es lo que ACTIVA el modo `no_std` de fontdue; sin el, la crate
61# recae en `std::collections` y no compila para bare-metal. `simd` queda fuera:
62# nuestro target no tiene SSE.
63fontdue = { version = "0.9", default-features = false, features = ["hashbrown"] }
64
65# --- Fase 3 :: heap dinamico y reactor asincrono ---
66# Asignador del heap del kernel — algoritmo probado, configurado `no_std`.
67linked_list_allocator = "0.10"
68# Exclusion mutua sin sistema operativo: `Mutex` e inicializacion unica `Once`.
69spin = "0.9"
70# Cola lock-free, segura frente a interrupciones, para el canal de scancodes.
71crossbeam-queue = { version = "0.3", default-features = false, features = ["alloc"] }
72# Combinadores `Future`/`Stream` y `AtomicWaker`. Sin ejecutor ni I/O: solo
73# las piezas que renaser teje en su propio reactor.
74futures-util = { version = "0.3", default-features = false, features = ["alloc"] }
75
76# --- Fase 4 :: interprete WebAssembly para el userspace aislado ---
77# `wasmi` en modo bare-metal: sin `std`, sin `wat`, sin `simd` (el target no
78# tiene SSE). `hash-collections` le da mapas basados en hashbrown, `no_std`.
79wasmi = { version = "1.0", default-features = false, features = ["hash-collections"] }
80
81# -----------------------------------------------------------------------------
82#  Perfiles de compilacion. Cargo exige que los perfiles vivan en la RAIZ del
83#  espacio de trabajo. `panic = "abort"` es obligatorio: sin sistema operativo
84#  subyacente no hay desenrollado de pila (`unwinding`) posible.
85# -----------------------------------------------------------------------------
86[profile.dev]
87panic = "abort"
88# En bare-metal, las verificaciones UB de la stdlib —el `precondition_check`
89# de `unchecked_mul`, p.ej.— inyectan un panico cuyo propio camino de
90# propagacion termina escribiendo en regiones que el cargador no mapeo: un
91# colapso DENTRO de la red de seguridad del propio colapso, imposible de
92# diagnosticar. Desactivar las aserciones de depuracion y las comprobaciones
93# de overflow las elimina del binario sin cambiar la semantica del codigo
94# correcto. Es practica habitual de los kernels y el de renaser no es excepcion.
95debug-assertions = false
96overflow-checks = false
97
98[profile.release]
99panic = "abort"
100opt-level = "s"   # codigo compacto: cada byte cuenta en bare-metal
101lto = true        # el optimizador cruza fronteras de crate
102codegen-units = 1 # una sola unidad => maxima oportunidad de optimizacion