seize icon indicating copy to clipboard operation
seize copied to clipboard

Fast, efficient, and robust memory reclamation for Rust.

Results 11 seize issues
Sort by recently updated
recently updated
newest added

Applications that are constantly entering and leaving are marking threads as active/inactive for no reason; there is little benefit if threads are active 99% of the time. We could instead...

Rename `flush` to `repin` (or a better name?) and add a real flush operation that tries to retire the local batch to be more consistent with `crossbeam-epoch`'s API.

We can support dynamically sized types by generalizing `Linked` to `unsafe trait AsLink`.

See https://github.com/jonhoo/flurry/issues/80#issuecomment-1082309088.

The difference between `guard.retire` and `collector.retire` (that `guard.retire` is deferred till the guard is dropped) is too subtle. One of the two should probably be renamed.

Should unprotected guards still defer reclamation until the guard is dropped? This would avoid causing compatibility issues and accidental unsoundness. [`crossbeam-epoch`](https://docs.rs/crossbeam-epoch/latest/crossbeam_epoch/struct.Guard.html#method.defer_destroy) retires immediately, as a reference point.

https://dl.acm.org/doi/pdf/10.1145/3627535.3638491 suggests that batch freeing bypasses thread-local allocator buffers, and freeing from a remote thread, which is extremely expensive (note that mimalloc avoids this problems, but about every other allocator...

performance

Recursive calls to `retire` inside a reclaimer were previously unsound because mutable pointers to local batches were held during reclamation. This PR also adds a `reclaim_all` function, which can be...

It can be useful, rarely, to have access to the `Collector` inside of the reclaimer, such as retiring a `Deferred` after reclamation.

I recently tracked down a bug in some code caused by my incorrect assumption about `Collector::clone`: I assumed it would behave like an `Arc` in maintaining a reference to the...