프로젝트 소개

LAMINARIA (Rust Nim Unified Toolchain)는 Rust와 Nim을 위한 통합 계산 모델 및 툴체인을 탐구하는 연구·개발 프로젝트입니다. Cargo, rustc, Nimble, Nim, LLVM, LTO, 링커 및 WebAssembly 도구들을 외부 빌드 스크립트가 결합한 불투명한 명령으로 다루는 대신, 소스에서 실행 파일까지의 경로를 명시적인 액션 그래프로 분해합니다: Source Graph → Compiler Pipeline → Unified Program Graph → Variant / Artifact Graph → Backend Pipeline Graph → Action Graph → Nim Planning Kernel → Rust Runtime Scheduler 이 프로젝트는 HIR, MIR, 모노모르피제이션, 코드젠 유닛, rustc_codegen_ssa, LLVM, Cranelift 및 GCC 백엔드, LTO, 객체 생성 및 링킹 등 Rust 컴파일러 단계들을 Nim 프론트엔드, 의미 분석, 백엔드 코드 생성, 네이티브 컴파일 및 링킹과 함께 연구합니다. LLVM은 고정된 기반이 아니라 여러 선택 가능한 코드 생성 경로 중 하나로 취급되며, WebAssembly는 백엔드 값이 아니라 목표 파이프라인(코드 생성, wasm-ld, 포스트링크 최적화, WIT/어댑터, 컴포넌트화)으로 모델링됩니다. 컴파일러 버전은 1급 그래프 차원으로 다루어집니다. 설계는 정확한 여러 Rust 툴체인과 Nim 2, Nim 3/Nimony를 지원하도록 목표하며, 패키지 및 워크스페이스 제약을 선택된 툴체인에 해결하면서 실행, 액션, 아티팩트, 캐시 및 호환성 결정에 생산 컴파일러의 정체성을 유지합니다. 내부 변형 공간이 클 수 있기 때문에, 프로젝트는 권장, 최신 검증, 장기, 프리뷰와 같은 증거 기반 검증된 툴체인 프로파일을 강조하고, 프로파일 별칭은 불변의 정확한 번들 리비전으로 해석되며, 의도 프리셋 및 전문가 그래프 제약도 포함합니다. 툴 사용성 자체가 프로젝트 목표로 명시됩니다: 일반적인 흐름은 먼저 제약 해결 및 가지치기를 수행하고, 그 다음 증거 기반의 실행 가능한 소수의 순위화된 플랜을 제시한 뒤 실행합니다. 알려진 호환성 문제는 구조화된 부정 지식으로 유지되어 동일한 실패를 재발견할 필요가 없습니다. 광범위한 무차별 탐색은 기본 경험이 아니라 명시적인 연구 모드로 남겨집니다. 아키텍처적으로 분할은 언어가 아니라 책임에 따라 이루어집니다. Nim Planning Kernel은 그래프 정규화, 제약 해결, 조합적 해결, 아티팩트 수요 전파, 가지치기 및 임계 경로 분석을 담당하고, Rust Runtime Scheduler는 CLI, 툴체인 탐색, OS 상호작용, 프로세스 실행, 자원 회계, 캐시/CAS, 데몬 서비스, 측정 및 추적, 스케줄링을 담당합니다. 현재 저장소에 존재하는 것은 환경 및 툴체인 정체성 레이어입니다. 저장소가 소유한 다중 툴체인 락(toolchains.lock.toml)은 doctor 명령에 의해 정확한 EnvironmentFingerprint와 ToolchainFingerprint 레코드로 해석됩니다: scripts/bootstrap.sh는 락 파일에 대비해 누락된 도구를 보고하고, --install 옵션을 사용하면 이를 설치합니다(macOS/Homebrew와 rustup). 부트스트랩 스크립트는 가능한 경우 정확한 비시스템 패키지 매니저 소스를 선호합니다(rustup 툴체인에 llvm-tools 포함, 정확한 Nim 버전을 위한 choosenim, 순수 Rust CLI 도구를 위한 cargo install --version). 대안이 없는 도구, 예를 들어 clang/llvm-config 및 Binaryen의 wasm-opt와 같은 경우에만 시스템 패키지 매니저를 사용합니다. cargo run -p laminaria-cli -- doctor는 사람이 읽을 수 있는 환경 보고서를 출력하고, --json은 기계가 읽을 수 있는 fingerprint를 내보냅니다. docker/bootstrap.Dockerfile은 동일한 스택을 컨테이너에서 실행하여 재현 가능한 부트스트랩 검사를 수행합니다; 측정 문서에 따르면 이는 정확성 재현을 위한 것이며, doctor는 environment_class = "container"를 기록하여 컨테이너 실행이 네이티브 기준과 조용히 비교되지 않도록 합니다. 문서는 영어와 일본어로 제공되며, 에이전트 지향 툴체인 UX와 제한된 계획, 검증된 툴체인 프로파일 및 점진적 구성, 다중 버전 Rust/Nim 툴체인 정책, 측정 기반 및 환경/추적 전략, 백엔드 파이프라인 화이트박싱, 연구 기반, 연구 프로그램 및 증거 정책, Rust–Nim 네이티브 링크, 메트릭 우선 연구 정책, 이슈 계획 및 프로젝트 제안을 다룹니다. 라이선스는 Apache License 2.0 또는 MIT 중 사용자가 선택할 수 있는 이중 라이선스이며, 제3자 구성 요소는 각각의 라이선스를 유지합니다. README는 이 작업을 최적화 이전에 측정 골격을 구축하는 연구 프로그램으로 제시하며, 따라서 여기서의 기능 주장은 설계 의도와 현재 커밋된 환경 정체성 도구를 반영할 뿐, 검증된 빌드 성능을 의미하지 않습니다.