Files
hakorune/docs/development/roadmap/phases/phase-10.5/10.1c_parser_integration
Moe Charm c13d9c045e 📚 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!
2025-08-30 22:52:16 +09:00
..

[Archived] 旧10.1系ドキュメントです。最新は ../INDEX.md を参照してください。

Note: 本来は「PythonをNyashで動かすフェーズパーサー統合」の位置づけでしたが、現在は順番を変更し、先に 10.5bMIR→VM→ネイティブビルド基盤を進めています。

Phase 10.1c - パーサー統合実装

🎯 このフェーズの目的

pyo3を使ってCPythonパーサーをNyashに統合し、Python AST → JSON → Nyash ASTの変換パイプラインを構築する。

📁 実装ドキュメント

  • python_parser_box_implementation_plan.txt - 技術的実装計画
  • builtin_box_implementation_flow.txt - ビルトインBox実装フロー

🔧 実装タスク

1. PythonParserBoxの基本構造

pub struct PythonParserBox {
    base: BoxBase,
    py_helper: Arc<Mutex<PyHelper>>,
}

2. GIL管理の実装

// ✅ 良い例GILを最小限に
let json_ast = Python::with_gil(|py| {
    py_helper.parse_to_json(py, code)
})?;

// GIL外でRust処理
let nyash_ast = py.allow_threads(|| {
    convert_json_to_nyash(json_ast)
});

3. Python側ヘルパー実装

  • ast.parse() → JSON変換
  • 位置情報の保持lineno, col_offset
  • Python 3.11固定チェック

4. 関数単位フォールバック判定

pub fn can_compile(&self, func_def: &PythonAst) -> CompileResult {
    // サポートされているノードかチェック
    // CompileResult::Compile or CompileResult::Fallback
}

完了条件

  • PythonParserBoxがビルトインBoxとして登録されている
  • parse_to_json() メソッドが動作する
  • GIL管理が適切に実装されている
  • テレメトリー基盤が組み込まれている
  • 簡単なPythonコードでJSON ASTが取得できる

🧪 動作確認

local py = new PythonParserBox()
local json_ast = py.parse_to_json("def hello(): return 'Hello'")
print(json_ast)  // JSON ASTが表示される

⏭️ 次のフェーズ

→ Phase 10.1d (Core実装)