2025-12-25 14:01:32 +09:00
|
|
|
|
# Phase 288: REPL mode (design-first, file-mode unaffected)
|
|
|
|
|
|
|
|
|
|
|
|
Status: ✅ P0–P3 complete (2025-12-25) / ⏳ 288.1 next
|
|
|
|
|
|
|
|
|
|
|
|
Goal: Add an interactive REPL for Nyash while keeping file mode semantics unchanged and keeping the language SSOT stable.
|
|
|
|
|
|
|
|
|
|
|
|
SSOT:
|
|
|
|
|
|
- REPL spec: `docs/reference/language/repl.md`
|
|
|
|
|
|
|
|
|
|
|
|
## Scope
|
|
|
|
|
|
|
|
|
|
|
|
- CLI entry: `hakorune --repl` / `-i`
|
|
|
|
|
|
- REPL commands: `.help`, `.exit/.quit`, `.reset`
|
|
|
|
|
|
- Fail-Fast: undefined reads are errors
|
|
|
|
|
|
- File mode: no behavior changes (quick smokes remain green)
|
|
|
|
|
|
|
|
|
|
|
|
## Completed (P0–P3)
|
|
|
|
|
|
|
2025-12-25 14:21:22 +09:00
|
|
|
|
- ✅ **P0 (docs)**: REPL SSOT 確立 — file mode vs REPL mode 意味論、VMValue 永続化方針 (`docs/reference/language/repl.md` 336行)
|
|
|
|
|
|
- ✅ **P1 (CLI)**: `--repl` / `-i` 起動、.help/.exit/.reset コマンド、REPL ループ実装
|
|
|
|
|
|
- ✅ **P2 (state)**: `ReplSessionBox` (VMValue ベース) 実装、暗黙 local 許可(file mode 不変、ValueId 永続化回避)
|
|
|
|
|
|
- ✅ **P3 (UX)**: print() 出力表示、Main box wrapper(VM entry point 修正)、.reset 実装
|
|
|
|
|
|
- ✅ **Box化**: `src/runner/repl/` モジュール分離(ReplRunnerBox)、runner/mod.rs -118行 (commit: 3445ef7a7)
|
2025-12-25 14:01:32 +09:00
|
|
|
|
|
|
|
|
|
|
## Next (Phase 288.1)
|
|
|
|
|
|
|
|
|
|
|
|
The MVP intentionally deferred these:
|
|
|
|
|
|
|
|
|
|
|
|
- Session variable **persistence across lines** (bridge session → compilation/runtime)
|
|
|
|
|
|
- Expression auto-display + `_` last-value binding
|
|
|
|
|
|
- Multi-line input handling (continuations)
|
|
|
|
|
|
|
|
|
|
|
|
Entry: `docs/development/current/main/phases/phase-288/P1-INSTRUCTIONS.md`
|