Files
hakorune/docs/nyir/vision_universal_exchange.md
Moe Charm 9b25330d94 docs: NyIR Core 26命令統一完了 - Universal Exchange Vision基盤確立
## 🌟 主要変更
- NyIR Core: 25命令 → 26命令(ExternCall追加)
- Universal Exchange Vision実現基盤完成
- Everything is Box哲学:外部ライブラリ統一対応

## 📋 完了した統一作業
-  docs/nyir/spec.md: 26命令正式仕様確定
-  docs/nyir/vision_universal_exchange.md: ChatGPT5ビジョン統合
-  docs/予定/native-plan/copilot_issues.txt: 実装計画全面更新
-  Extension戦略再定義: 言語固有機能に限定

## 🎯 26命令完全定義
**Tier-0 (8命令)**: Const, BinOp, Compare, Branch, Jump, Phi, Call, Return
**Tier-1 (13命令)**: NewBox, BoxFieldLoad, BoxFieldStore, BoxCall, **ExternCall**,
                   Safepoint, RefGet, RefSet, WeakNew, WeakLoad, WeakCheck, Send, Recv
**Tier-2 (5命令)**: TailCall, Adopt, Release, MemCopy, AtomicFence

## 🔥 ExternCall革命
外部ライブラリをBox統一APIで利用する革命的機能追加

## 📚 新規ドキュメント
- docs/nyir/: NyIR公開仕様フォルダ新設
- box_ffi_abi.md: Box FFI/ABI完全設計(ChatGPT5)
- phase_9_7実装仕様: GitHub Issue #72準備完了

## 🚀 次期タスク
Phase 9.7: Box FFI/ABI実装(Issue #72)
- MIR ExternCall命令実装
- WASM RuntimeImports統合
- Universal Library Integration実現

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-14 17:26:04 +09:00

2.6 KiB
Raw Blame History

NyIR を共通交換フォーマットにする計画All Languages → NyIR → All Targets

目的Goal

  • あらゆる言語のプログラムを NyIR= Nyash MIR の公開版へ落とし、そこから任意の実行形態WASM/LLVM/VM/他言語)に変換する。
  • 最適化は二の次。まずは意味保存semantics-preservingを最優先で実現し、可搬性と一貫性を担保する。

中核方針Core Policy

  • NyIR Core26命令は基本セマンティクス凍結。ExternCallによる外部世界接続を含む。
  • 拡張は NyIR-Extexceptions/concurrency/atomicsで言語固有機能を段階導入。
  • Everything is Box哲学: 外部ライブラリもBIDによりBox統一インターフェースで利用。
  • 仕様の正本は docs/nyir/spec.md に集約CoreExt

必要拡張Minimal Additions

  • 例外/アンワインドThrow/TryBegin/TryEnd
  • 軽量並行/非同期Spawn/Join/Await
  • アトミックAtomicRmw/CAS + ordering → 詳細は docs/nyir/spec.md の NyIR-Ext 参照

フロントエンド指針Language → NyIR

  • C/C++/Rust: 既存IRLLVM IR経由または専用パーサでサブセットから対応
    • 例外→NyIR-Ext exceptions or エラー戻り値
    • スレッド→Spawn/Join、atomic→CAS/RMW
  • Java/Kotlin: JVM bytecode から構造復元→NyIR例外/スレッド/同期をExtへ
  • Python/JS/TS: AST→NyIR。辞書/配列/プロトタイプは標準Boxへ写像、例外/非同期はExtへ
  • Go: panic/recover→exceptions、goroutine→Spawn/Join へ写像(将来)

バックエンド指針NyIR → Target

  • WASM: 同期・非例外・非スレッドの最小路線から段階対応Exceptions/Threads提案に合わせ拡張
  • LLVM: 例外/スレッド/アトミックが揃っているため先行実装が容易
  • VM: 仕様の正しさ検証の基準(簡易実装でも良い)
  • 他言語(ソース生成): 可読性/慣用性は課題だが、機械的変換は可能(優先度低)

検証計画Golden/Diff

  • Cサブセット→NyIR→C/WASM例外なし・CASあり
  • Python/JSサブセット→NyIR→WASM辞書/例外/非同期のサブセット)
  • JVM系→NyIR→JVM bytecode例外/スレッド)
  • Rustサブセット→NyIR→LLVM所有・weakの温存 → Golden NyIR を用い、interp/vm/wasm/llvm で出力一致をCI検証

関連リンク

  • NyIR 仕様: spec.md
  • ABI/BID: ../予定/native-plan/box_ffi_abi.md
  • 9.10 タスクCopilot向け: ../予定/native-plan/issues/phase_9_10_nyir_spec.md