Jakub Kotur | fc1672b | 2020-12-21 17:28:14 +0100 | [diff] [blame] | 1 | # Crossbeam Epoch |
| 2 | |
| 3 | []( |
| 4 | https://github.com/crossbeam-rs/crossbeam/actions) |
Joel Galenson | 0d44092 | 2021-04-01 15:34:31 -0700 | [diff] [blame] | 5 | []( |
Jakub Kotur | fc1672b | 2020-12-21 17:28:14 +0100 | [diff] [blame] | 6 | https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-epoch#license) |
| 7 | []( |
| 8 | https://crates.io/crates/crossbeam-epoch) |
| 9 | []( |
| 10 | https://docs.rs/crossbeam-epoch) |
Jeff Vander Stoep | 5c39884 | 2022-12-08 15:36:59 +0100 | [diff] [blame] | 11 | []( |
Jakub Kotur | fc1672b | 2020-12-21 17:28:14 +0100 | [diff] [blame] | 12 | https://www.rust-lang.org) |
Joel Galenson | 08e1a73 | 2021-05-19 15:02:32 -0700 | [diff] [blame] | 13 | [](https://discord.com/invite/JXYwgWZ) |
Jakub Kotur | fc1672b | 2020-12-21 17:28:14 +0100 | [diff] [blame] | 14 | |
| 15 | This crate provides epoch-based garbage collection for building concurrent data structures. |
| 16 | |
| 17 | When a thread removes an object from a concurrent data structure, other threads |
| 18 | may be still using pointers to it at the same time, so it cannot be destroyed |
| 19 | immediately. Epoch-based GC is an efficient mechanism for deferring destruction of |
| 20 | shared objects until no pointers to them can exist. |
| 21 | |
| 22 | Everything in this crate except the global GC can be used in `no_std` environments, provided that |
Joel Galenson | 0d44092 | 2021-04-01 15:34:31 -0700 | [diff] [blame] | 23 | `alloc` feature is enabled. |
Jakub Kotur | fc1672b | 2020-12-21 17:28:14 +0100 | [diff] [blame] | 24 | |
| 25 | ## Usage |
| 26 | |
| 27 | Add this to your `Cargo.toml`: |
| 28 | |
| 29 | ```toml |
| 30 | [dependencies] |
| 31 | crossbeam-epoch = "0.9" |
| 32 | ``` |
| 33 | |
| 34 | ## Compatibility |
| 35 | |
| 36 | Crossbeam Epoch supports stable Rust releases going back at least six months, |
| 37 | and every time the minimum supported Rust version is increased, a new minor |
Jeff Vander Stoep | 5c39884 | 2022-12-08 15:36:59 +0100 | [diff] [blame] | 38 | version is released. Currently, the minimum supported Rust version is 1.38. |
Jakub Kotur | fc1672b | 2020-12-21 17:28:14 +0100 | [diff] [blame] | 39 | |
| 40 | ## License |
| 41 | |
| 42 | Licensed 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 | |
| 47 | at your option. |
| 48 | |
| 49 | #### Contribution |
| 50 | |
| 51 | Unless you explicitly state otherwise, any contribution intentionally submitted |
| 52 | for inclusion in the work by you, as defined in the Apache-2.0 license, shall be |
| 53 | dual licensed as above, without any additional terms or conditions. |