Saltar al contenido

Arquitectura de Óxido

Arquitectura de Óxido

Enlace a esta sección

El contrato normativo está en ARCHITECTURE_RULES.md. Este documento resume los crates que ya existen y los límites que siguen preparados para fases posteriores.

La decisión de limitar el parser propio a estructura Óxido y preservar fragmentos Rust está registrada en ADR-0001.

Componente Responsabilidad Tipo de módulo
oxido-language Fuente/spans UTF-8, diagnósticos, lexer, AST estructural y parser de .ox Núcleo/dominio
oxido-compiler Casos de uso de parseo, generación, mapa, integración Cargo e importación reversible Aplicación
oxido-rust-backend Emitir Rust desde el AST con quote/proc_macro2; validar y formatear con Syn/prettyplease Adapter de salida
oxido-cli analizar-rust, exportar, importar, compilar y ejecutar Adapter de entrada
oxido-cargo Invocar Cargo por argv, limitar tiempo y leer mensajes JSON Adapter de proceso
oxido-lsp Protocolo de editor que reutiliza compiler Previsto para fase posterior
editors/vscode-oxido Integración y presentación en VS Code Cliente separado
website Portal estático Markdown con documentación por audiencia y referencia Frontend documental; Astro Starlight

El producto corre localmente como herramienta de desarrollo. Las APIs entre estos módulos son Rust tipado dentro del proceso. La comunicación distribuida, almacenamiento de negocio y telemetría remota no forman parte de esta arquitectura. La CLI exporta, compila y ejecuta la rebanada inicial de .ox; la compatibilidad general del lenguaje sigue pendiente.

Estado de los directorios

Enlace a esta sección

Fase 2 materializó cuatro paquetes base y Fase 5 incorporó oxido-cargo al workspace como adaptador funcional. Fase 3 añadió el lexer y Fase 4 el parser/AST inicial. website/ contiene el frontend documental en Astro Starlight; sus páginas de referencia se generan desde los Markdown canónicos en docs/ para evitar mantener dos copias editables. oxido-lsp y editors/ siguen preparados para sus fases; examples/hola_mundo.ox y tests/ contienen el primer flujo end-to-end. La separación no obliga a crear un crate por cada carpeta interna.