About this project

LAMINARIA (Rust Nim Unified Toolchain) is a research and development project exploring a unified computational model and toolchain for Rust and Nim. Rather than treating Cargo, rustc, Nimble, Nim, LLVM, LTO, linkers and WebAssembly tooling as opaque commands glued together by an outer build script, it decomposes the path from source to executable into an explicit action graph: Source Graph → Compiler Pipeline → Unified Program Graph → Variant / Artifact Graph → Backend Pipeline Graph → Action Graph → Nim Planning Kernel → Rust Runtime Scheduler The project studies Rust compiler stages such as HIR, MIR, monomorphization, codegen units, rustc_codegen_ssa, LLVM, Cranelift and GCC backends, LTO, object generation and linking alongside the Nim frontend, semantic processing, backend code generation, native compilation and linking. LLVM is treated as one selectable code-generation route among several rather than as the fixed foundation, and WebAssembly is modeled as a target pipeline (code generation, wasm-ld, post-link optimization, WIT/adapters, componentization) rather than a backend value. Compiler version is handled as a first-class graph dimension. The design aims to support multiple exact Rust toolchains plus Nim 2 and Nim 3/Nimony, resolving package and workspace constraints to a selected toolchain while preserving the producing compiler identity in run, action, artifact, cache and compatibility decisions. Because the internal variant space can be large, the project emphasizes evidence-backed Validated Toolchain Profiles such as recommended, latest-validated, long-term and preview, with profile aliases resolving to immutable exact bundle revisions, plus intent presets and expert graph constraints. Tool usability is itself stated as a project objective: the intended normal path is constraint resolution and pruning first, followed by a small ranked set of evidence-backed viable plans and then execution, with known incompatibilities kept as structured negative knowledge so equivalent failures need not be rediscovered. Broad brute-force exploration is meant to remain an explicit research mode rather than the default experience. Architecturally the split is by responsibility rather than language: a Nim Planning Kernel handles graph normalization, constraint solving, combinatorial resolution, artifact-demand propagation, pruning and critical-path analysis, while a Rust Runtime Scheduler handles the CLI, toolchain discovery, OS interaction, process execution, resource accounting, cache/CAS, daemon services, measurement and tracing, and scheduling. What exists in the repository today is the environment and toolchain identity layer. A repository-owned multi-toolchain lock (toolchains.lock.toml) is resolved by a doctor command into exact EnvironmentFingerprint and ToolchainFingerprint records: scripts/bootstrap.sh reports missing tools against the lock file; --install also installs them (macOS/Homebrew plus rustup). The bootstrap script prefers exact, non-system-package-manager sources where available (rustup toolchains with llvm-tools, choosenim for exact Nim versions, cargo install --version for pure-Rust CLI tools), falling back to a system package manager only for tools without such an alternative, such as clang/llvm-config and Binaryen's wasm-opt. cargo run -p laminaria-cli -- doctor prints a human-readable environment report, and --json emits the machine-readable fingerprints. A docker/bootstrap.Dockerfile runs the same stack in a container for reproducible bootstrap checks; per the measurement documentation this is for correctness reproduction only, and doctor records environment_class = "container" so container runs are not silently compared with native baselines. Documentation is provided in both English and Japanese, covering agent-oriented toolchain UX and bounded planning, validated toolchain profiles and progressive configuration, multi-version Rust/Nim toolchain policy, the measurement foundation and environment/trace strategy, backend pipeline white-boxing, research foundations, the research program and evidence policy, Rust–Nim native linking, the metrics-first research policy, an issue plan and a project proposal. Licensing is dual: Apache License 2.0 or MIT, at the user's option, with third-party components remaining under their own licenses. The README presents the work as a research program establishing a measurement spine before optimization, so capability claims here reflect design intent and the currently committed environment-identity tooling rather than verified build performance.