Phase 25.4-B: Stage-1 CLI 設定箱実装 ## 📦 実装内容 ### 1. Config 箱作成 - 新規: `Stage1CliConfigBox` (`lang/src/runner/stage1_cli.hako:16-48`) - `from_env()` メソッドで全環境変数を MapBox に集約 - Mode/Backend/Sources/Dev flags を構造化 ### 2. stage1_main リファクタ - `local cfg = Stage1CliConfigBox.from_env()` で設定取得 - `env.get` 散在 → `cfg.get` 一箇所参照に統一 - Mode-based dispatch (emit_program_json | emit_mir_json | run | disabled) ### 3. 環境変数マッピング **実行制御**: - `NYASH_USE_STAGE1_CLI` → mode="run" - `STAGE1_EMIT_PROGRAM_JSON` → mode="emit_program_json" - `STAGE1_EMIT_MIR_JSON` → mode="emit_mir_json" - `STAGE1_BACKEND` → backend (default: "vm") - `STAGE1_SOURCE` / `STAGE1_SOURCE_TEXT` / `STAGE1_PROGRAM_JSON` → sources **Dev専用**: - `STAGE1_CLI_DEBUG` → debug - `NYASH_TO_I64_FORCE_ZERO` → to_i64_force_zero ### 4. 設計文書 - 新規作成: `docs/development/roadmap/phases/phase-25.4-naming-cli-cleanup/README.md` - Config フィールド設計・環境変数マッピング完全文書化 ## 技術的成果 - **env.get 削減**: stage1_main 内 15箇所 → 1箇所(Config生成)に集約 - **Mode決定ロジック**: 排他的Mode選択を Config 箱に集中 - **保守性向上**: 環境変数追加時は Config 箱のみ修正 ## テスト結果 ✅ cargo test mir_stage1_cli_stage1_main_shape_verifies: 1 passed ✅ cargo test mir_stage1_cli_entry_like_pattern_verifies: 1 passed ✅ cargo test mir_static_box_naming: 2 passed ✅ Background stage1_cli execution: RC=0 ## 参考 - Phase 25.4-A:fa9cea51,bceb20ed,419214a5- Config 設計: docs/development/roadmap/phases/phase-25.4-naming-cli-cleanup/README.md 🎉 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Hakorune Lang Line — Rust-less Kernel (C ABI)
Scope
- This
lang/tree hosts the script-driven C ABI kernel artifacts for Phase 20.9+. - Goal: keep the runtime data plane callable without Rust on the hot path (Hakorune → LLVM → C ABI).
Principles
- Separation: do not mix Rust crates or cargo-specific layout under this tree.
- Ownership & ABI:
- Any
char*returned across the ABI is owned by the callee and must be freed viahako_mem_free(). - Do not mix CRT
free()across boundaries.
- Any
- Fail‑Fast: no silent fallbacks. Missing symbols must be observable via short diagnostics.
Layout (initial)
c-abi/— C shim(s) and headers for the minimal kernel surfaceREADME.md— responsibilities, build notes, platform caveatsinclude/— public headers (mirrored or thin wrappers)shims/— libc-backed shim(s) for canaries and local testing
Build & Link (dev)
- C shim: build a shared library to satisfy symbols for the LLVM line canaries.
- Link flags example:
- Linux:
-L$(pwd)/target/release -Wl,-rpath,$(pwd)/target/release -lhako_kernel_shim
- Linux:
Non‑Goals
- Plugin loader, HostBridge router, Box/Type system — kept in Rust.
Selfhost Launcher (AOT)
Dev line (Stage1 core – experimental)
- Dev build:
tools/selfhost/build_stage1.sh→ producestarget/selfhost/hakorune - Role:
- Fast iteration用の Stage1 selfhost バイナリ(Ny Executor / CLI 実験など)。
- new CLI/runner 機能はまずこちらで開発・検証する。
Stable line (lang bin – snapshot)
- Stable binary:
lang/bin/hakorune - Build (pure-lang launcher, legacy bring-up):
lang/build/build_runner.sh→ produceslang/bin/hakorune- Requirements: LLVM 18 dev (
llvm-config-18)
- Policy(Phase 25.1 以降の想定):
target/selfhost/hakoruneで十分に安定したら、その成果物をlang/bin/hakoruneに昇格させる(手動コピー or 専用スクリプト)。lang/bin/hakoruneは「last known good」の Stage1 コア EXE として扱い、配布や外部からの参照時は原則こちらを基準にする。
Notes
lang/以下は「最終的に 1 つの Stage1 コア EXE(hakorune)を構成するソース群」という前提で整理する。target/selfhost/hakoruneは開発中の最新版、lang/bin/hakoruneは安定版スナップショットという役割分担にする。