swactor/crates/std/Cargo.toml

13 lines
226 B
TOML
Raw Normal View History

feat: extract swactor-std crate with RuntimeExtension hook pattern Debloat the core swactor crate by moving higher-level features to a new swactor-std crate, leaving core with only the essential actor primitives (spawn, send, stop, timers, lifecycle hooks). Phase 1: Move Supervisor + Router to swactor-std - Supervisor (ChildSpec, RestartPolicy, SupervisorStrategy) and Router (RoutingStrategy) extracted to crates/std/ - ~465 lines removed from src/actor.rs Phase 2: Remove restart fields from Actor<A> - Actor<A> slimmed to { inner: A } — no restart_factory, max_restarts - Removed spawn_restartable from Ctx and Runtime - Simplified panic handler: always poison, never inline restart - Supervision-based restart via Supervisor in swactor-std Phase 3: RuntimeExtension trait + registry extraction - New src/extension.rs: RuntimeExtension trait (on_actor_death, cleanup_dead, as_any) — single hybrid hook for lifecycle events - ContextInner slimmed from 11 methods to 5 (removed 7 registry methods, added extension()) - Ctx slimmed: removed all registry methods, added extension() accessor - Runtime: removed 3 registry fields + 9 methods, added with_extension() builder + extension() accessor - TickContext: replaced 3 registry fields with extension hook - tick_once phase 7: uses ext.on_actor_death() + ext.cleanup_dead() - Moved NameRegistry, MonitorRegistry, GroupRegistry from delivery.rs to swactor-std - StdExtension wraps the 3 registries, implements RuntimeExtension - Extension traits: CtxMonitoring, CtxNaming, CtxGroups on Ctx; RuntimeNaming, RuntimeGroups on Runtime - Down, StopReason, MonitorRef, handle_down remain in core - AddrMap/AddrSet/AddrBuildHasher made public, re-exported - MonitorRef::from_raw(u64) added for cross-crate construction All 140 tests pass. Benchmarks updated. Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 06:59:29 +00:00
[package]
name = "swactor-std"
version = "0.1.0"
edition = "2024"
[features]
default = ["getrandom"]
getrandom = ["dep:getrandom"]
[dependencies]
swactor = { path = "../.." }
getrandom = { version = "0.2", optional = true }