Sobre o projeto
LAMINARIA (Rust Nim Unified Toolchain) é um projeto de pesquisa e desenvolvimento que explora um modelo computacional e toolchain unificados para Rust e Nim. Em vez de tratar Cargo, rustc, Nimble, Nim, LLVM, LTO, linkers e ferramentas de WebAssembly como comandos opacos colados por um script de build externo, ele decompõe o caminho da fonte ao executável em um grafo de ação explícito:
Source Graph → Compiler Pipeline → Unified Program Graph → Variant / Artifact Graph → Backend Pipeline Graph → Action Graph → Nim Planning Kernel → Rust Runtime Scheduler
O projeto estuda estágios do compilador Rust, como HIR, MIR, monomorfização, unidades de codegen, rustc_codegen_ssa, backends LLVM, Cranelift e GCC, LTO, geração de objetos e linking, juntamente com o frontend do Nim, processamento semântico, geração de código de backend, compilação nativa e linking. O LLVM é tratado como uma rota de geração de código selecionável entre várias, em vez de ser a fundação fixa, e o WebAssembly é modelado como um pipeline de destino (geração de código, wasm-ld, otimização pós-link, WIT/adapters, componentização) em vez de um valor de backend.
A versão do compilador é tratada como uma dimensão de grafo de primeira classe. O design visa suportar múltiplos toolchains exatos de Rust, além de Nim 2 e Nim 3/Nimony, resolvendo restrições de pacotes e workspaces para um toolchain selecionado, enquanto preserva a identidade do compilador produtor em decisões de execução, ação, artefato, cache e compatibilidade. Como o espaço de variantes internas pode ser grande, o projeto enfatiza Perfis de Toolchain Validados baseados em evidências, como recomendado, validado-mais-recente, longo-prazo e preview, com aliases de perfil resolvendo para revisões de bundles imutáveis, além de presets de intenção e restrições de grafo de especialistas.
A usabilidade da ferramenta é, por si só, um objetivo do projeto: o caminho normal pretendido é a resolução de restrições e a poda primeiro, seguida por um pequeno conjunto ranqueado de planos viáveis baseados em evidências e, então, a execução, com incompatibilidades conhecidas mantidas como conhecimento negativo estruturado para que falhas equivalentes não precisem ser redescobertas. A exploração ampla por força bruta deve permanecer como um modo de pesquisa explícito, e não como a experiência padrão.
Arquiteturalmente, a divisão é por responsabilidade e não por linguagem: um Nim Planning Kernel lida com a normalização do grafo, resolução de restrições, resolução combinatória, propagação de demanda de artefatos, poda e análise de caminho crítico, enquanto um Rust Runtime Scheduler lida com a CLI, descoberta de toolchain, interação com o SO, execução de processos, contabilização de recursos, cache/CAS, serviços de daemon, medição, rastreamento e agendamento.
O que existe no repositório hoje é a camada de identidade de ambiente e toolchain. Um lock de multi-toolchain pertencente ao repositório (toolchains.lock.toml) é resolvido por um comando doctor em registros exatos de EnvironmentFingerprint e ToolchainFingerprint:
scripts/bootstrap.sh reporta ferramentas ausentes em relação ao arquivo de lock; --install também as instala (macOS/Homebrew mais rustup). O script de bootstrap prefere fontes exatas, que não sejam de gerenciadores de pacotes do sistema, onde disponíveis (toolchains rustup com llvm-tools, choosenim para versões exatas de Nim, cargo install --version para ferramentas CLI puras em Rust), recorrendo a um gerenciador de pacotes do sistema apenas para ferramentas sem tal alternativa, como clang/llvm-config e wasm-opt do Binaryen.
cargo run -p laminaria-cli -- doctor imprime um relatório de ambiente legível por humanos, e --json emite as fingerprints legíveis por máquina. Um docker/bootstrap.Dockerfile executa a mesma stack em um container para verificações de bootstrap reproduzíveis; conforme a documentação de medição, isso serve apenas para reprodução de correção, e o doctor registra environment_class = "container" para que execuções em container não sejam comparadas silenciosamente com baselines nativas.
A documentação é fornecida em inglês e japonês, cobrindo UX de toolchain orientada a agentes e planejamento delimitado, perfis de toolchain validados e configuração progressiva, política de toolchain multi-versão Rust/Nim, a fundação de medição e estratégia de ambiente/rastreamento, white-boxing de pipeline de backend, fundações de pesquisa, o programa de pesquisa e política de evidências, linking nativo Rust–Nim, a política de pesquisa focada em métricas, um plano de issues e uma proposta de projeto.
O licenciamento é duplo: Apache License 2.0 ou MIT, a critério do usuário, com componentes de terceiros permanecendo sob suas próprias licenças. O README apresenta o trabalho como um programa de pesquisa que estabelece uma espinha dorsal de medição antes da otimização, portanto, as reivindicações de capacidade aqui refletem a intenção do design e as ferramentas de identidade de ambiente atualmente commitadas, e não o desempenho de build verificado.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.