crossbeam-epoch Documentation

Epoch-based garbage collection

82 stars Rust Rust 3 files ยท ~1,519 tokens
RAW Doc

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:

toml
[dependencies]
crossbeam-epoch = "0.6"

Next, add this to your crate:

rust
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

  • defer now requires F: Send + 'static.
  • Bump the minimum Rust version to 1.26.
  • Pinning while TLS is tearing down does not fail anymore.
  • Rename Handle to LocalHandle.

Added

  • defer_unchecked and defer_destroy.

Removed

  • Remove Clone impl for LocalHandle.

[0.5.2] - 2018-08-02

Changed

  • Update crossbeam-utils to 0.5.

[0.5.1] - 2018-07-20

Changed

  • Fix compatibility with the latest Rust nightly.

[0.5.0] - 2018-06-12

Changed

  • Update crossbeam-utils to 0.4.
  • Specify the minimum Rust version to 1.25.0.

[0.4.3] - 2018-06-12

Changed

  • Downgrade crossbeam-utils to 0.3 because it was a breaking change.

[0.4.2] - 2018-06-12

Added

  • Expose the Pointer trait.
  • Warn missing docs and missing debug impls.

Changed

  • Update crossbeam-utils to 0.4.

[0.4.1] - 2018-03-20

Added

  • Add Debug impls for Collector, Handle, and Guard.
  • Add load_consume to Atomic.

Changed

  • Rename Collector::handle to Collector::register.

Fixed

  • Remove the Send implementation for Handle (this was a bug). Only
    Collectors can be shared among multiple threads, while Handles and
    Guards 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