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:
Selfhosting Dev
2025-09-22 03:56:11 +09:00
parent c9a0333c38
commit 14c6b72417

View File

@ -15,8 +15,8 @@ Updated: 20250921
- [x] Main.fastpath: BinaryOp('+') を早期に 2 値抽出→加算→即 return
- [x] PyVM: `__me__` ディスパッチ同一Box内メソッド呼びの安全化
- [x] PyVM: `String.substring` の None 引数を安全化None→既定値
- [ ] MiniVM 内の me 呼びを完全撤去(関数呼びに統一)/ substring 前の index ガード徹底
- [ ] 代表スモークint+int=46を緑化print_prints_in_slice の無限ループ回避を含む)
- [x] MiniVM 内の me 呼びを完全撤去(関数呼びに統一)/ substring 前の index ガード徹底
- [x] 代表スモークint+int=46を緑化print_prints_in_slice の無限ループ回避を含む)
- CI: keep min-gate light (MacroCtx/selfhost-preexpand/UTF8/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`.
@ -27,13 +27,28 @@ Principles (freeze)
- Keep changes minimal/local; no spec changes unless to fix critical issues.
### Delta (since last update)
- Using inliner/seam (dev toggles defaultOFF)
- Resolver seam join normalized; optional brace safety valve addedstrings/comments除外カウント
- Python combineroptional hook: `tools/using_combine.py` を追加(--fix-braces/--seam-debug など)
- mini_vm_core の末尾ブレースを整合(未閉じ/余剰の解消)
- MiniVm.collect_prints の未知形スキップを Print オブジェクト全体に拡張(停滞防止)
- Docs
- Added strings blueprint: `docs/blueprints/strings-utf8-byte.md`
- 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, dowhile 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
- Added UTF8 CP smoke (PyVM): `tools/test/smoke/strings/utf8_cp_smoke.sh` using `apps/tests/strings/utf8_cp_demo.nyash` (green)
- Wired into mingate 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 defaultOFF toggles kept OFF by default
- Added loaderpath dev smoke (MiniVm.collect_prints focus): `tools/test/smoke/selfhost/collect_prints_loader.sh`(任意/開発用)
- Added emptyargs using smoke (PyVM, using ON): `tools/test/smoke/selfhost/collect_empty_args_using_smoke.sh` (uses seam brace safety valve; defaultOFF)
- Runtime (Rust)
- StringBox.length: CP/Byte gate via env `NYASH_STR_CP=1` (default remains byte length; freezesafe)
- 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] Main.fastpath を追加(先頭で確定→即 return
- [x] PyVM`__me__` ディスパッチ追加/`substring` None ガード
- [ ] MiniVMme 呼びの全面撤去(関数呼びへ統一)
- [ ] `substring` 呼び前の index>=0 ガード徹底・`print_prints_in_slice` に番兵を追加
- [ ] 代表スモークint+int=46を緑化
- [x] MiniVMme 呼びの全面撤去(関数呼びへ統一)
- [x] `substring` 呼び前の index>=0 ガード徹底・`print_prints_in_slice` に番兵を追加
- [x] 代表スモークint+int=46を緑化
3) JSON ローダ分離(導線のみ・互換維持)
- [ ] MiniJsonLoader薄ラッパ経由に集約後で `apps/libs/json_cur.nyash` に差し替え可能
- [ ] スモークは現状維持(既存の stdin/argv 供給緑)
- [x] MiniJsonLoader薄ラッパ経由に集約の導線を適用prints/単一intの抽出に使用後で `apps/libs/json_cur.nyash` に差し替え可能
- [x] スモークは現状維持stdin/argv 供給とも緑)
- [x] loaderpath の検証用スモーク追加dev 任意)
4) Nyash 箱の委譲(内部・段階導入)
- [ ] StringBox 公開API → Utf8CursorBoxlength/indexOf/substringへ委譲互換を保つ
@ -92,10 +108,14 @@ Notes / Risks
- Ifリテラル条件片側分岐の走査
次にやる(順)
0) BinOp(+: me 撤去index ガード徹底print_prints 番兵(ハング防止)
1) JSON ローダの分離(`apps/libs/json_cur.nyash` 採用準備)
2) if/loop の代表スモークを 12 本追加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) MiniVM を関数形式へ移行(トップレベル MVP から段階置換)
- [x] Entry を薄くargs→json 決定→core.run へ委譲)
- [x] core.run の単発 Literalstring/int対応を内製
- [x] 純関数 API 追加: MiniVm.collect_prints(json)(最小: literal対応
受け入れStageB
- stdin/argv から供給した JSON 入力で Print/分岐が正しく動作(スモーク緑)
@ -136,8 +156,7 @@ Alwayson期待値: 緑)
Pending / Skipped未導入・任意
- Match guard: 追加ゴールデンtype最小形
- LoopForm: break/continue 降下の観測スモーク
- MiniVM StageB: JSON ローダ分離 + if/loop 代表スモーク
- MiniVM StageB: BinOp(+緑化me 撤去index ガード+番兵)
- MiniVM StageB: JSON ローダ分離 + if/loop 代表スモーク(継続的に強化)
- UTF8 委譲: StringBox→Utf8CursorBox の段階置換(内部のみ;ゲート)
- UTF8 CP gate (Rust): indexOf/lastIndexOf envgated CP semantics既定OFF
- LLVM 重テスト: 手動/任意ジョブのみ(常時スキップ)
@ -157,6 +176,10 @@ Acceptance
- README/ガイドにプロファイル説明が反映済み
- UTF8 CP smoke is green under PyVM; Rust CP gate remains optin
## Repo / Branches (private)
- Active: `selfhost`(作業用), `main`(既定)
- Cleanup: 古い開発ブランチacademic-papers / feat/match-type-pattern / selfhosting-devを整理。必要なら再作成可。
## SelfHosting — Stage A要約
Scope最小
@ -167,9 +190,15 @@ Progress
- [x] PyVM P1: `String.indexOf` 追加
- [x] Entry 統一(`Main.main`/ ネスト関数リフト
Nextクリーン経路
- [ ] MiniVM: 関数形式+簡易 JSON ローダへ段階移行
- [ ] Docs: invariants/constraints/testingmatrix へ反映追加
- Nextクリーン経路
- [x] MiniVM: 入口薄化MiniVm.run 呼び一択)— `apps/selfhost-vm/mini_vm.nyash` を薄いラッパに再編using 前置に依存)
- [x] MiniVM: collect_prints の混在ケース用スモーク追加echo/itoa/compare/binop`tools/test/smoke/selfhost/collect_prints_mixed.sh`
- [x] MiniVM: JSON ローダ呼び出しの段階統一digits/quoted/whitespace を MiniJson に寄せる・第一弾完了)
- [x] Dev sugar: 行頭 @ = local のプリエクスパンドをランナー前処理に常時組込み(ゼロセマンティクス)
- [x] MiniVM ソースの @ 採用apps/selfhostvm 配下の入口/補助を段階 @ 化)
- [x] Runner CLI: clap ArgActionbool フラグを一通り点検・SetTrue 指定panic 回避)
- [ ] Docs: invariants/constraints/testingmatrix へ反映追加(前処理: using前置/@正規化
- [x] Docs: Using→Loader 統合メモ(短尺)— docs/design/using-loader-integration.mdREADMEにリンク済
### Guardrailsactive
- 参照実行: PyVM が常時緑、マクロ正規化は preMIR で一度だけ
@ -181,6 +210,8 @@ Nextクリーン経路
- Language: Flow blocks & `->` pipingdesign — docs/design/flow-blocks.md
- Guards: Range/CharClass sugarreference — docs/reference/language/match-guards.md
- Strings: `toDigitOrNull` / `toIntOrNull`design note — docs/reference/language/strings.md
- Concurrency: Box modelRoutine/Channel/Select/Scope — docs/proposals/concurrency/boxes.md
- Concurrency semanticsblocking/close/select/trace — docs/reference/concurrency/semantics.md
## Nyash VM めど後 — 機能追加リンク(備忘)
- スコープ再利用ブロックMVP 提案): docs/proposals/scope-reuse.md
@ -189,3 +220,12 @@ Nextクリーン経路
- String 便利関数toDigit/Int; 設計): docs/reference/language/strings.md
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`