Files
hakorune/docs/nyir/phase_9_10_nyir_spec.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

3.7 KiB
Raw Blame History

Phase 9.10: NyIR v1 仕様・フォーマット・検証器公開IRの確立

目的

  • NyashのMIRを公開IRNyIR v1として凍結し、あらゆるフロントエンド/バックエンドの共通契約とする。
  • 仕様・テキスト/バイナリフォーマット・厳格検証器・ツール群を整備し、移植性と一貫性を保証する。

成果物Deliverables

  • 仕様書: docs/nyir.md(命令仕様/効果/未定義なし/検証ルール/等価変換指針)
  • フォーマット: .nyir(テキスト), .nybc(バイナリ)
  • 検証器: nyir-verifyCLI/ライブラリ)
  • 変換/実行ツール:
    • nyashel -SNyash→NyIRダンプ
    • nyir-runNyIRインタプリタ
    • 参考: nyir-llNyIR→LLVM IR、Phase 10で拡張
  • Golden NyIR: golden/*.nyir代表サンプルを固定、CIで全バックエンド一致を検証

仕様の要点NyIR v1

  • 命令セット: 25命令Tier-0/1/2を凍結
    • Tier-0: Const, BinOp, Compare, Branch, Jump, Phi, Call, Return
    • Tier-1: NewBox, BoxFieldLoad, BoxFieldStore, BoxCall, Safepoint, RefGet, RefSet, WeakNew, WeakLoad, WeakCheck, Send, Recv
    • Tier-2: TailCall, Adopt, Release, MemCopy, AtomicFence
  • 効果Effects: pure / mut / io / control再順序化規則を明文化
  • 所有フォレスト: 強参照の森strong in-degree ≤ 1、強循環禁止、weakは非伝播
  • Weak: 失効時の挙動を決定WeakLoad=null / WeakCheck=false、世代タグ設計を想定
  • Bus: ローカルは順序保証、リモートは at-least-onceまたは選択可能
  • 未定義動作なし: 各命令の事前条件/失敗時挙動を明示
  • バージョニング: nyir{major.minor}、featureビットで拡張告知

テキスト形式(.nyir

  • 人間可読・差分レビュー向け
  • 構造: moduleヘッダ / const pool / functionsblocks, instrs
  • コメント/メタデータ/featureビットを扱える簡潔な構文

バイナリ形式(.nybc

  • セクション化: header / features / const pool / functions / metadata
  • エンコード: LEB128等の可変長を採用、識別子はstring table参照
  • 将来の後方互換に備えた保守的設計

検証器Verifier

  • 検査: 所有森/強循環/weak規則/効果整合/到達性/終端性/Phi入力整合
  • 失敗時は明確なエラーを返し、ロード拒否
  • CLI/ライブラリの二態(コンパイラ/実行系どちらからも利用)

Golden / Differential テスト

  • golden/*.nyir を固定し、interp/vm/wasm/jit/llvm順次で出力一致をCIで検証
  • 弱失効/分割fini/境界条件系を重点的に含める

タスクCopilot TODO

  1. 仕様スケルトン: docs/nyir.md ひな形生成(命令/効果/検証/等価変換の目次)
  2. .nyir パーサ/プリンタ(最小)
  3. .nybc エンコーダ/デコーダ(最小)
  4. nyir-verify(所有森/効果/Phi/到達/終端の基本チェック)
  5. nyashel -S をNyIR出力対応に既存MIRダンプ経路から移行
  6. Goldenサンプル作成3〜5本CIワークフロー雛形

受け入れ基準Acceptance

  • 代表サンプルが .nyir で表現・検証・実行可能(nyir-run
  • .nybc 読み書き往復で等価
  • CIでinterp/vm/wasmの結果一致最小ケース

依存/関連

  • 8.5: 25命令の確定仕様
  • 9.7: ExternCall/ABINyIRにもmethodードor外部呼を表現。v1ではExternCallは拡張セクションで可
  • 10.x: NyIR→LLVM IR別Phase

リスク

  • 仕様凍結の硬直化 → 拡張はfeatureビット拡張セクションへ
  • 実装の重複 → Verifier/フォーマットは共有ライブラリ化

最終更新: 2025-08-14