这个项目能做什么
LAMINARIA(Rust Nim 统一工具链)是一项探索 Rust 和 Nim 统一计算模型和工具链的研究开发项目。它不将 Cargo、rustc、Nimble、Nim、LLVM、LTO、链接器和 WebAssembly 工具视为由外部构建脚本粘合的晦涩命令,而是将源代码到可执行文件的整个路径分解为显式的动作图:
源代码图 → 编译器管线 → 统一程序图 → 变体/制品图 → 后端管线图 → 动作图 → Nim 规划内核 → Rust 运行时调度器
该项目研究 Rust 编译器各阶段,如 HIR、MIR、泛型特化、代码生成单元、rustc_codegen_ssa、LLVM、Cranelift 和 GCC 后端、LTO、对象生成和链接,同时涵盖 Nim 前端、语义处理、后端代码生成、原生编译和链接。LLVM 被视为多种可选代码生成路径之一而非固定基础,WebAssembly 被建模为目标管线(代码生成、wasm-ld、链接后优化、WIT/适配器、组件化)而非后端值。
编译器版本被作为一等图维度处理。设计旨在支持多个精确 Rust 工具链及 Nim 2 和 Nim 3/Nimony,将包和工作区约束解析到选定工具链,同时在运行、动作、制品、缓存和兼容性决策中保留产生的编译器标识。由于内部变体空间可能很大,该项目强调有证据支持的验证工具链配置档案,如推荐、最新验证、长期和预览,配置档案别名解析为不可变的精确捆绑修订版,并辅以意图预设和专家图约束。
工具可用性本身即是项目目标:预期正常路径是先进行约束解析和剪枝,然后呈现少量有证据支持的可行计划,再执行,已知不兼容性以结构化负知识形式保留,避免等效失败被反复发现。广泛的暴力探索被视为显式研究模式而非默认体验。
在架构上,按职责而非语言划分:Nim 规划内核处理图归一化、约束求解、组合解析、制品需求传播、剪枝和关键路径分析;Rust 运行时调度器处理 CLI、工具链发现、OS 交互、进程执行、资源记账、缓存/CAS、守护服务、测量和追踪以及调度。
当前仓库中存在的是环境和工具链身份层。仓库拥有的多工具链锁文件(toolchains.lock.toml)由 doctor 命令解析为精确的 EnvironmentFingerprint 和 ToolchainFingerprint 记录:
scripts/bootstrap.sh 报告锁文件中缺失的工具;--install 选项也会安装它们(macOS/Homebrew 及 rustup)。引导脚本优先使用精确的、非系统包管理器的来源(带 llvm-tools 的 rustup 工具链、choosenim 获取精确 Nim 版本、cargo install --version 用于纯 Rust CLI 工具),仅在缺乏替代方案时回退到系统包管理器,如 clang/llvm-config 和 Binaryen 的 wasm-opt。
cargo run -p laminaria-cli -- doctor 输出人类可读的环境报告,--json 输出机器可读的指纹。docker/bootstrap.Dockerfile 在容器中运行相同栈以进行可复现的引导检查;据测量文档说明,这仅用于正确性复现,doctor 会记录 environment_class = "container",以避免容器运行与原生基线被静默比较。
文档提供英文和日文版本,涵盖面向代理的工具链 UX 和有界规划、验证工具链配置档案与渐进式配置、多版本 Rust/Nim 工具链策略、测量基础与环境/追踪策略、后端管线上白盒化、研究基础、研究项目与证据策略、Rust–Nim 原生链接、指标优先研究策略、问题计划与项目提案。
许可为双重:用户可选择 Apache License 2.0 或 MIT,第三方组件保留其原有许可。README 将此工作呈现为在优化之前建立度量骨架的研究项目,因此此处的能力声明反映设计意图和当前已提交的环境身份工具,而非已验证的构建性能。
评论
0 评分人数达到10人后显示
登录后参与讨论。