Sobre el proyecto

LAMINARIA (Rust Nim Unified Toolchain) es un proyecto de investigación y desarrollo que explora un modelo computacional y una cadena de herramientas unificada para Rust y Nim. En lugar de tratar a Cargo, rustc, Nimble, Nim, LLVM, LTO, los enlazadores y las herramientas de WebAssembly como comandos opacos unidos por un script de compilación externo, descompone el camino desde el código fuente hasta el ejecutable en un grafo de acciones explícito: Grafo de Fuente → Canalización del Compilador → Grafo de Programa Unificado → Grafo de Variantes / Artefactos → Grafo de Canalización de Backend → Grafo de Acciones → Núcleo de Planificación de Nim → Planificador de Tiempo de Ejecución de Rust El proyecto estudia las etapas del compilador de Rust como HIR, MIR, monomorfización, unidades de codegen, rustc_codegen_ssa, backends de LLVM, Cranelift y GCC, LTO, generación de objetos y enlace, junto con el frontend de Nim, el procesamiento semántico, la generación de código de backend, la compilación nativa y el enlace. LLVM se trata como una ruta de generación de código seleccionable entre varias, en lugar de como la base fija, y WebAssembly se modela como una canalización de destino (generación de código, wasm-ld, optimización post-enlace, WIT/adaptadores, componentización) en lugar de un valor de backend. La versión del compilador se maneja como una dimensión de primer nivel del grafo. El diseño tiene como objetivo soportar múltiples cadenas de herramientas exactas de Rust además de Nim 2 y Nim 3/Nimony, resolviendo las restricciones de paquetes y espacios de trabajo a una cadena de herramientas seleccionada, mientras se preserva la identidad del compilador productor en las decisiones de ejecución, acción, artefacto, caché y compatibilidad. Debido a que el espacio de variantes interno puede ser amplio, el proyecto enfatiza los Perfiles de Cadena de Herramientas Validados respaldados por evidencia, tales como recomendado, validado más reciente, a largo plazo y vista previa, con alias de perfil que resuelven a revisiones de paquetes inmutables y exactas, además de ajustes preestablecidos de intención y restricciones de grafo para expertos. La usabilidad de la herramienta es, en sí misma, un objetivo del proyecto: la ruta normal prevista es primero la resolución y poda de restricciones, seguida de un conjunto pequeño y clasificado de planes viables respaldados por evidencia y luego la ejecución, manteniendo las incompatibilidades conocidas como conocimiento negativo estructurado para que no sea necesario redescubrir fallos equivalentes. La exploración amplia por fuerza bruta está destinada a permanecer como un modo de investigación explícito en lugar de ser la experiencia predeterminada. Arquitectónicamente, la división es por responsabilidad y no por lenguaje: un Núcleo de Planificación de Nim maneja la normalización del grafo, la resolución de restricciones, la resolución combinatoria, la propagación de demanda de artefactos, la poda y el análisis de ruta crítica, mientras que un Planificador de Tiempo de Ejecución de Rust maneja la CLI, el descubrimiento de la cadena de herramientas, la interacción con el SO, la ejecución de procesos, la contabilidad de recursos, el caché/CAS, los servicios de demonio, la medición y el rastreo, y la planificación. Lo que existe hoy en el repositorio es la capa de identidad de entorno y cadena de herramientas. Un bloqueo de multi-cadena de herramientas propiedad del repositorio (toolchains.lock.toml) es resuelto por un comando doctor en registros exactos de EnvironmentFingerprint y ToolchainFingerprint: scripts/bootstrap.sh informa sobre las herramientas faltantes comparándolas con el archivo de bloqueo; --install también las instala (macOS/Homebrew más rustup). El script de bootstrap prefiere fuentes exactas que no sean del gestor de paquetes del sistema cuando están disponibles (cadenas de herramientas de rustup con llvm-tools, choosenim para versiones exactas de Nim, cargo install --version para herramientas CLI de Rust puro), recurriendo a un gestor de paquetes del sistema solo para herramientas sin tal alternativa, como clang/llvm-config y wasm-opt de Binaryen. cargo run -p laminaria-cli -- doctor imprime un informe de entorno legible para humanos, y --json emite las huellas digitales legibles por máquina. Un docker/bootstrap.Dockerfile ejecuta la misma pila en un contenedor para comprobaciones de bootstrap reproducibles; según la documentación de medición, esto es solo para la reproducción de la corrección, y doctor registra environment_class = "container" para que las ejecuciones en contenedor no se comparen silenciosamente con las líneas base nativas. La documentación se proporciona tanto en inglés como en japonés, cubriendo la UX de la cadena de herramientas orientada al agente y la planificación acotada, perfiles de cadena de herramientas validados y configuración progresiva, política de cadenas de herramientas multi-versión de Rust/Nim, la base de medición y la estrategia de entorno/rastreo, la apertura de la canalización de backend, los fundamentos de investigación, el programa de investigación y la política de evidencia, el enlace nativo Rust–Nim, la política de investigación centrada en métricas, un plan de incidencias y una propuesta de proyecto. La licencia es dual: Apache License 2.0 o MIT, a opción del usuario, permaneciendo los componentes de terceros bajo sus propias licencias. El README presenta el trabajo como un programa de investigación que establece una columna vertebral de medición antes de la optimización, por lo que las afirmaciones de capacidad aquí reflejan la intención del diseño y las herramientas de identidad de entorno actualmente implementadas, en lugar de un rendimiento de compilación verificado.