Files
hakorune/docs/private/ideas/new-features/2025-08-27-python-to-nyir-revolution.md

4.6 KiB
Raw Blame History

Python → NyIR 革命 - 箱に被せてVM/ネイティブ/WASM

作成日: 2025-08-27 Status: 構想段階 Priority: High Related: ChatGPT5との共同構想

🎯 ビジョン

PythonをBoxで包んで、GCオン/オフ切替可能、GIL不要、VM/ネイティブ/WASM全部で動く世界

既存のPythonコンパイラが解決できなかった問題を「Everything is Box」で根本解決。

🚀 三段ロケット構想

1 ブリッジ層(今すぐ動く)

// CPythonを"箱で包む"
ForeignBox<PyObject>  // PyObjを不透明ハンドルで保持
ProxyBox             // GIL・イベントループはバス越しで処理
ny_py_host          // C-ABI: ny_py_call/finalize/pin/unpin

// fini ↔ CPython finalizerを相互接続二重解放防止

2 部分コンパイル層静的部分をNyIRへ

@ny_static  # 型固定アノテーション
def calculate(numbers: List[float]) -> float:
    total = 0.0
    for n in numbers:
        total += n * n
    return total

// 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でJITPyPy風だが後段は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 Boxpublic/privateフィールド
with with … {}RAII
async/await ChannelBox/Bus
exception Throw/Tryor Result

反射・動的属性・メタクラスはForeignBox<PyObject>で残してOK。

💎 期待される効果

性能面

  • 数値/ループ/データ処理で2-20倍高速化
  • GCオフでリアルタイム性能保証
  • SyncBoxで真の並列実行

開発面

  • 段階導入可能 - 関数単位で移行
  • GCオンで開発 - メモリリーク即検出
  • 同一コードで多プラットフォーム - VM/WASM/ネイティブ

革新性

  • 言語統合基盤 - Python/JS/Lua全部NyIRへ
  • GCは練習用補助輪 - 本番では不要
  • 箱=ライフサイクル - 統一メモリモデル

📅 実装ロードマップ1週間MVP

Day 1-2: ny_py_hostC-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-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非依存で多コア化

🎭 デモシナリオ

# 同一ソースを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で走る」- 言語統合基盤の誕生