Files
hakorune/docs/development/current/main/phases/phase-29y/README.md

1.9 KiB
Raw Blame History

Phase 29y (future, post self-host / docs-first): MIR lifecycle vocab freezeRC/weak/ABI

Status: Draft (docs-first)
Scope: self-host 後に “脱RustランタイムNyRT/.hako” を進める前提で、MIR の lifecycle/RC/weak を どこまで語彙として固定し、どこからを **runtime ABINyRT**に委譲するかを SSOT 化する。

Entry

  • 相談パケットSSOT: docs/development/current/main/investigations/phase-29y-mir-lifecycle-vocab-consult.md

Non-goals (Phase 29y ではやらない)

  • MIR 命令語彙の大改造(所有モデルを型に埋め込む等)
  • self-host 前の NyRT の .hako 化(実装は別フェーズ)
  • GC/finalizer の新規実装(境界の明文化まで)

Deliverables (最大 3 つに切る)

Phase 29y を “締める” 条件は実装ではなく、次フェーズへ切れること。

  1. ABI SSOT: NyRT ABI最小セット+ 関数 ABIargs borrowed / return owned など)を docs に固定
  2. RC insertion SSOT: retain/release/weak_drop の発火点を “1箇所” に寄せる設計Frag 前後)を docs に固定
  3. Observability SSOT: hidden root を追える観測点root面の定義、診断API、smokeは exit code SSOTを docs に固定

Current Recommendation (consultation summary)

  • 実体: RC の値と Alive/Dead/Freed 判定は runtimeNyRTに置く
  • 発火点: retain/release/weak_drop は分散せず、CFG確定後の “1回だけ” の挿入パスで SSOT 化
  • 関数ABI: args borrowed / return ownedborrowed を保存/返す場合のみ retain
  • weak identity: alloc_id + generation token を SSOT 化(ログも token 表示)
  • lifecycle semantics SSOT: docs/reference/language/lifecycle.md
  • Phase 285weak conformance / hidden root 根治): docs/development/current/main/phases/phase-285/README.md