pyvm: split op handlers into ops_core/ops_box/ops_ctrl; add ops_flow + intrinsic; delegate vm.py without behavior change

net-plugin: modularize constants (consts.rs) and sockets (sockets.rs); remove legacy commented socket code; fix unused imports
mir: move instruction unit tests to tests/mir_instruction_unit.rs (file lean-up); no semantic changes
runner/pyvm: ensure using pre-strip; misc docs updates

Build: cargo build ok; legacy cfg warnings remain as before
This commit is contained in:
Selfhosting Dev
2025-09-21 08:53:00 +09:00
parent ee17cfd979
commit c8063c9e41
247 changed files with 10187 additions and 23124 deletions

View File

@ -52,6 +52,10 @@
### 📖 技術資料
- **[実行バックエンドガイド](../../reference/architecture/execution-backends.md)** - 3バックエンド使い分け
- **SelfHosting / MiniVM ロードマップ**
- [Phase 17: LoopForm SelfHosting計画](phases/phase-17-loopform-selfhost/README.md)
- [MiniVM 構築ロードマップ(足場)](phases/phase-17-loopform-selfhost/MINI_VM_ROADMAP.md)
- 最新の短期タスクは [CURRENT_TASK.md](../../CURRENT_TASK.md) を参照
- **[コアコンセプト](../nyash_core_concepts.md)** - Everything is Box哲学
### 🔄 進捗管理

View File

@ -30,6 +30,8 @@ Purpose: Claude×Copilot×ChatGPT×Gemini×Codex協調開発の総合ロード
| 13 | 📅予定 | Nyashブラウザー革命 | [phase-13/](phase-13/) |
| 14 | 📅予定 | パッケージング・CI改善 | [phase-14/](phase-14/) |
| 15 | 🌟実現可能 | セルフホスティングC実装ABI経由 | [phase-15/](phase-15/) |
| 16 | 🔄進行中 | マクロ革命(正規化+テストランナー) | [phase-16-macro-revolution/](../phase-16-macro-revolution/) |
| 17 | 🧪計画中 | LoopForm SelfHostingMiniVM | [phase-17-loopform-selfhost/](../phase-17-loopform-selfhost/) |
---

View File

@ -0,0 +1,59 @@
# MiniVM 構築ロードマップSelfHosting 足場)
Status: active (Stage B → C 準備)
目的
- Nyashスクリプト製の極小VMMiniVMを段階的に整備し、PyVM依存を徐々に薄める。
- まずは「JSON v0 → 実行print/if/loopの最小」の芯を安定化し、自己ホストの足場にする。
原則
- 小さく進める段階ゲート、既定OFF
- 既存Runner/マクロ/CIへの影響を最小化導線はenvで明示
- まずは正しさ・可読性を優先。性能は後段で最適化。
Stages概要
- Stage A完了
- 文字列スキャンで整数抽出→print、ifリテラル条件の最小到達。
- サンプル: `apps/selfhost-vm/mini_vm*.nyash`
- スモーク: `tools/test/smoke/selfhost/mini_vm_*`
- Stage B進行中
- stdinローダ`NYASH_MINIVM_READ_STDIN=1`[実装済]
- JSON v0 ローダの最小強化Print(Literal/FunctionCall)、BinaryOp("+")の最小)[実装中]
- Stage C
- 最小命令の芯const / compare / branch / retloopの芯に直結
- binop(int+int) を本加算に変更(現状は簡易出力)
- if/loop の代表ケースを MiniVM で実行PyVM と出力一致)
- Stage D整備
- 解析の健全化:最小トークナイザ/カーソル Box 抽出、JSON 走査の責務分離
- 観測/安全:`NYASH_MINIVM_DEBUG=1`、最大ステップ、入力検証
受け入れ基準
- A: print/ifサンプルのスモーク常時緑
- B: stdin/argv経由のJSON供給で Print(Literal/FunctionCall)、BinaryOp("+") が正しく動作
- C: if/loop の簡易ケースが MiniVM で実行可能PyVMと出力一致
- D: 代表スモークが既定で安定デバッグON時のみ追加出力
実行・導線
- PyVM経由既定: `NYASH_VM_USE_PY=1` で Runner が MIR(JSON)→PyVM へ委譲
- MiniVM入力: `NYASH_MINIVM_READ_STDIN=1` で標準入力を `NYASH_SCRIPT_ARGS_JSON` に注入
- サンプル実行: `bash tools/test/smoke/selfhost/mini_vm_stdin_loader_smoke.sh`
関連
- 現在の短期タスクと進捗: `CURRENT_TASK.md` の「MiniVM 構築ロードマップ(整理)」
---
開発順序(迷わないための具体ステップ)
Now今すぐ
- compare の厳密化(<, == を先に完成 → その後 <=, >, >=, != を追加)
- binop(int+int) を本加算に修正(文字列→整数化→加算→文字列化)
- スモーク追加各1本ずつbinop / compare / ifMiniVM 版)
Next次の小粒
- 最小トークナイザ/カーソル Box 抽出index/substring を段階置換)
- FunctionCall の引数2個の最小対応echo(a,b)→連結)とスモーク
Later後で一気に
- loop の芯branch/jump/ret を活用)と代表スモーク
- ランナーの薄いFacadePyVM/Interpreter 切替を関数で吸収。巨大Trait導入は後回し