# THIS CRATE IS WORK IN PROGRESS # Debra Distributed epoch-based memory reclamation [![Build Status](https://travis-ci.com/oliver-giersch/debra.svg?branch=master)]( https://travis-ci.com/oliver-giersch/debra) [![Latest version](https://img.shields.io/crates/v/debra.svg)](https://crates.io/crates/debra) [![Documentation](https://docs.rs/debra/badge.svg)](https://docs.rs/debra) [![License](https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg)]( https://github.com/oliver-giersch/debra) [![Rust 1.36+](https://img.shields.io/badge/rust-1.36.0-lightgray.svg)]( https://www.rust-lang.org) Many concurrent lock-free data structures require an additional minimal (also lock-free) garbage collector, which determines, when a removed value can be safely de-allocated. This can not be determined statically, since many threads could potentially still access previously created references to the removed value. This crate provides a simple and (mostly) safe interface for interacting with the DEBRA [1] memory reclamation scheme. [[1]](https://dl.acm.org/citation.cfm?id=2767436) Trevor Brown, "Reclaiming memory for lock-free data structures: There has to be a better way", in ACM, 2015 ## Usage Add this to your `Cargo.toml` ``` [dependencies] debra = "0.1" ``` ## Minimum Supported Rust Version (MSRV) The minimum supported Rust version for this crate is 1.36.0. ## Comparison with [crossbeam-epoch](https://crates.io/crates/crossbeam-epoch) ...TODO... ## Examples See [tests/treiber.rs](tests/treiber.rs) for an implementation of Treiber's stack using `debra` for memory reclamation. ## Features ...TODO... (bag-size-1 through bag-size-512) ## License Debra is distributed under the terms of both the MIT license and the Apache License (Version 2.0). See [LICENSE-APACHE](LICENSE-APACHE) and [LICENSE-MIT](LICENSE-MIT) for details.