Releases: frengor/rust-cc
Releases · frengor/rust-cc
Release v0.6.2
Release v0.6.1
- 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
- Replaced
Cc::into_inner
withCc::try_unwrap
, which now correctly handles weak pointers - Removed
Cc::is_unique
Internal changes:
- Improvements to the cleaners implementation
Release v0.5.0
- 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:
- Derived
SmartPointer
forCc
Internal changes:
- Lists have been reworked: now
POSSIBLE_CYCLES
doesn't require aRefCell
anymore - A queue has been added to implement the breadth-first tracing
Release v0.4.0
- Improved the ergonomics of weak pointers:
- Removed
Weakable
andWeakableCc
- Added
Weak::new()
- Renamed the
weak-ptr
Cargo feature toweak-ptrs
- Removed
- Implemented common traits like
Display
,PartialEq
,Eq
,Hash
, etc. - Cleaned up the code and smaller improvements
Internal changes:
- Renamed
CleanerFn
toCleaningAction
- Renamed
WeakMetadata
toWeakCounterMarker
- A mutable borrow is now taken in the
RefCell
Trace implementation instead of an immutable borrow
Release v0.3.0
- Added cleaners and weak pointers
- Added the derive macros for
Trace
andFinalize
- Added no-std support
- Improved documentation
- Removed invalid
Cc
s and reworkedCc::new_cyclic
to use weak pointers - Countless small fixes and improvements
Internal changes:
- Use Iai-Callgrind instead of Iai for running benchmarks in CI
Release v0.2.0
- Finalization is now optional behind the feature
finalization
(enabled by default).
It's still necessary to implement theFinalize
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 ofFinalize
won't ever be called. - Renamed
state::execution_count
tostate::executions_count
. - The
state::allocated_bytes
andstate::executions_count
functions now return aResult
. - 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 invalidCc
. The currently only source of invalidCc
s is the parameter of the closure/function accepted bynew_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 andMark::TraceCounting
has been renamed toMark::Traced
.- Reduced the number of calls to
state
andtry_state
. - Replaced the
RefCell
in the state's thread local withCell
s.
Release v0.1.1
- Fix the pessimistic quadratic behaviour of the Lins algorithm
- Use Iai for running benchmarks on CI
- Rename
all-non-nightly
feature tofull
- Put costly debug assertions behind the new
pedantic-debug-assertions
feature - Minor improvements and optimizations
Internal changes:
- Add interior mutability to CounterMarker by @LegionMammal978
- Implement
Iterator
forList
Release v0.1.0
First release of rust-cc
.