0.3
An enormous number of breaking API changes, too many to list, almost the entire
API has been rethought.
The credit goes mostly to others for the release, @Bale001, @Aaron1011,
@dragazo, and especially @moulins.
Release Highlights
- New
Arena
API that does not require macros and instead uses aRootable
trait and HRTBs for lifetime projection. - Methods on
Arena
to directly mutate the root type and map the root from one
type to another. - A new API for 'static roots that are held in smart pointers
(DynamicRootSet
). Gc
pointers can now point to DSTs, and there is anunsize!
macro for
unsizing coercions to replace the unstableUnsize
trait.- Weak pointers!
GcCell
has been replaced by explicit public lock types held withinGc
pointers with safe ways of mutating them.- Field projection on held lock types to allow for separate locks held within a
singleGc
pointer to be safely mutated. - Unsafe
Gc
pointer coercions to compatible pointee types. - Soundly get references to
Gc
types with&'gc
lifetime. - More ergonomic
Mutation
andCollection
context types. - Tons of correctness and soundness fixes.
This release also completely drops the gc-sequence
combinator crate.
Because of other API changes, anything you could do with gc-sequence
before
can almost certainly be expressed better either using the new 'static root API
or with the new map API. See this comment for a bit more info.