Crate zerogc[−][src]
Expand description
Zero overhead tracing garbage collection for rust, by abusing the borrow checker.
Features
- Easy to use, since
Gc<T>
isCopy
and coerces to a reference. - Absolutely zero overhead when modifying pointers, since
Gc<T>
isCopy
. - Implementation agnostic API
- Unsafe code has complete freedom to manipulate garbage collected pointers, and it doesn’t need to understand the distinction
- Uses rust’s lifetime system to ensure all roots are known at explicit safepoints, without any runtime overhead.
- Collection can only happen with an explicit
safepoint
call and has no overhead between these calls, - API supports moving objects (allowing copying/generational GCs)
Re-exports
pub use crate::vec::GcArray;
Modules
Implements a GcCell to allow mutating values inside garbage collected objects.
Dummy collector implementation for testing
The prelude for zergogc
,
containing a set of commonly used
types and macros.
The implementation of GcVec
Macros
Indicate its safe to begin a garbage collection (like safepoint!) and then “freeze” the specified context.
Indicate it’s safe to begin a garbage collection, while keeping the specified root alive.
Invoke the closure with a temporary GcContext, then perform a safepoint afterwards.
Implement [Trace] for a dynamically dispatched trait object
Unfreeze the context, allowing it to be used again
Unsafely implement GarbageCollected
for the specified type,
by acquiring a ‘lock’ in order to trace the underlying value.
Unsafely implement GarbageCollected
for the specified type,
by assuming it’s a ‘primitive’ and never needs to be traced.
Structs
A wrapper type that assumes its contents don’t need to be traced
A garbage collected pointer to a value.
Traits
Uniquely identifies the collector in case there are multiple collectors.
A type that can be traced via dynamic dispatch, specialized for a particular CollectorId.
Trait for binding GcHandles to contexts using GcBindHandle::bind_to
The context of garbage collection, which can be frozen at a safepoint.
Safely trigger a write barrier before writing to a garbage collected value.
Indicates that it’s safe to erase all GC lifetimes and change them to ’static (logically an ’unsafe)
A owned handle which points to a garbage collected object.
A system which supports creating handles to Gc references.
Changes all references to garbage collected objects to match a specific lifetime.
A marker type, indicating that a type can be safely allocated by a garbage collector.
A simple interface to allocating from a GcContext.
A garbage collector implementation.
Visits garbage collected objects
Marker types for types that don’t need to be traced
Indicates that a type can be traced by a garbage collector.
A type that can be safely traced/relocated without having to use a mutable reference