# Python → NyIR 革命 - 箱に被せてVM/ネイティブ/WASM 作成日: 2025-08-27 Status: 構想段階 Priority: High Related: ChatGPT5との共同構想 ## 🎯 ビジョン **PythonをBoxで包んで、GCオン/オフ切替可能、GIL不要、VM/ネイティブ/WASM全部で動く世界** 既存のPythonコンパイラが解決できなかった問題を「Everything is Box」で根本解決。 ## 🚀 三段ロケット構想 ### 1️⃣ ブリッジ層(今すぐ動く) ```nyash // CPythonを"箱で包む" ForeignBox // PyObjを不透明ハンドルで保持 ProxyBox // GIL・イベントループはバス越しで処理 ny_py_host // C-ABI: ny_py_call/finalize/pin/unpin // fini ↔ CPython finalizerを相互接続(二重解放防止) ``` ### 2️⃣ 部分コンパイル層(静的部分をNyIRへ) ```python @ny_static # 型固定アノテーション def calculate(numbers: List[float]) -> float: total = 0.0 for n in numbers: total += n * n return total ``` ↓ ```nyash // NyIRに変換 → VM/Cranelift/WASMで実行 function calculate(numbers) { local total = 0.0 local i = 0 loop(i < numbers.length()) { total = total + numbers.get(i) * numbers.get(i) i = i + 1 } return total } ``` ### 3️⃣ トレースJIT層(ホット部自動最適化) - CPython実行をプロファイル - ホットトレースだけNyIR生成 - CraneliftでJIT(PyPy風だが後段はNyIR) ## 📊 既存Pythonコンパイラとの決定的違い | 既存 | Nyash+Python | |------|-------------| | GC必須(参照カウント+GC) | **GCオン/オフ切替可能** | | GIL必須で真の並列困難 | **SyncBoxでGIL不要並列化** | | C++変換やPyPy VM限定 | **VM/Cranelift/WASM/LLVM全対応** | | 言語固有の最適化 | **NyIRで多言語統合基盤** | ## 🏗️ マッピング設計 | Python | Nyash/NyIR | |--------|-----------| | int/float/bool/str | Value/IntegerBox/StringBox | | list/tuple | VecBox(不変は`look`) | | dict | MapBox | | class/object | Box(public/privateフィールド) | | with | `with … {}`(RAII) | | async/await | ChannelBox/Bus | | exception | `Throw/Try`(or `Result`) | 反射・動的属性・メタクラスは`ForeignBox`で残してOK。 ## 💎 期待される効果 ### 性能面 - 数値/ループ/データ処理で**2-20倍高速化** - GCオフで**リアルタイム性能保証** - SyncBoxで**真の並列実行** ### 開発面 - **段階導入可能** - 関数単位で移行 - **GCオンで開発** - メモリリーク即検出 - **同一コードで多プラットフォーム** - VM/WASM/ネイティブ ### 革新性 - **言語統合基盤** - Python/JS/Lua全部NyIRへ - **GCは練習用補助輪** - 本番では不要 - **箱=ライフサイクル** - 統一メモリモデル ## 📅 実装ロードマップ(1週間MVP) ### Day 1-2: ny_py_host(C-ABIブリッジ) - [ ] call/finalize/pin/unpin実装 - [ ] ForeignBox基盤 ### Day 3-4: py-nyc v0(基本構文) - [ ] def/for/if/return変換 - [ ] int/float/list/dict対応 - [ ] @ny_staticアノテーション ### Day 5-6: 混在実行 - [ ] 関数単位でNyIR or CPython選択 - [ ] ベンチマーク3本作成 ### Day 7: Cranelift JIT - [ ] ホット関数のみコンパイル - [ ] 性能測定・デモ準備 ## 🔧 技術的詳細 ### ブリッジ設計 ```c // C-ABI最小セット ny_py_call(func_id, argc, argv) ny_py_finalize(obj_id) ny_py_pin(obj_id) // GC防止 ny_py_unpin(obj_id) // GC許可 ``` ### 安全性保証 - **二重解放防止**: fini ↔ finalizer相互接続 - **GIL隔離**: ProxyBox経由でPython処理 - **型安全**: @ny_static領域のみコンパイル ### リスク回避 - **動的機能**: @ny_static外はブリッジ経由 - **C拡張**: 初期はForeignBox、将来NyIR実装 - **GIL**: NyIR部分はGIL非依存で多コア化 ## 🎭 デモシナリオ ```python # 同一ソースを3実行 python calculate.py # CPython nyash calculate.ny # Nyash VM nyash --wasm calculate # ブラウザ実行 # 結果: 完全一致 & 速度グラフ表示 # GCオン/オフ切替デモも同時実施 ``` ## 💡 世界が驚くポイント 「PythonをVMでもWASMでもRust並速度で動かせる」だけでなく: **「GCもGILも必須じゃない、Box原理で制御できる」** つまり:**Pythonコードの見た目のまま、Rustに迫る制御性を後付けできる** --- *「箱に被せれば、どの言語もVM/ネイティブ/WASMで走る」- 言語統合基盤の誕生*