docs(llvm/vm): 静的Box(self)規約を明文化 + Bridgeトグル追記; Gate‑C/Core 現状反映; CURRENT_TASK 更新。\n\n- 新規: docs/development/architecture/llvm/static_box_singleton.md\n- 追記: lang/src/vm/README.md に self 先頭規約/互換トグルを明記\n- 追記: CURRENT_TASK に本更新を記録\n- phase-20.33/CHECKLIST にドキュメント完了チェックを追加\n- bak フォルダはリポジトリ直下に存在せず(削除対象なし)\n\n併せて未コミット差分をスナップショット(Rust 層の前作業含む)

This commit is contained in:
nyash-codex
2025-11-01 16:31:48 +09:00
parent b9340a1b19
commit 01b4417c5d
7 changed files with 156 additions and 9 deletions

View File

@ -0,0 +1,34 @@
# 静的BoxLLVM命令系の self 先頭規約と互換トグル
目的
- LLVM 命令系の静的Box例: `LLVMPhiInstructionBox`のメソッド呼び出しにおける引数規約を一本化し、Verifier/Runner/Bridge での期待を一致させる。
方針(規約)
- 静的Boxのメソッドは「selfSingletonを先頭引数」に持つ。
- 例: `static box LLVMPhiInstructionBox { lower_phi(self, dst, incoming_list) { … } }`
- 呼び出し側の見た目は従来通りでよい(糖衣)。
- 呼び出し例: `PhiInst.lower_phi(dst, incoming)`
- Bridge/Runner が必要に応じて先頭に Singleton を注入して実行系へ渡す。
互換トグル既定OFF
- `HAKO_BRIDGE_INJECT_SINGLETON=1`alias: `NYASH_BRIDGE_INJECT_SINGLETON`
- 役割: 旧スタイルself 省略呼び出し)を受理し、実行前に `Singleton(LLVMPhiInstructionBox)` を先頭引数として補完。
- 範囲: LLVM 命令系の静的Boxphi/const/binop/compare/branch/jump/ret…。未対応は FailFast静かなフォールバック禁止
- TTL: 移行期限定の開発補助。完成後は削除または既定OFFのまま維持。
FailFastポリシー
- Verifier/Bridge は期待 arity と不一致の場合に明確な診断で失敗する。
- 代表メッセージ(例): `[bridge/singleton] static-box call missing receiver: LLVMPhiInstructionBox.lower_phi/2 (expected self+2)`
最小スモーク(設計)
1) 正常self 統一後)
- `PhiInst.lower_phi(5, incoming)` が PASS。
2) 互換self 未追加だがトグルON
- `HAKO_BRIDGE_INJECT_SINGLETON=1` で PASS。
3) 失敗トグルOFF・self なし)
- 安定化メッセージで FAIL。
関連
- `docs/private/roadmap/phases/phase-20.33/README.md`StageB 全体方針)
- `lang/src/vm/README.md`Core/GateC/Bridge 概観)