File: README.md
NOTE: This crate has been moved into the [crossbeam](https://github.com/crossbeam-rs/crossbeam) repository.
Do not use this repository.
Epoch-based garbage collection
This crate provides epoch-based garbage collection for use in concurrent data structures.
If a thread removes a node from a concurrent data structure, other threads
may still have pointers to that node, so it cannot be immediately destructed.
Epoch GC allows deferring destruction until it becomes safe to do so.
Usage
Add this to your Cargo.toml:
[dependencies]
crossbeam-epoch = "0.6"Next, add this to your crate:
extern crate crossbeam_epoch as epoch;The minimum required Rust version is 1.26.
License
Licensed under the terms of MIT license and the Apache License (Version 2.0).
See LICENSE-MIT and LICENSE-APACHE for details.
File: CHANGELOG.md
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
and this project adheres to Semantic Versioning.
[Unreleased]
[0.6.0] - 2018-09-11
Changed
defernow requiresF: Send + 'static.- Bump the minimum Rust version to 1.26.
- Pinning while TLS is tearing down does not fail anymore.
- Rename
HandletoLocalHandle.
Added
defer_uncheckedanddefer_destroy.
Removed
- Remove
Cloneimpl forLocalHandle.
[0.5.2] - 2018-08-02
Changed
- Update
crossbeam-utilsto0.5.
[0.5.1] - 2018-07-20
Changed
- Fix compatibility with the latest Rust nightly.
[0.5.0] - 2018-06-12
Changed
- Update
crossbeam-utilsto0.4. - Specify the minimum Rust version to
1.25.0.
[0.4.3] - 2018-06-12
Changed
- Downgrade
crossbeam-utilsto0.3because it was a breaking change.
[0.4.2] - 2018-06-12
Added
- Expose the
Pointertrait. - Warn missing docs and missing debug impls.
Changed
- Update
crossbeam-utilsto0.4.
[0.4.1] - 2018-03-20
Added
- Add
Debugimpls forCollector,Handle, andGuard. - Add
load_consumetoAtomic.
Changed
- Rename
Collector::handletoCollector::register.
Fixed
- Remove the
Sendimplementation forHandle(this was a bug). OnlyCollectors can be shared among multiple threads, whileHandles andGuards must stay within the thread in which they were created.
[0.4.0] - 2018-02-10
Changed
- Update dependencies.
Removed
- Remove support for Rust 1.13.
[0.3.0] - 2018-02-10
Added
- Add support for Rust 1.13.
Changed
- Improve documentation for CAS.
[0.2.0] - 2017-11-29
Added
- Add method
Owned::into_box.
Changed
- Fix a use-after-free bug in
Local::finalize. - Fix an ordering bug in
Global::push_bag. - Fix a bug in calculating distance between epochs.
Removed
- Remove
impl<T> Into> for Owned<T>.
0.1.0 - 2017-11-26
Added
- First version of the new epoch-based GC.
File: .travis.yml
language: rust
rust:
- stable
- beta
- nightly
- 1.26.0
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise
- llvm-toolchain-precise-3.8
packages:
- llvm-3.8
- llvm-3.8-dev
- clang-3.8
- clang-3.8-dev
script:
cargo build
cargo build --release
cargo build --no-default-features
cargo build --release --no-default-features
cargo test
cargo test --release
|
if [ $TRAVIS_RUST_VERSION == nightly ]; then
cargo build --features nightly --no-default-features
cargo build --features nightly --release --no-default-features
fi|
if [ $TRAVIS_RUST_VERSION == nightly ]; then
cargo test --features nightly
fi|
if [[ $TRAVIS_RUST_VERSION == nightly ]]; then
cargo test --features nightly --release
fi|
if [[ $TRAVIS_RUST_VERSION == nightly ]]; then
ASAN_OPTIONS="detect_odr_violation=0 detect_leaks=0"
RUSTFLAGS="-Z sanitizer=address"
cargo run
--target x86_64-unknown-linux-gnu
--features sanitize,nightly
--example sanitize
fi|
if [[ $TRAVIS_RUST_VERSION == nightly ]]; then
ASAN_OPTIONS="detect_odr_violation=0 detect_leaks=0"
RUSTFLAGS="-Z sanitizer=address"
cargo run
--release
--target x86_64-unknown-linux-gnu
--features sanitize,nightly
--example sanitize
fi