Foundation layer used throughout the vprogs codebase. This layer has zero dependencies on other vprogs domains.
vprogs-core-types
Foundational trait definitions that enable the scheduling system's genericity:
- ResourceId - Trait for resource identifiers (serialization to/from bytes)
- Transaction - Trait for transactions (provides accessed resources)
- AccessMetadata - Trait for access metadata (id + access type)
- AccessType - Enum for read/write access classification
These traits allow the scheduling layer to work with any concrete types that implement them.
vprogs-core-atomics
Concurrent atomic wrappers for lock-free programming:
- AtomicArc - Atomic reference-counted pointer
- AtomicAsyncLatch - Async-aware latch for signaling completion
- AtomicEnum - Atomic enum wrapper using discriminant mapping
vprogs-core-macros
Procedural macros for code generation:
- #[smart_pointer] - Generates a wrapper struct with
Derefimplementation and aReftype alias forArc<Data>patterns
┌─────────────────────────────────────────┐
│ Layer 3: scheduling │
├─────────────────────────────────────────┤
│ Layer 2: state │
├─────────────────────────────────────────┤
│ Layer 1: storage │
├─────────────────────────────────────────┤
│ Layer 0: core ◄── You are here │
└─────────────────────────────────────────┘
The core layer is the foundation. All other layers may depend on core, but core depends on no other vprogs domains.