## 🌟 主要変更 - 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>
2.6 KiB
2.6 KiB
NyIR を共通交換フォーマットにする計画(All Languages → NyIR → All Targets)
目的(Goal)
- あらゆる言語のプログラムを NyIR(= Nyash MIR の公開版)へ落とし、そこから任意の実行形態(WASM/LLVM/VM/他言語)に変換する。
- 最適化は二の次。まずは意味保存(semantics-preserving)を最優先で実現し、可搬性と一貫性を担保する。
中核方針(Core Policy)
- NyIR Core(26命令)は基本セマンティクス凍結。ExternCallによる外部世界接続を含む。
- 拡張は NyIR-Ext(exceptions/concurrency/atomics)で言語固有機能を段階導入。
- Everything is Box哲学: 外部ライブラリもBIDによりBox統一インターフェースで利用。
- 仕様の正本は
docs/nyir/spec.mdに集約(Core+Ext)。
必要拡張(Minimal Additions)
- 例外/アンワインド(Throw/TryBegin/TryEnd)
- 軽量並行/非同期(Spawn/Join/Await)
- アトミック(AtomicRmw/CAS + ordering)
→ 詳細は
docs/nyir/spec.mdの NyIR-Ext 参照
フロントエンド指針(Language → NyIR)
- C/C++/Rust: 既存IR(LLVM 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