Part of the core-rebuild epic — follows the shared rigor contract there.
Component
src/registry.rs (~156 LOC). The local name→ActorRef registration/lookup (the remote/DHT registry is a separate concern, #3).
Learning & discussion
Local-only registry: register a name, look it up, dedup on collision. The interesting part is registration races on the same name and lookup-during-register consistency.
Existing crates
papaya, dashmap, scc (#51) — lock-free / sharded concurrent maps.
Research — best algorithm/approach
Lock-free concurrent map trade-offs (papaya vs dashmap vs scc — read-heavy vs write-heavy, memory reclamation); register-once semantics; dedup on collision.
Testing — hard as fuck
Linearizability (concurrent register/lookup/unregister with snapshot-consistency assertions), defensive boundary (duplicate name, unregister-then-lookup), sequence. DST over concurrent registration races. Mutation: cargo-mutants, zero survivors.
Absorbs
#51 (lock-free local registry — papaya/dashmap).
Part of the core-rebuild epic — follows the shared rigor contract there.
Component
src/registry.rs(~156 LOC). The local name→ActorRefregistration/lookup (the remote/DHT registry is a separate concern, #3).Learning & discussion
Local-only registry: register a name, look it up, dedup on collision. The interesting part is registration races on the same name and lookup-during-register consistency.
Existing crates
papaya,dashmap,scc(#51) — lock-free / sharded concurrent maps.Research — best algorithm/approach
Lock-free concurrent map trade-offs (papaya vs dashmap vs scc — read-heavy vs write-heavy, memory reclamation); register-once semantics; dedup on collision.
Testing — hard as fuck
Linearizability (concurrent register/lookup/unregister with snapshot-consistency assertions), defensive boundary (duplicate name, unregister-then-lookup), sequence. DST over concurrent registration races. Mutation:
cargo-mutants, zero survivors.Absorbs
#51 (lock-free local registry — papaya/dashmap).