📚 Phase 12: Nyashスクリプトプラグインシステム設計と埋め込みVM構想

## 主な成果
- Nyashスクリプトでプラグイン作成可能という革命的発見
- C ABI制約の分析と埋め込みVMによる解決策
- MIR/VM/JIT層での箱引数サポートの詳細分析

## ドキュメント作成
- Phase 12基本構想(README.md)
- Gemini/Codex先生の技術分析
- C ABIとの整合性問題と解決策
- 埋め込みVM実装ロードマップ
- 箱引数サポートの技術詳細

## 重要な洞察
- 制約は「リンク時にC ABI必要」のみ
- 埋め込みVMでMIRバイトコード実行により解決可能
- Nyashスクリプト→C ABIプラグイン変換が実現可能

Everything is Box → Everything is Plugin → Everything is Possible!
This commit is contained in:
Moe Charm
2025-08-30 22:52:16 +09:00
parent 7a0f9bd432
commit c13d9c045e
82 changed files with 5842 additions and 138 deletions

View File

@ -1,5 +1,7 @@
[Archived] 旧10.1系ドキュメントです。最新は ../INDEX.md を参照してください。
Note: 本来は「PythonをNyashで動かすフェーズパーサー統合」の位置づけでしたが、現在は順番を変更し、先に 10.5bMIR→VM→ネイティブビルド基盤を進めています。
# Phase 10.1c - パーサー統合実装
## 🎯 このフェーズの目的
@ -60,4 +62,4 @@ print(json_ast) // JSON ASTが表示される
```
## ⏭️ 次のフェーズ
→ Phase 10.1d (Core実装)
→ Phase 10.1d (Core実装)

View File

@ -1,5 +1,7 @@
[Archived] 旧10.1系ドキュメントです。最新は ../INDEX.md を参照してください。
Note: 本来は「PythonをNyashで動かすフェーズCore実装」の位置づけでしたが、現在は順番を変更し、先に 10.5bMIR→VM→ネイティブビルド基盤を進めています。
# Phase 10.1d - Core実装Phase 1機能
## 🎯 このフェーズの目的
@ -71,4 +73,4 @@ def append_to_list(item, lst=[]): # 定義時に評価!
```
## ⏭️ 次のフェーズ
→ Phase 10.1e (トランスパイラー)
→ Phase 10.1e (トランスパイラー)

View File

@ -6,15 +6,16 @@
- 10.5 README全体像: ./README.md
- 10.5a Python ABI 設計: ./10.5a-ABI-DESIGN.md
- 10.5b ネイティブビルド基盤: ./10.5b-native-build-consolidation.md
- 10.5c PyRuntimeBox / PyObjectBox 実装(予定)
- 現在フォーカス: MIR→VM→ネイティブビルドAOT/EXEを先に堅牢化
- 10.5c Handle-First PluginInvoke / PyRuntimeBox / PyObjectBox次段
- 10.5d JIT/AOT 統合(予定)
- 10.5e サンプル / テスト / ドキュメント(予定)
## Archived旧10.1系・参照用)
- chatgpt5 統合計画(旧称 Phase 10.1: ./chatgpt5_integrated_plan.md
- 10.1a_planning 10.1g_documentation 各READMEと資料
- 10.1c / 10.1d は「PythonをNyashで動かすフェーズ」の設計・実装メモです順番変更により後段へ
整理方針:
- Active ドキュメントに計画と用語を集約。旧10.1系は背景情報として参照のみ。
- 実装の優先は「必要最小の箱PyRuntimeBox / PyObjectBox」→ 後から最適化。

View File

@ -56,6 +56,12 @@
- 参照管理: `Py_INCREF`/`Py_DECREF` をBoxライフサイクルfiniに接続
- プラグイン化: `nyash-python-plugin`cdylib/staticlib`nyplug_python_invoke` を提供(将来の静的同梱に対応)
追加方針10.5c Handle-First/TLV 統一)
- Lowerer は Handle-First を徹底a0 は常に `nyash.handle.of(receiver)`)。
- 引数TLVは String/Integer をプリミティブ化、その他は Handle(tag=8) に統一。
- 受け手箱名が未確定な経路には by-name シムを導入(後方安全の回避路)。
- 参考: `docs/reference/abi/ffi_calling_convention_min.md`
### 10.5c 境界の双方向化35日
- Nyash→Python: BoxCall→plugin_invokeでCPython C-APIに橋渡し
- Python→Nyash: `nyashrt`CPython拡張`nyash.call(func, args)` を提供
@ -72,6 +78,10 @@
- テスト: GILの再入・参照カウントリーク検知・例外伝搬・多プラットフォーム
- ドキュメント: 使用例、制約GIL/スレッド、AOT時のリンク・ランタイム要件
追加済みサンプル(最小チェーン)
- VM: `examples/py_min_chain_vm.nyash`import→getattr→call→println
- AOT: `examples/aot_py_min_chain.nyash`import→getattr→call→return
## 🎯 DoD定義
- NyashからPythonコードを評価し、PyObjectをHandleで往復できる
- 代表的なプロパティ取得/呼び出しROがJIT/VMで動作