Files
hakorune/docs/phases/phase-9/phase_9_10_nyir_spec.md

2.9 KiB
Raw Blame History

Phase 9.10: NyIR v1 仕様・フォーマット・検証器Copilot実装用タスク

目的What/Why

  • NyashのMIRを公開IRNyIR v1として凍結し、あらゆるフロントエンド/バックエンドの共通契約にする。
  • 仕様・テキスト/バイナリフォーマット・厳格検証器・ツール群を整備し、移植性と一貫性を保証する。
  • 設計の正本は docs/nyir/spec.mdCoreExtの骨子。本ファイルはCopilotが実装を進めるための具体タスク集。

スコープDeliverables

  • 仕様書(骨子は既存): docs/nyir/spec.md に沿ったv1確定版の追補
  • フォーマット: .nyir(テキスト), .nybc(バイナリ)
  • 検証器: nyir-verifyCLI/ライブラリ)
  • 変換/実行ツール:
    • nyashel -SNyash→NyIRダンプ
    • nyir-runNyIRインタプリタ
    • 参考: nyir-llNyIR→LLVM IR、Phase 10で拡張
  • Golden NyIR: golden/*.nyir代表サンプルを固定、CIで全バックエンド一致を検証

実装タスクCopilot TODO

  1. 仕様固定
    • docs/nyir/spec.md に従い、25命令CoreEffectOwnershipWeakBusをv1として明文化。
    • NyIR-Extexceptions/concurrency/atomicsの章は骨子のみ維持別Phase
  2. .nyir パーサ/プリンタ(最小)
    • 構造: moduleヘッダ / features / const pool / functionsblocks, instrs
    • コメント/メタ/featureビットを許容v1最小でもOK
  3. .nybc エンコーダ/デコーダ(最小)
    • セクション: header / features / const pool / functions / metadata
    • エンコード: LEB128等。識別子はstring table参照
  4. nyir-verify(厳格検証器)
    • 検査: 所有森/強循環/weak規則/効果整合/到達性/終端性/Phi入力整合
    • 失敗時は明確なエラーを返し、ロード拒否
  5. nyashel -S をNyIR出力対応に
    • 既存MIRダンプ経路から移行。.nyirで出力
  6. GoldenサンプルCI
    • golden/*.nyir 作成3〜5本
    • CIで interp/vm/wasm順次llvmに投げ、出力一致を確認

受け入れ基準Acceptance

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

非スコープOut of Scope

  • NyIR-Ext の実装(例外/非同期/アトミックは別Phase9.12/9.13/9.14想定)
  • 高度最適化/再配線は対象外(意味保存に限定)

参照References

  • NyIR 骨子: docs/nyir/spec.md
  • ABI/BIDドラフト: docs/予定/native-plan/box_ffi_abi.md
  • 計画9.7以降フルテキスト): docs/予定/native-plan/copilot_issues.txt

メモ(運用)

  • 仕様の正本は docs/nyir/。本Issueは実装タスクと受け入れ基準を明快に維持。
  • Golden/Diffテストを並行で用意して、バックエンド横断の一貫性を早期に担保。