Skip to content

0.3

Compare
Choose a tag to compare
@kyren kyren released this 02 Jun 20:20
· 153 commits to master since this release

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 a Rootable
    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 an unsize! macro for
    unsizing coercions to replace the unstable Unsize trait.
  • Weak pointers!
  • GcCell has been replaced by explicit public lock types held within Gc
    pointers with safe ways of mutating them.
  • Field projection on held lock types to allow for separate locks held within a
    single Gc 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 and Collection 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.