feat: Add dual-mode design doc and VM/MIR improvements

- Add comprehensive dual-mode design document (script vs application mode)
- Update phase 9.8 documentation with implementation progress
- Enhance VM with improved error handling and debugging
- Add MIR verification improvements
- Add test cases for MIR/VM POC

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Moe Charm
2025-08-24 02:52:11 +09:00
parent 0aef8d49a7
commit c6d3b954d5
5 changed files with 647 additions and 19 deletions

View File

@ -2,7 +2,7 @@
目的What/Why
- 外部ライブラリをBoxBIDとして配布・発見・利用するための基盤を用意する。
- BIDBox Interface Definitionから各ターゲットWASM/VM/LLVM/TS/Pythonのスタブや宣言を自動生成し、開発者の負担を最小化する。
- 当面は nyash.toml にBID情報を“埋め込む”方式で回し、将来は外部BID(manifest)参照+自動生成へ段階拡張する。
成果物Deliverables
- BIDレジストリ仕様YAML/JSON スキーマ定義・バージョニング・依存関係・権限メタ)
@ -14,22 +14,21 @@
- TypeScript/Python: ラッパFFI呼び出しAPIのプロキシ
- サンプルBIDからの生成例console/canvas
範囲Scope
1) スキーマ
- `version`, `interfaces[]`, `methods[]`, `params`, `returns`, `effect`, `permissions`9.9の権限連携)
- 例: `docs/nyir/bid_samples/console.yaml`, `docs/nyir/bid_samples/canvas.yaml`
2) CLI
- `nyash bid gen --target <t> <bid.yaml>``out/<t>/<name>/...` に生成
- オプション: `--out`, `--force`, `--dry-run`
3) テンプレート
- 各ターゲット用のMustache/Handlebars相当のテンプレート群
4) ドキュメント
- `docs/予定/native-plan/box_ffi_abi.md` にBID→生成の流れを追記
範囲Scope:段階的
A) すぐやる埋め込みBID
- nyash.toml に最小BID情報署名・効果・権限を記述し、ランタイムローダが読み込む
- ExternCall/Plugin呼び出し時にBIDの`effects/permissions`を参照して実行可否を判定
B) 次にやる参照BID
- nyash.toml から外部BIDbid.yaml 等)を参照・マージ可能にする(アグリゲータ)
C) 自動生成(安定後)
- CLI: `nyash bid gen --target <t> <bid.yaml>``out/<t>/<name>/...` に生成
- テンプレート: WASM(importObject), VM(関数テーブル), LLVM(declare), TS/Python(RTEラッパ)
- ドキュメント: `docs/予定/native-plan/box_ffi_abi.md` にBID→生成の流れを追記
受け入れ基準Acceptance
- console/canvas のBIDから、WASM/VM/LLVM/TS/Python の最小スタブが生成される
- 生成物を用いて、9.7 のE2Econsole.log / canvas.fillRectが通
- `--dry-run` で生成前にプレビューが確認できる
受け入れ基準Acceptance:段階的
- A: nyash.toml BID 情報だけでランタイム実行・権限判定が可能外部BIDなしでも動作
- B: 外部BID(manifest)を nyash.toml から参照・マージでき
- C: console/canvas のBIDから、WASM/VM/LLVM/TS/Python の最小スタブが生成される(`--dry-run` 対応)
非スコープOut of Scope
- 高度な最適化生成、双方向同期、型高級機能(ジェネリクス/オーバーロード)
@ -42,6 +41,6 @@
- 計画: `docs/予定/native-plan/copilot_issues.txt`9.7/9.8/9.9
メモ(運用)
- 対応する形式が増えたら、まず nyash.toml にBIDを追記“その都度対応”の方針
- 将来的に「BID→RuntimeImports/ExternCall宣言」の自動接続まで拡張予定WASM/VM/LLVM
- 権限メタpermissionsは 9.9 のモデルに合わせて必須化を検討。