docs.rs failed to build kovan-0.1.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build:
kovan-0.1.6
What is Kovan?
Kovan solves the hardest problem in lock-free programming: when is it safe to free memory?
When multiple threads access shared data without locks, you can't just drop() or free() - another thread might still be using it. Kovan tracks this automatically with zero overhead on reads.
Why Kovan?
- Zero read overhead: Just one atomic load, nothing else
- Bounded memory: Never grows unbounded like epoch-based schemes
- Simple API: Three functions:
pin(),load(),retire()
Quick Start
[]
= "0.1"
Basic Usage
use ;
use Ordering;
// Create shared atomic pointer
let shared = new;
// Read safely
let guard = pin; // Enter critical section
let ptr = shared.load;
unsafe
drop; // Exit critical section
// Update safely
let guard = pin;
let new_value = Boxinto_raw;
let old = shared.swap;
// Schedule old value for reclamation
if !old.is_null
How It Works
pin()- Enter critical section, get a guardload()- Read pointer (zero overhead!)retire()- Schedule memory for safe reclamation
The guard ensures any pointers you load stay valid. When all guards are dropped, retired memory is freed automatically.
Examples
See the examples/ directory for complete implementations:
simple.rs- Basic usage patternstreiber_stack.rs- Lock-free stack implementation
Run examples:
Key Rules
- Always use a guard when accessing shared pointers
- Retire, don't drop - use
retire()instead ofBox::from_raw() - Add
RetiredNodeas first field in your structs
Performance
- 10x faster than naive implementations
- Competitive with Crossbeam-Epoch on reads
- Better memory bounds than epoch-based schemes
Optional Features
# Nightly optimizations (~5% faster)
= { = "0.1", = ["nightly"] }
# Handle stalled threads
= { = "0.1", = ["robust"] }
License
Licensed under either of Apache License 2.0 or MIT license at your option.