Files
hakorune/docs/development/roadmap/phases/phase-15.7/README.md
nyash-codex 510f4cf523 builder/vm: stabilize json_lint_vm under unified calls
- Fix condition_fn resolution: Value call path + dev safety + stub injection
- VM bridge: handle Method::birth via BoxCall; ArrayBox push/get/length/set direct bridge
- Receiver safety: pin receiver in method_call_handlers to avoid undefined use across blocks
- Local vars: materialize on declaration (use init ValueId; void for uninit)
- Prefer legacy BoxCall for Array/Map/String/user boxes in emit_box_or_plugin_call (stability-first)
- Test runner: update LLVM hint to llvmlite harness (remove LLVM_SYS_180_PREFIX guidance)
- Docs/roadmap: update CURRENT_TASK with unified default-ON + guards

Note: NYASH_DEV_BIRTH_INJECT_BUILTINS=1 can re-enable builtin birth() injection during migration.
2025-09-28 12:19:49 +09:00

91 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Phase 15.7: Known化Rewrite統合dev観測と MiniVM 安定化dev限定
目的
- Builderでの Known 化と Instance→Function の統一Known 経路を優先し、実行系VM/LLVM/Nyを単純化する。
- 早期観測resolve.try/choose, ssa.phiを devonly で整備し、Union の発生点を特定可能にする。
- 表示APIを `str()` に統一(互換: `stringify()`)し、言語表面のブレを解消する(挙動不変)。
- MiniVMNyを安全に安定化M2/M3代表ケース。NYABI Kernel は“下地のみ”既定OFF
背景
- Instance→Function 正規化の方針は既定ON。Known 経路は関数化し、VM側は単純化する。
- resolve.try/chooseBuilderと ssa.phiBuilderの観測は devonly で導入済み既定OFF
- MiniVM は M2/M3 の代表ケースを安定化(パス/境界厳密化)。
- VM Kernel の Ny 化は後段観測・ポリシーから段階導入、既定OFF
Unified Call開発既定ON
- 呼び出しの統一判定は、環境変数 `NYASH_MIR_UNIFIED_CALL``0|false|off` でない限り有効既定ON
- メソッド解決/関数化を `emit_unified_call` に集約し、以下の順序で決定:
1) 早期 toString/stringify→str
2) equals/1Known 優先→一意候補; ユーザーBox限定
3) Known→関数化`obj.m → Class.m(me,…)`)/一意候補フォールバック(決定性確保)
- レガシー側の関数化は dev ガードで抑止可能: `NYASH_DEV_DISABLE_LEGACY_METHOD_REWRITE=1`(移行期間の重複回避)
スコープ(やること)
1) Builder: Known 化 + Rewrite 統合Stage1
- P0: me 注入・Known 化origin 付与/維持)— 軽量PHI補強単一/一致時)
- P1: Known 経路 100% 関数化obj.m → Class.m(me,…)。special は `toString→str互換:stringify/equals` を統合
- 観測: resolve.try/choose / ssa.phi を devonly で JSONL 出力既定OFF`resolve.choose``certainty` を付加し、KPIKnown率を任意出力`NYASH_DEBUG_KPI_KNOWN=1`, `NYASH_DEBUG_SAMPLE_EVERY=N`)。
2) 表示APIの統一挙動不変
- 規範: `str()` / `x.str()`(同義)。`toString()` は早期に `str()` へ正規化
- 互換: `stringify()` は当面エイリアスとして許容
- QuickRef/ガイドの更新plus混在の誘導も `str()` に統一)
3) MiniVMMirVmMin安定化devのみ
- 厳密セグメントによる単一パス化、M2/M3 代表スモーク常緑const/binop/compare/branch/jump/ret
- パリティ: VM↔LLVM↔Ny のミニ・パリティ 2〜3件
4) NYABIVM Kernel Bridge下地未配線・既定OFF
- docs/abi/vm-kernel.md関数: caps()/policy.*()/resolve_method_batch()
- スケルトン: apps/selfhost/vm/boxes/vm_kernel_box.nyashpolicy スタブ)
- 既定OFFトグル予約: NYASH_VM_NY_KERNEL, *_TIMEOUT_MS, *_TRACE
非スコープ(やらない)
- 既定挙動の変更Rust VM/LLVMが主軸のまま
- PHI/SSAの一般化Phase 16 で扱う)
- VM Kernel の本配線(観測・ポリシーは devonly/未配線)
リスクと軽減策
- 性能: 境界越えは後Phaseに限る本Phaseは未配線。MiniVMは開発補助で性能要件なし。
- 複雑性: 設計は最小APIに限定。拡張は追加のみ後方互換維持
- 安全: すべて既定OFF。FailFast方針。再入禁止/タイムアウトを仕様に明記。
受け入れ条件Acceptance
- quick: MiniVMM2/M3代表スモーク緑const/binop/compare/branch/jump/ret
- integration: 代表パリティ緑llvmlite/ハーネス)
- Builder: resolve.try/choose と ssa.phi が devonly で取得可能NYASH_DEBUG_*
- 表示API: QuickRef/ガイドが `str()` に統一(実行挙動は従前と同じ)
- Unified Call は開発既定ONだが、`NYASH_MIR_UNIFIED_CALL=0|false|off` で即時オプトアウト可能(段階移行)。
実装タスク(小粒)
1. origin/observe/rewrite の分割方針を CURRENT_TASK に反映(ガイド/README付き
2. Known fastpath の一本化rewrite::try_known_rewrite special の集約
3. 表示APIの統一toString→str、互換:stringify— VM ルータ特例の整合・ドキュメント更新
4. MirVmMin: 単一パス化・境界厳密化M2/M3・代表スモーク緑
5. docs/abi/vm-kernel.md下書き維持・スケルトン Box未配線
トグル/ENV予約、既定OFF
- NYASH_VM_NY_KERNEL=0|1
- NYASH_VM_NY_KERNEL_TIMEOUT_MS=200
- NYASH_VM_NY_KERNEL_TRACE=0|1
ロールバック方針
- MiniVMの変更は apps/selfhost/ 配下に限定(本線コードは未配線)。
- NYABIは docs/ と スケルトンBoxのみ実行経路から未参照
- Unified Call は env で即時OFF可能。問題時は `NYASH_MIR_UNIFIED_CALL=0` を宣言してレガシーへ退避し、修正後に既定へ復帰。
補足(レイヤー・ガード)
- builder 層は origin→observe→rewrite の一方向依存を維持する。違反検出スクリプト: `tools/dev/check_builder_layers.sh`
関連(参照)
- Phase 15セルフホスティング: ../phase-15/README.md
- Phase 15.5(基盤整理): ../phase-15.5/README.md
- Known/Rewrite 観測: src/mir/builder/{method_call_handlers.rs,builder_calls.rs}, src/debug/hub.rs
- QuickRef表示API: docs/reference/language/quick-reference.md
- MiniVM: apps/selfhost/vm/boxes/mir_vm_min.nyash
- スモーク: tools/smokes/v2/profiles/quick/core/
更新履歴
- 20250928 v2本書: Known 化Rewrite 統合dev観測、表示API `str()` 統一、MiniVM 安定化へ焦点を再定義
- 20250928 初版: MiniVM M3 + NYABI下地の計画