current_task: record using seam fixes, mini_vm_core brace fix, collect_prints harden; mark using-mixed smoke WIP with flags; note private branches main/selfhost
This commit is contained in:
@ -15,8 +15,8 @@ Updated: 2025‑09‑21
|
|||||||
- [x] Main.fast‑path: BinaryOp('+') を早期に 2 値抽出→加算→即 return
|
- [x] Main.fast‑path: BinaryOp('+') を早期に 2 値抽出→加算→即 return
|
||||||
- [x] PyVM: `__me__` ディスパッチ(同一Box内メソッド呼びの安全化)
|
- [x] PyVM: `__me__` ディスパッチ(同一Box内メソッド呼びの安全化)
|
||||||
- [x] PyVM: `String.substring` の None 引数を安全化(None→既定値)
|
- [x] PyVM: `String.substring` の None 引数を安全化(None→既定値)
|
||||||
- [ ] Mini‑VM 内の me 呼びを完全撤去(関数呼びに統一)/ substring 前の index ガード徹底
|
- [x] Mini‑VM 内の me 呼びを完全撤去(関数呼びに統一)/ substring 前の index ガード徹底
|
||||||
- [ ] 代表スモーク(int+int=46)を緑化(print_prints_in_slice の無限ループ回避を含む)
|
- [x] 代表スモーク(int+int=46)を緑化(print_prints_in_slice の無限ループ回避を含む)
|
||||||
- CI: keep min-gate light (MacroCtx/selfhost-preexpand/UTF‑8/ScopeBox) — all green
|
- CI: keep min-gate light (MacroCtx/selfhost-preexpand/UTF‑8/ScopeBox) — all green
|
||||||
|
|
||||||
This page is trimmed to reflect the active work only. The previous long form has been archived at `CURRENT_TASK_restored.md`.
|
This page is trimmed to reflect the active work only. The previous long form has been archived at `CURRENT_TASK_restored.md`.
|
||||||
@ -27,13 +27,28 @@ Principles (freeze)
|
|||||||
- Keep changes minimal/local; no spec changes unless to fix critical issues.
|
- Keep changes minimal/local; no spec changes unless to fix critical issues.
|
||||||
|
|
||||||
### Delta (since last update)
|
### Delta (since last update)
|
||||||
|
- Using inliner/seam (dev toggles default‑OFF)
|
||||||
|
- Resolver seam join normalized; optional brace safety valve added(strings/comments除外カウント)
|
||||||
|
- Python combiner(optional hook): `tools/using_combine.py` を追加(--fix-braces/--seam-debug など)
|
||||||
|
- mini_vm_core の末尾ブレースを整合(未閉じ/余剰の解消)
|
||||||
|
- MiniVm.collect_prints の未知形スキップを Print オブジェクト全体に拡張(停滞防止)
|
||||||
- Docs
|
- Docs
|
||||||
- Added strings blueprint: `docs/blueprints/strings-utf8-byte.md`
|
- Added strings blueprint: `docs/blueprints/strings-utf8-byte.md`
|
||||||
- Refreshed docs index with clear "Start here" links (blueprints/strings, EBNF, strings reference)
|
- Refreshed docs index with clear "Start here" links (blueprints/strings, EBNF, strings reference)
|
||||||
- Clarified operator/loop sugar policy in `guides/language-core-and-sugar.md` ("!" adopted, do‑while not adopted)
|
- Clarified operator/loop sugar policy in `guides/language-core-and-sugar.md` ("!" adopted, do‑while not adopted)
|
||||||
|
- Concurrency docs (design-only): box model, semantics, and patterns/checklist added
|
||||||
|
- `docs/proposals/concurrency/boxes.md`
|
||||||
|
- `docs/reference/concurrency/semantics.md`
|
||||||
|
- `docs/guides/box-patterns.md`, `docs/guides/box-design-checklist.md`
|
||||||
- CI/Smokes
|
- CI/Smokes
|
||||||
- Added UTF‑8 CP smoke (PyVM): `tools/test/smoke/strings/utf8_cp_smoke.sh` using `apps/tests/strings/utf8_cp_demo.nyash` (green)
|
- Added UTF‑8 CP smoke (PyVM): `tools/test/smoke/strings/utf8_cp_smoke.sh` using `apps/tests/strings/utf8_cp_demo.nyash` (green)
|
||||||
- Wired into min‑gate CI alongside MacroCtx smoke (green)
|
- Wired into min‑gate CI alongside MacroCtx smoke (green)
|
||||||
|
- Added using mix smoke (PyVM, using ON): `tools/test/smoke/selfhost/collect_prints_using_mixed.sh` (in progress)
|
||||||
|
- Current: A/B prints OK via MiniVmPrints; ints/compare/binop pending
|
||||||
|
- Use dev flags when reproducing: `NYASH_RESOLVE_FIX_BRACES=1 NYASH_PARSER_STATIC_INIT_STRICT=1`
|
||||||
|
- Goal: fully green (A/B/7/1/7/5) with default‑OFF toggles kept OFF by default
|
||||||
|
- Added loader‑path dev smoke (MiniVm.collect_prints focus): `tools/test/smoke/selfhost/collect_prints_loader.sh`(任意/開発用)
|
||||||
|
- Added empty‑args using smoke (PyVM, using ON): `tools/test/smoke/selfhost/collect_empty_args_using_smoke.sh` (uses seam brace safety valve; default‑OFF)
|
||||||
- Runtime (Rust)
|
- Runtime (Rust)
|
||||||
- StringBox.length: CP/Byte gate via env `NYASH_STR_CP=1` (default remains byte length; freeze‑safe)
|
- StringBox.length: CP/Byte gate via env `NYASH_STR_CP=1` (default remains byte length; freeze‑safe)
|
||||||
- StringBox.indexOf/lastIndexOf: CP gate via env `NYASH_STR_CP=1`(既定はByte index; PyVMはCP挙動)
|
- StringBox.indexOf/lastIndexOf: CP gate via env `NYASH_STR_CP=1`(既定はByte index; PyVMはCP挙動)
|
||||||
@ -65,13 +80,14 @@ Notes / Risks
|
|||||||
- [x] 式境界(Print.expression)の `{…}` 内で `value`×2 を確実抽出→加算(決定化)
|
- [x] 式境界(Print.expression)の `{…}` 内で `value`×2 を確実抽出→加算(決定化)
|
||||||
- [x] Main.fast‑path を追加(先頭で確定→即 return)
|
- [x] Main.fast‑path を追加(先頭で確定→即 return)
|
||||||
- [x] PyVM:`__me__` ディスパッチ追加/`substring` None ガード
|
- [x] PyVM:`__me__` ディスパッチ追加/`substring` None ガード
|
||||||
- [ ] Mini‑VM:me 呼びの全面撤去(関数呼びへ統一)
|
- [x] Mini‑VM:me 呼びの全面撤去(関数呼びへ統一)
|
||||||
- [ ] `substring` 呼び前の index>=0 ガード徹底・`print_prints_in_slice` に番兵を追加
|
- [x] `substring` 呼び前の index>=0 ガード徹底・`print_prints_in_slice` に番兵を追加
|
||||||
- [ ] 代表スモーク(int+int=46)を緑化
|
- [x] 代表スモーク(int+int=46)を緑化
|
||||||
|
|
||||||
3) JSON ローダ分離(導線のみ・互換維持)
|
3) JSON ローダ分離(導線のみ・互換維持)
|
||||||
- [ ] MiniJsonLoader(薄ラッパ)経由に集約→後で `apps/libs/json_cur.nyash` に差し替え可能に
|
- [x] MiniJsonLoader(薄ラッパ)経由に集約の導線を適用(prints/単一intの抽出に使用)→ 後で `apps/libs/json_cur.nyash` に差し替え可能
|
||||||
- [ ] スモークは現状維持(既存の stdin/argv 供給で緑)
|
- [x] スモークは現状維持(stdin/argv 供給とも緑)
|
||||||
|
- [x] loader‑path の検証用スモーク追加(dev 任意)
|
||||||
|
|
||||||
4) Nyash 箱の委譲(内部・段階導入)
|
4) Nyash 箱の委譲(内部・段階導入)
|
||||||
- [ ] StringBox 公開API → Utf8CursorBox(length/indexOf/substring)へ委譲(互換を保つ)
|
- [ ] StringBox 公開API → Utf8CursorBox(length/indexOf/substring)へ委譲(互換を保つ)
|
||||||
@ -92,10 +108,14 @@ Notes / Risks
|
|||||||
- If(リテラル条件)片側分岐の走査
|
- If(リテラル条件)片側分岐の走査
|
||||||
|
|
||||||
次にやる(順)
|
次にやる(順)
|
||||||
0) BinOp(+): me 撤去+index ガード徹底+print_prints 番兵(ハング防止)
|
|
||||||
1) JSON ローダの分離(`apps/libs/json_cur.nyash` 採用準備)
|
1) JSON ローダの分離(`apps/libs/json_cur.nyash` 採用準備)
|
||||||
2) if/loop の代表スモークを 1–2 本追加(PyVM と出力一致)
|
2) if/loop の代表スモークを 1–2 本追加(PyVM と出力一致)
|
||||||
|
- [x] If(リテラル条件): T/F の分岐出力(mini_vm_if_literal_branch_smoke)
|
||||||
|
- [x] Loop 相当(連続 Print の順序): a,b,c,1,2 の順序確認(mini_vm_print_sequence_smoke)
|
||||||
3) Mini‑VM を関数形式へ移行(トップレベル MVP から段階置換)
|
3) Mini‑VM を関数形式へ移行(トップレベル MVP から段階置換)
|
||||||
|
- [x] Entry を薄く(args→json 決定→core.run へ委譲)
|
||||||
|
- [x] core.run の単発 Literal(string/int)対応を内製
|
||||||
|
- [x] 純関数 API 追加: MiniVm.collect_prints(json)(最小: literal対応)
|
||||||
|
|
||||||
受け入れ(Stage‑B)
|
受け入れ(Stage‑B)
|
||||||
- stdin/argv から供給した JSON 入力で Print/分岐が正しく動作(スモーク緑)
|
- stdin/argv から供給した JSON 入力で Print/分岐が正しく動作(スモーク緑)
|
||||||
@ -136,8 +156,7 @@ Always‑on(期待値: 緑)
|
|||||||
Pending / Skipped(未導入・任意)
|
Pending / Skipped(未導入・任意)
|
||||||
- Match guard: 追加ゴールデン(type最小形)
|
- Match guard: 追加ゴールデン(type最小形)
|
||||||
- LoopForm: break/continue 降下の観測スモーク
|
- LoopForm: break/continue 降下の観測スモーク
|
||||||
- Mini‑VM Stage‑B: JSON ローダ分離 + if/loop 代表スモーク
|
- Mini‑VM Stage‑B: JSON ローダ分離 + if/loop 代表スモーク(継続的に強化)
|
||||||
- Mini‑VM Stage‑B: BinOp(+)緑化(me 撤去+index ガード+番兵)
|
|
||||||
- UTF‑8 委譲: StringBox→Utf8CursorBox の段階置換(内部のみ;ゲート)
|
- UTF‑8 委譲: StringBox→Utf8CursorBox の段階置換(内部のみ;ゲート)
|
||||||
- UTF‑8 CP gate (Rust): indexOf/lastIndexOf env‑gated CP semantics(既定OFF)
|
- UTF‑8 CP gate (Rust): indexOf/lastIndexOf env‑gated CP semantics(既定OFF)
|
||||||
- LLVM 重テスト: 手動/任意ジョブのみ(常時スキップ)
|
- LLVM 重テスト: 手動/任意ジョブのみ(常時スキップ)
|
||||||
@ -157,6 +176,10 @@ Acceptance
|
|||||||
- README/ガイドにプロファイル説明が反映済み
|
- README/ガイドにプロファイル説明が反映済み
|
||||||
- UTF‑8 CP smoke is green under PyVM; Rust CP gate remains opt‑in
|
- UTF‑8 CP smoke is green under PyVM; Rust CP gate remains opt‑in
|
||||||
|
|
||||||
|
## Repo / Branches (private)
|
||||||
|
- Active: `selfhost`(作業用), `main`(既定)
|
||||||
|
- Clean‑up: 古い開発ブランチ(academic-papers / feat/match-type-pattern / selfhosting-dev)を整理。必要なら再作成可。
|
||||||
|
|
||||||
## Self‑Hosting — Stage A(要約)
|
## Self‑Hosting — Stage A(要約)
|
||||||
|
|
||||||
Scope(最小)
|
Scope(最小)
|
||||||
@ -167,9 +190,15 @@ Progress
|
|||||||
- [x] PyVM P1: `String.indexOf` 追加
|
- [x] PyVM P1: `String.indexOf` 追加
|
||||||
- [x] Entry 統一(`Main.main`)/ ネスト関数リフト
|
- [x] Entry 統一(`Main.main`)/ ネスト関数リフト
|
||||||
|
|
||||||
Next(クリーン経路)
|
- Next(クリーン経路)
|
||||||
- [ ] Mini‑VM: 関数形式+簡易 JSON ローダへ段階移行
|
- [x] Mini‑VM: 入口薄化(MiniVm.run 呼び一択)— `apps/selfhost-vm/mini_vm.nyash` を薄いラッパに再編(using 前置に依存)
|
||||||
- [ ] Docs: invariants/constraints/testing‑matrix へ反映追加
|
- [x] Mini‑VM: collect_prints の混在ケース用スモーク追加(echo/itoa/compare/binop)→ `tools/test/smoke/selfhost/collect_prints_mixed.sh`
|
||||||
|
- [x] Mini‑VM: JSON ローダ呼び出しの段階統一(digits/quoted/whitespace を MiniJson に寄せる・第一弾完了)
|
||||||
|
- [x] Dev sugar: 行頭 @ = local のプリエクスパンドをランナー前処理に常時組込み(ゼロセマンティクス)
|
||||||
|
- [x] Mini‑VM ソースの @ 採用(apps/selfhost‑vm 配下の入口/補助を段階 @ 化)
|
||||||
|
- [x] Runner CLI: clap ArgAction(bool フラグ)を一通り点検・SetTrue 指定(panic 回避)
|
||||||
|
- [ ] Docs: invariants/constraints/testing‑matrix へ反映追加(前処理: using前置/@正規化)
|
||||||
|
- [x] Docs: Using→Loader 統合メモ(短尺)— docs/design/using-loader-integration.md(READMEにリンク済)
|
||||||
|
|
||||||
### Guardrails(active)
|
### Guardrails(active)
|
||||||
- 参照実行: PyVM が常時緑、マクロ正規化は pre‑MIR で一度だけ
|
- 参照実行: PyVM が常時緑、マクロ正規化は pre‑MIR で一度だけ
|
||||||
@ -181,6 +210,8 @@ Next(クリーン経路)
|
|||||||
- Language: Flow blocks & `->` piping(design) — docs/design/flow-blocks.md
|
- Language: Flow blocks & `->` piping(design) — docs/design/flow-blocks.md
|
||||||
- Guards: Range/CharClass sugar(reference) — docs/reference/language/match-guards.md
|
- Guards: Range/CharClass sugar(reference) — docs/reference/language/match-guards.md
|
||||||
- Strings: `toDigitOrNull` / `toIntOrNull`(design note) — docs/reference/language/strings.md
|
- Strings: `toDigitOrNull` / `toIntOrNull`(design note) — docs/reference/language/strings.md
|
||||||
|
- Concurrency: Box model(Routine/Channel/Select/Scope) — docs/proposals/concurrency/boxes.md
|
||||||
|
- Concurrency semantics(blocking/close/select/trace) — docs/reference/concurrency/semantics.md
|
||||||
|
|
||||||
## Nyash VM めど後 — 機能追加リンク(備忘)
|
## Nyash VM めど後 — 機能追加リンク(備忘)
|
||||||
- スコープ再利用ブロック(MVP 提案): docs/proposals/scope-reuse.md
|
- スコープ再利用ブロック(MVP 提案): docs/proposals/scope-reuse.md
|
||||||
@ -189,3 +220,12 @@ Next(クリーン経路)
|
|||||||
- String 便利関数(toDigit/Int; 設計): docs/reference/language/strings.md
|
- String 便利関数(toDigit/Int; 設計): docs/reference/language/strings.md
|
||||||
|
|
||||||
Trigger: nyash_vm の安定(主要スモーク緑・自己ホスト経路が日常運用)。達成後に検討→MVP 実装へ。
|
Trigger: nyash_vm の安定(主要スモーク緑・自己ホスト経路が日常運用)。達成後に検討→MVP 実装へ。
|
||||||
|
|
||||||
|
## Next Up (Parity & Using Edge Smokes)
|
||||||
|
|
||||||
|
- Parity quick harness(任意): `tools/smokes/parity_quick.sh` で代表 apps/tests を PyVM vs llvmlite で比較
|
||||||
|
- Using エッジケース: 相互依存/相対パス混在/alias のスモーク追加(apps/tests + tools/test/smoke/using/edge_cases.sh)
|
||||||
|
- Using 混在スモークの緑化仕上げ(PyVM)
|
||||||
|
- MiniVmPrints.print_prints_in_slice の binop/compare/int リテラル境界(obj_end/p_obj_end)を調整
|
||||||
|
- ArrayBox 経路の size/get 依存を避け、直接 print する経路の安定化を優先
|
||||||
|
- 再現フラグ(開発のみ): `NYASH_RESOLVE_FIX_BRACES=1 NYASH_PARSER_STATIC_INIT_STRICT=1`
|
||||||
|
|||||||
Reference in New Issue
Block a user