1.5 KiB
1.5 KiB
Phase 20.23 — Arc/RefCell in Hakorune(チェックリスト / MVP)
開始前
- Phase 20.21 完了(C‑ABI メモリ/RC の SSOT 確立)
- 20.22 は P1(FFI 用)として後回し(セルフホスト優先)
実装(MVP)
- ArcBox(Policy plane: Hakorune)
- birth(ptr) / retain() / release() / clone()
- Fail‑Fast: underflow/unknown(安定タグ
[arc/underflow],[arc/unknown]) - 追跡:
NYASH_DEBUG_ARC=1(HAKO_DEBUG_ARCエイリアス)で簡易トレース
- RefCellBox(Policy plane: Hakorune)
- try_borrow()/try_borrow_mut()/release_shared()/release_mut()/state()
- Fail‑Fast: 二重の可変借用/可変と不変の競合(
[refcell/conflict_*])
データプレーン連携(後続可)
- env.arc.* / env.refcell.* の extern 仕様(SSOT)
- Data plane(C)ブリッジは 20.21 の RC/alloc を再利用(必要時のみ)
テスト/スモーク(opt‑in, quick)
- Arc: retain→release→0(OK)
- Arc: underflowでFail([arc/underflow])
- RefCell: borrow_mut→borrow 競合(Fail 検出=PASS)
- RefCell: try_borrow OK(init→try_borrow→release_shared→0)
ドキュメント
- externs SSOT に env.arc.* / env.refcell.* を追記
- README(API/所有権/Fail‑Fast 診断)
- 20.21 RC との整合と例を追加(abi/README.md への短記)
受入基準
- quick(opt‑in)緑/回帰なし
- 既定OFFで既存挙動不変(Arc/RefCell は opt‑in API)