Phase 22.1 WIP: SSOT resolver + TLV infrastructure + Hako MIR builder setup
Setup infrastructure for Phase 22.1 (TLV C shim & Resolver SSOT):
Core changes:
- Add nyash_tlv, nyash_c_core, nyash_kernel_min_c crates (opt-in)
- Implement SSOT resolver bridge (src/using/ssot_bridge.rs)
- Add HAKO_USING_SSOT=1 / HAKO_USING_SSOT_HAKO=1 env support
- Add HAKO_TLV_SHIM=1 infrastructure (requires --features tlv-shim)
MIR builder improvements:
- Fix using/alias consistency in Hako MIR builder
- Add hako.mir.builder.internal.{prog_scan,pattern_util} to nyash.toml
- Normalize LLVM extern calls: nyash.console.* → nyash_console_*
Smoke tests:
- Add phase2211 tests (using_ssot_hako_parity_canary_vm.sh)
- Add phase2220, phase2230, phase2231 test structure
- Add phase2100 S3 backend selector tests
- Improve test_runner.sh with quiet/timeout controls
Documentation:
- Add docs/ENV_VARS.md (Phase 22.1 env vars reference)
- Add docs/development/runtime/C_CORE_ABI.md
- Update de-rust-roadmap.md with Phase 22.x details
Tools:
- Add tools/hakorune_emit_mir.sh (Hako-first MIR emission wrapper)
- Add tools/tlv_roundtrip_smoke.sh placeholder
- Improve ny_mir_builder.sh with better backend selection
Known issues (to be fixed):
- Parser infinite loop in static method parameter parsing
- Stage-B output contamination with "RC: 0" (needs NYASH_JSON_ONLY=1)
- phase2211/using_ssot_hako_parity_canary_vm.sh fork bomb (needs recursion guard)
Next steps: Fix parser infinite loop + Stage-B quiet mode for green tests
This commit is contained in:
100
CURRENT_TASK.md
100
CURRENT_TASK.md
@ -20,12 +20,84 @@ Update (today)
|
||||
- String API: size() を length() のエイリアスとして VM で受理
|
||||
- Analyzer CLI: --format/--debug/--source-file を順不同で処理
|
||||
- Analyzer IR: AST 空時の methods をテキスト走査でフォールバック
|
||||
- HC021/HC031: 実装完了。PHI 調査は一旦収束(AST path は既定OFF、`--force-ast` でオン)。
|
||||
- CLI: `--rules`/`--skip-rules` を追加し、ルール単体/組合せ検証を高速化。`--no-ast` 既定化。
|
||||
- Runtime: `NYASH_SCRIPT_ARGS_HEX_JSON` を導入(HEX経由で改行・特殊文字を安全搬送)。
|
||||
- File I/O: FileBox provider 設計(SSOT + 薄いラッパ + 選択ポリシー)を文書化(docs/development/runtime/FILEBOX_PROVIDER.md)。
|
||||
- HC021/HC031: 実装完了。PHI 調査は一旦収束(AST path は既定OFF、`--force-ast` でオン)。
|
||||
- CLI: `--rules`/`--skip-rules` を追加し、ルール単体/組合せ検証を高速化。`--no-ast` 既定化。
|
||||
- Runtime: `NYASH_SCRIPT_ARGS_HEX_JSON` を導入(HEX経由で改行・特殊文字を安全搬送)。
|
||||
- File I/O: FileBox provider 設計(SSOT + 薄いラッパ + 選択ポリシー)を文書化(docs/development/runtime/FILEBOX_PROVIDER.md)。
|
||||
- ENV: `NYASH_FILEBOX_MODE=auto|core-ro|plugin-only` を追加(ENV_VARS.md)。Analyzer/CI は core‑ro 相当で運用。
|
||||
|
||||
Quick update — Green Conditions & Toggles(quick)
|
||||
- Green baseline(quick)
|
||||
- Builder: Hako registry/internal = ON(既定)。必要時のみ `=0` でOFF。
|
||||
- hv1 inline PRIMARY = ON(直列も緑)。必要時のみ `HAKO_PHASE2100_ENABLE_HV1=0`。
|
||||
- S3 reps: 任意(`NYASH_LLVM_S3=1` かつ LLVM18 環境時)。未満は自動SKIP。
|
||||
- EXE‑first: 任意(`SMOKES_ENABLE_SELFHOST=1`)。重いのでデフォルトOFF。
|
||||
- TLV smoke: 常時(nyash-tlv のみを -p でビルド/テスト)。本体未配線でも安全。
|
||||
|
||||
Toggles quicklist
|
||||
- Builder: `HAKO_MIR_BUILDER_INTERNAL=0/1`(既定=1), `HAKO_MIR_BUILDER_REGISTRY=0/1`(既定=1)
|
||||
- hv1: `HAKO_PHASE2100_ENABLE_HV1=0/1`(既定=1)
|
||||
- S3: `NYASH_LLVM_S3=0/1`(既定=auto; LLVM18検出でON)
|
||||
- EXE‑first: `SMOKES_ENABLE_SELFHOST=1`(既定OFF)
|
||||
- TLV: `--features tlv-shim` + `HAKO_TLV_SHIM=1`(既定OFF/配線は無害な identity)
|
||||
- Using SSOT: `HAKO_USING_SSOT=1`(MVP は現行解決ロジックを経由しつつタグ出力)
|
||||
|
||||
22.1 progress (today)
|
||||
- TLV配線(最小導線・既定OFF)
|
||||
- 追加: ルート `Cargo.toml` に `nyash-tlv`(optional)と feature `tlv-shim`
|
||||
- 追加: `src/runtime/plugin_ffi_common.rs` に `maybe_tlv_roundtrip()` を実装し、`encode_args()` の末尾で呼び出し(ENV `HAKO_TLV_SHIM=1` かつ feature 有効時のみ動作)
|
||||
- スモーク: `tools/tlv_roundtrip_smoke.sh` を SKIP→常時 PASS に変更(`-p nyash-tlv` 固定)
|
||||
- Resolver/Using SSOT(薄い導線・トグル)
|
||||
- 追加: `HAKO_USING_SSOT=1` 時に SSOT ブリッジを呼び出し(modules のみを ctx として渡す)。未解決時は既存ロジックにフォールバック
|
||||
- ctx: `{ modules, using_paths, cwd }`(MVPは modules のみ有効)
|
||||
- トレース: `NYASH_RESOLVE_TRACE=1` で `[using/ssot]` タグを出力
|
||||
- スモーク: `tools/smokes/v2/profiles/quick/core/phase2211/using_ssot_parity_canary_vm.sh` を追加(ON/OFF で出力同一を検証)
|
||||
|
||||
22.1 next (follow‑up tasks)
|
||||
- SSOT ctx 拡張(段階導入・既定不変)
|
||||
- [ ] Bridge→Hako 箱で `using_paths`/`cwd` を活用した相対推定のMVP(IOはRunner側で制御)。
|
||||
- [ ] Runner 側の ctx 渡しを拡張し、パス推定に必要な情報(呼出元ディレクトリ、プロファイル)を追加。
|
||||
- 受け入れ: パリティcanary(modules命名あり)維持 + 代表ケースで `using_paths` 提示時に解決成功(既定OFF/トグルONのみ)。
|
||||
- TLV shim 観測タグ(既定OFF・安全)
|
||||
- [x] `HAKO_TLV_SHIM_TRACE=1` で shim 経由のコールに `[tlv/shim:<Box>.<method>]` を出力(既定は `MapBox.set` のみ)。
|
||||
- [x] `HAKO_TLV_SHIM_FILTER=MapBox.set` などで対象コールを限定(カンマ区切り可)。
|
||||
- 受け入れ: canary で `MapBox.set` の単発コール時にタグが現れる(feature有効+ENV時)、既定OFFではログ増加なし。
|
||||
|
||||
22.1 exit (criteria)
|
||||
- SSOT(relative 推定の仕上げ)
|
||||
- Unique: `phase2211/ssot_relative_unique_canary_vm.sh` が常時 PASS(cwd 優先、短時間で終了)。
|
||||
- Ambiguous+strict: `phase2211/ssot_relative_ambiguous_strict_canary_vm.sh` が PASS(strict=1 時は legacy 委譲)。
|
||||
- Recursion guard: `HAKO_USING_SSOT_HAKO=1` を含む実行でも無限再帰は発生しない(子プロセスへ SSOT を強制OFF+INVOKING=1)。
|
||||
- TLV/Extern(観測統合)
|
||||
- `HAKO_CALL_TRACE=1` で plugin/extern 双方に `[call:<target>.<method>]` が観測可能。
|
||||
- `HAKO_CALL_TRACE_FILTER` で method 名/`<target>.<method>` の双方が機能(例: `MapBox.set,env.console.log`)。
|
||||
- 既定挙動は不変(新機能はすべてトグルOFFで無影響)。
|
||||
|
||||
22.2 progress (today) — Core Thinning I
|
||||
- Docs/plan: docs/private/roadmap/phases/phase-22.2/PLAN.md(T0/T1/T2・ABI契約・受け入れ規準)
|
||||
- C-core crate(設計): crates/nyash_c_core(feature c-core=OFF 既定)
|
||||
- 導線(既定OFF): cwrap/c-core タグ&ENV。対象は MapBox.set / ArrayBox.push / ArrayBox.get / ArrayBox.size(len/length)。
|
||||
- Parity canaries(ON/OFF 完全一致):
|
||||
- phase2220/c_core_map_set_parity_canary_vm.sh → PASS
|
||||
- phase2220/c_core_array_push_parity_canary_vm.sh → PASS
|
||||
- phase2220/c_core_array_len_length_parity_canary_vm.sh → PASS
|
||||
- Exit(22.2): 既定OFFで挙動不変/ON/OFF parityが緑/失敗時フォールバック(Rust経路)
|
||||
|
||||
Next — Phase 22.3 (Kernel Minimal C Runtime)
|
||||
- Docs skeleton added: docs/private/roadmap/phases/phase-22.3/PLAN.md
|
||||
- No behavior change; future toggle: NYASH_KERNEL_C_MIN (reserved).
|
||||
- Crate present: `crates/nyash_kernel_min_c` (staticlib) with `nyash_console_log` and a few handle stubs.
|
||||
- Canary: `tools/smokes/v2/profiles/quick/core/phase2230/kernel_min_c_build_canary.sh` → PASS(ビルドのみ、未リンク)
|
||||
- Note: LLVM extern lowering maps `nyash.console.*` → `nyash_console_*` for C linkage (dots→underscores).
|
||||
|
||||
LLVM line (21.10 prework)
|
||||
- Added backend selector to tools/ny_mir_builder.sh via `NYASH_LLVM_BACKEND=llvmlite|crate|native` (default llvmlite).
|
||||
- Added crate path canaries:
|
||||
- obj (dummy): phase2100/s3_backend_selector_crate_obj_canary_vm.sh → PASS
|
||||
- exe (dummy): phase2100/s3_backend_selector_crate_exe_canary_vm.sh → PASS
|
||||
- exe (print): phase2100/s3_backend_selector_crate_exe_print_canary_vm.sh → SKIP(llvmlite未導入環境では自動SKIP/名称整合は済)
|
||||
- Extern lowering updated: `nyash.console.*` is emitted as `nyash_console_*` to match C symbols (`nyash-kernel-min-c`).
|
||||
|
||||
Roadmap links (21.5→21.7)
|
||||
- 21.5 — Unicode & Provider Polish(現行計画): docs/private/roadmap/phases/phase-21.5/PLAN.md
|
||||
- 21.6 — Hako MIR Builder MVP & Registry(opt‑in): docs/private/roadmap/phases/phase-21.6/PLAN.md
|
||||
@ -76,6 +148,26 @@ Phase 21.8 — Hako Check: Refactor & QuickFix(MVP)
|
||||
- --fix-plan で refactor_plan.json と sed 雛形(apply_script)を出力(手動レビュー想定)。
|
||||
- 既定挙動は不変。適用は別フェーズ(write-capable provider)で検討。
|
||||
|
||||
Phase 21.9 — De‑Rust(Non‑Plugin)Checklist
|
||||
- [x] Docs: Roadmap – docs/development/strategies/de-rust-roadmap.md(原則/ゲート/リバータブル)
|
||||
- [x] Docs: Gap Analysis – docs/development/strategies/de-rust-gap-analysis.md(Phase1/2の具体)
|
||||
- [x] Script: Phase‑0 archive helper – tools/de_rust/archive_rust_llvm_backend.sh(RESTORE.md 自動生成)
|
||||
- [x] Phase‑0: Rust LLVM backend を archive/ へ移動(既定ビルド影響なし・リバータブル)
|
||||
- [ ] hv1_inline opt‑out トグル(HAKO_VERIFY_DISABLE_INLINE=1)追加(任意)
|
||||
- [ ] TLV C shim(FFI)雛形+往復テスト(最小)
|
||||
- [ ] MIR Interpreter の診断化(Primary=Hakovm を確認、envで明示切替)
|
||||
- [ ] Resolver/Using SSOT ドキュメントを運用ガイド化(Runner/Analyzer 一致)
|
||||
- [x] LLVM harness: object 出力(tmp/nyash_llvm_run.o)確認
|
||||
- [ ] LLVM link: NyRT 静的ライブラリ(crates/nyash_kernel)ビルド → EXE リンクの確認
|
||||
|
||||
CI Integration(end of phase)
|
||||
- [ ] Add optional CI job: selfhost EXE-first smoke
|
||||
- Steps: install LLVM18; prebuild nyash(llvm)/ny-llvmc/nyash_kernel; run `tools/exe_first_smoke.sh` and `tools/exe_first_runner_smoke.sh`.
|
||||
- Policy: non-blocking initially(`continue-on-error` or separate optional workflow); promote later when stable.
|
||||
- [ ] Fix legacy CI workflow bug(old workflow failing)
|
||||
- Audit existing `.github/workflows/*` for broken steps/env; update to use `hakorune` binary and new env toggles.
|
||||
- Ensure LLVM/S3 gates respect environment (skip when LLVM18 absent).
|
||||
|
||||
Remaining (21.4)
|
||||
1) Hako Parser MVP 実装(tokenizer/parser_core/ast_emit/cli)【微修整】
|
||||
2) Analyzer AST 入力の安定化(必要時のみ AST を使用)
|
||||
|
||||
Reference in New Issue
Block a user