blob: 2840ea7925eece955e87a5a5b1b3cb3a44af4f55 [file] [log] [blame] [view]
Jakub Koturfc1672b2020-12-21 17:28:14 +01001# Crossbeam Epoch
2
3[![Build Status](https://github.com/crossbeam-rs/crossbeam/workflows/CI/badge.svg)](
4https://github.com/crossbeam-rs/crossbeam/actions)
Joel Galenson0d440922021-04-01 15:34:31 -07005[![License](https://img.shields.io/badge/license-MIT_OR_Apache--2.0-blue.svg)](
Jakub Koturfc1672b2020-12-21 17:28:14 +01006https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-epoch#license)
7[![Cargo](https://img.shields.io/crates/v/crossbeam-epoch.svg)](
8https://crates.io/crates/crossbeam-epoch)
9[![Documentation](https://docs.rs/crossbeam-epoch/badge.svg)](
10https://docs.rs/crossbeam-epoch)
Jeff Vander Stoep5c398842022-12-08 15:36:59 +010011[![Rust 1.38+](https://img.shields.io/badge/rust-1.38+-lightgray.svg)](
Jakub Koturfc1672b2020-12-21 17:28:14 +010012https://www.rust-lang.org)
Joel Galenson08e1a732021-05-19 15:02:32 -070013[![chat](https://img.shields.io/discord/569610676205781012.svg?logo=discord)](https://discord.com/invite/JXYwgWZ)
Jakub Koturfc1672b2020-12-21 17:28:14 +010014
15This crate provides epoch-based garbage collection for building concurrent data structures.
16
17When a thread removes an object from a concurrent data structure, other threads
18may be still using pointers to it at the same time, so it cannot be destroyed
19immediately. Epoch-based GC is an efficient mechanism for deferring destruction of
20shared objects until no pointers to them can exist.
21
22Everything in this crate except the global GC can be used in `no_std` environments, provided that
Joel Galenson0d440922021-04-01 15:34:31 -070023`alloc` feature is enabled.
Jakub Koturfc1672b2020-12-21 17:28:14 +010024
25## Usage
26
27Add this to your `Cargo.toml`:
28
29```toml
30[dependencies]
31crossbeam-epoch = "0.9"
32```
33
34## Compatibility
35
36Crossbeam Epoch supports stable Rust releases going back at least six months,
37and every time the minimum supported Rust version is increased, a new minor
Jeff Vander Stoep5c398842022-12-08 15:36:59 +010038version is released. Currently, the minimum supported Rust version is 1.38.
Jakub Koturfc1672b2020-12-21 17:28:14 +010039
40## License
41
42Licensed under either of
43
44 * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
45 * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
46
47at your option.
48
49#### Contribution
50
51Unless you explicitly state otherwise, any contribution intentionally submitted
52for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
53dual licensed as above, without any additional terms or conditions.