2.9 KiB
2.9 KiB
Phase 9.10: NyIR v1 仕様・フォーマット・検証器(Copilot実装用タスク)
目的(What/Why)
- NyashのMIRを公開IR(NyIR v1)として凍結し、あらゆるフロントエンド/バックエンドの共通契約にする。
- 仕様・テキスト/バイナリフォーマット・厳格検証器・ツール群を整備し、移植性と一貫性を保証する。
- 設計の正本は
docs/nyir/spec.md(Core+Extの骨子)。本ファイルはCopilotが実装を進めるための具体タスク集。
スコープ(Deliverables)
- 仕様書(骨子は既存):
docs/nyir/spec.mdに沿ったv1確定版の追補 - フォーマット:
.nyir(テキスト),.nybc(バイナリ) - 検証器:
nyir-verify(CLI/ライブラリ) - 変換/実行ツール:
nyashel -S(Nyash→NyIRダンプ)nyir-run(NyIRインタプリタ)- 参考:
nyir-ll(NyIR→LLVM IR、Phase 10で拡張)
- Golden NyIR:
golden/*.nyir(代表サンプルを固定、CIで全バックエンド一致を検証)
実装タスク(Copilot TODO)
- 仕様固定
docs/nyir/spec.mdに従い、25命令Core+Effect+Ownership+Weak+Busをv1として明文化。- NyIR-Ext(exceptions/concurrency/atomics)の章は骨子のみ維持(別Phase)。
.nyirパーサ/プリンタ(最小)- 構造: moduleヘッダ / features / const pool / functions(blocks, instrs)
- コメント/メタ/featureビットを許容(v1最小でもOK)
.nybcエンコーダ/デコーダ(最小)- セクション: header / features / const pool / functions / metadata
- エンコード: LEB128等。識別子はstring table参照
nyir-verify(厳格検証器)- 検査: 所有森/強循環/weak規則/効果整合/到達性/終端性/Phi入力整合
- 失敗時は明確なエラーを返し、ロード拒否
nyashel -SをNyIR出力対応に- 既存MIRダンプ経路から移行。
.nyirで出力
- 既存MIRダンプ経路から移行。
- 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 の実装(例外/非同期/アトミック)は別Phase(9.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テストを並行で用意して、バックエンド横断の一貫性を早期に担保。