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_innerwithCc::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-callgrindto 1.12.2 - Minor improvements
Nightly only:
- Derived
SmartPointerforCc
Internal changes:
- Lists have been reworked: now
POSSIBLE_CYCLESdoesn't require aRefCellanymore - A queue has been added to implement the breadth-first tracing
Release v0.4.0
- Improved the ergonomics of weak pointers:
- Removed
WeakableandWeakableCc - Added
Weak::new() - Renamed the
weak-ptrCargo feature toweak-ptrs
- Removed
- Implemented common traits like
Display,PartialEq,Eq,Hash, etc. - Cleaned up the code and smaller improvements
Internal changes:
- Renamed
CleanerFntoCleaningAction - Renamed
WeakMetadatatoWeakCounterMarker - A mutable borrow is now taken in the
RefCellTrace implementation instead of an immutable borrow
Release v0.3.0
- Added cleaners and weak pointers
- Added the derive macros for
TraceandFinalize - Added no-std support
- Improved documentation
- Removed invalid
Ccs and reworkedCc::new_cyclicto 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 theFinalizetrait, 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 ofFinalizewon't ever be called. - Renamed
state::execution_counttostate::executions_count. - The
state::allocated_bytesandstate::executions_countfunctions 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 invalidCcs 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::TraceRootshas been removed andMark::TraceCountinghas been renamed toMark::Traced.- Reduced the number of calls to
stateandtry_state. - Replaced the
RefCellin the state's thread local withCells.
Release v0.1.1
- Fix the pessimistic quadratic behaviour of the Lins algorithm
- Use Iai for running benchmarks on CI
- Rename
all-non-nightlyfeature tofull - Put costly debug assertions behind the new
pedantic-debug-assertionsfeature - Minor improvements and optimizations
Internal changes:
- Add interior mutability to CounterMarker by @LegionMammal978
- Implement
IteratorforList
Release v0.1.0
First release of rust-cc.