How dshbox/cordis-rs works
Cordis is a typed runtime for long-lived, plugin-oriented Rust applications. An application prepares plugin configuration into typed input, admits a prepared plugin through a Context, and receives a FiberHandle for lifecycle control and disposal. Active plugins can register generation-owned resources, publish or require exact-realm Services, and communicate through explicitly routed typed Events. The optional Loader plans and resolves declarative plugin sources before lifecycle admission; cordis-timer adds generation-bound time operations. The graph follows the README and sampled source; unsampled subsystem wiring is shown only where documented.
Main entry points: context.rs Context · mod.rs Fiber lifecycle · dispatch.rs Event dispatch · lib.rs Loader API
Components 19
Application API
- Cordis facade
crates/cordis/src/lib.rs
Lifecycle runtime
- Context
crates/cordis-core/src/context.rs - Plugin contract
crates/cordis-core/src/plugin.rs - Fiber lifecycle
crates/cordis-core/src/fiber/mod.rs - Settle protocol
crates/cordis-core/src/fiber/inertia.rs - Fiber registry
crates/cordis-core/src/registry.rs
Runtime capabilities
- Service slots
crates/cordis-core/src/service.rs - Event dispatch
crates/cordis-core/src/events/dispatch.rs - Listener roles
crates/cordis-core/src/events/listener.rs - Effects cleanup
crates/cordis-core/src/effect.rs - Runtime observations
crates/cordis-core/src/observation.rs - Logging
crates/cordis-core/src/logger.rs
Optional extensions
- Loader API
crates/cordis-loader/src/lib.rs - Load plan
crates/cordis-loader/src/plan.rs - Plugin resolver
crates/cordis-loader/src/resolver.rs - Load handoff
crates/cordis-loader/src/handoff.rs - Timer operations
crates/cordis-timer/src/shapes.rs
Other components
- Application
- Tokio runtime
Connections 25
- Application → Cordis facade: uses API
- Cordis facade → Context: re-exports
- Application → Plugin contract: defines plugin
- Plugin contract → Context: prepares input
- Application → Context: spawns prepared
- Context → Fiber lifecycle: admits plugin
- Fiber lifecycle → Settle protocol: settles toward target
- Settle protocol → Service slots: checks dependencies
- Fiber lifecycle → Fiber registry: tracks lifecycle
- Context → Service slots: publishes or looks up
- Context → Event dispatch: registers and dispatches
- Event dispatch → Listener roles: invokes roles
- Fiber lifecycle → Effects cleanup: cleans generation
- Service slots → Runtime observations: publishes visibility
- Event dispatch → Runtime observations: publishes dispatch
- Context → Runtime observations: subscribes
- Context → Logging: configures logging
- Application → Loader API: configures loading
- Loader API → Load plan: builds plan
- Loader API → Plugin resolver: resolves entries
- Plugin resolver → Load handoff: provides prepared plugin
- Load handoff → Context: admits plugin
- Context → Timer operations: registers timer work
- Timer operations → Tokio runtime: schedules deadlines
- Timer operations → Effects cleanup: registers cleanup