Skip to content

Releases: frengor/rust-cc

Release v0.6.2

12 Nov 05:21
8ff4a9f
Compare
Choose a tag to compare
  • Replaced thiserror-core with thiserror 2.0
  • Small update to the Trace documentation

Nightly only:

  • Replaced derive(SmartPointer) with derive(CoercePointee)

Release v0.6.1

17 Sep 00:47
e6f2f89
Compare
Choose a tag to compare
  • Fix use-after-free related to weak pointers. If you didn't use weak pointers or cleaners, you are not affected.

Release v0.6.0

27 Aug 04:38
aa024b4
Compare
Choose a tag to compare
  • Replaced Cc::into_inner with Cc::try_unwrap, which now correctly handles weak pointers
  • Removed Cc::is_unique

Internal changes:

  • Improvements to the cleaners implementation

Release v0.5.0

06 Aug 08:14
449c8cd
Compare
Choose a tag to compare
  • Implemented tracing doing a breadth-first traversal of the heap, making the collector not overflow the stack when analyzing very deep and nested structures
  • Improved performance when weak pointers are enabled
  • Updated iai-callgrind to 1.12.2
  • Minor improvements

Nightly only:

Internal changes:

  • Lists have been reworked: now POSSIBLE_CYCLES doesn't require a RefCell anymore
  • A queue has been added to implement the breadth-first tracing

Release v0.4.0

29 Jul 19:16
b61b5ed
Compare
Choose a tag to compare
  • Improved the ergonomics of weak pointers:
    • Removed Weakable and WeakableCc
    • Added Weak::new()
    • Renamed the weak-ptr Cargo feature to weak-ptrs
  • Implemented common traits like Display, PartialEq, Eq, Hash, etc.
  • Cleaned up the code and smaller improvements

Internal changes:

  • Renamed CleanerFn to CleaningAction
  • Renamed WeakMetadata to WeakCounterMarker
  • A mutable borrow is now taken in the RefCell Trace implementation instead of an immutable borrow

Release v0.3.0

09 Jul 16:31
f47fb5e
Compare
Choose a tag to compare
  • Added cleaners and weak pointers
  • Added the derive macros for Trace and Finalize
  • Added no-std support
  • Improved documentation
  • Removed invalid Ccs and reworked Cc::new_cyclic to use weak pointers
  • Countless small fixes and improvements

Internal changes:

Release v0.2.0

25 May 11:59
v0.2.0
1fd29cb
Compare
Choose a tag to compare
  • Finalization is now optional behind the feature finalization (enabled by default).
    It's still necessary to implement the Finalize trait, even though finalization isn't enabled, in order to avoid issues when multiple crates enables different features (see here for an example of such an issue). If finalization is not enabled, simply the implementation of Finalize won't ever be called.
  • Renamed state::execution_count to state::executions_count.
  • The state::allocated_bytes and state::executions_count functions now return a Result.
  • Huge improvements and optimizations (from -6% to -18%, see benchmarks).

Fixes:

  • Fixed unsoundness when using new_cyclic: it was possible to make the implementation of some methods to take a reference to partially uninitialized data when called on an invalid Cc. The currently only source of invalid Ccs is the parameter of the closure/function accepted by new_cyclic, so this shouldn't affect anyone not using it. This is one of the few things that MIRI doesn't check, so it went unnoticed until now.

Internal changes:

  • Mark::TraceRoots has been removed and Mark::TraceCounting has been renamed to Mark::Traced.
  • Reduced the number of calls to state and try_state.
  • Replaced the RefCell in the state's thread local with Cells.

Release v0.1.1

14 Apr 17:53
23d03fd
Compare
Choose a tag to compare
  • Fix the pessimistic quadratic behaviour of the Lins algorithm
  • Use Iai for running benchmarks on CI
  • Rename all-non-nightly feature to full
  • Put costly debug assertions behind the new pedantic-debug-assertions feature
  • Minor improvements and optimizations

Internal changes:

Release v0.1.0

18 Mar 04:22
68cc73a
Compare
Choose a tag to compare

First release of rust-cc.