📚 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:
@ -1,5 +1,7 @@
|
||||
[Archived] 旧10.1系ドキュメントです。最新は ../INDEX.md を参照してください。
|
||||
|
||||
Note: 本来は「PythonをNyashで動かすフェーズ(パーサー統合)」の位置づけでしたが、現在は順番を変更し、先に 10.5b(MIR→VM→ネイティブビルド基盤)を進めています。
|
||||
|
||||
# Phase 10.1c - パーサー統合実装
|
||||
|
||||
## 🎯 このフェーズの目的
|
||||
@ -60,4 +62,4 @@ print(json_ast) // JSON ASTが表示される
|
||||
```
|
||||
|
||||
## ⏭️ 次のフェーズ
|
||||
→ Phase 10.1d (Core実装)
|
||||
→ Phase 10.1d (Core実装)
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
[Archived] 旧10.1系ドキュメントです。最新は ../INDEX.md を参照してください。
|
||||
|
||||
Note: 本来は「PythonをNyashで動かすフェーズ(Core実装)」の位置づけでしたが、現在は順番を変更し、先に 10.5b(MIR→VM→ネイティブビルド基盤)を進めています。
|
||||
|
||||
# Phase 10.1d - Core実装(Phase 1機能)
|
||||
|
||||
## 🎯 このフェーズの目的
|
||||
@ -71,4 +73,4 @@ def append_to_list(item, lst=[]): # 定義時に評価!
|
||||
```
|
||||
|
||||
## ⏭️ 次のフェーズ
|
||||
→ Phase 10.1e (トランスパイラー)
|
||||
→ Phase 10.1e (トランスパイラー)
|
||||
|
||||
@ -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)」→ 後から最適化。
|
||||
|
||||
|
||||
@ -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 境界の双方向化(3–5日)
|
||||
- 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で動作
|
||||
|
||||
Reference in New Issue
Block a user