From 4d05f198195a196ed7d4e93b4ca01cebd32ff4b2 Mon Sep 17 00:00:00 2001 From: kyren Date: Fri, 2 Jun 2023 16:00:06 -0400 Subject: [PATCH] prepare for 0.3 release --- CHANGELOG.md | 33 +++++++++++++++++++++++++++++++++ src/gc-arena-derive/Cargo.toml | 2 +- src/gc-arena/Cargo.toml | 4 ++-- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41114d8..c29eaa5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,36 @@ +## [0.3.0] + +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](https:// github.com/kyren/ gc-arena/ +pull/50#issuecomment-1538421347) for a bit more info. + ## [0.2.2] - No changes, fixing a release snafu with cargo-release diff --git a/src/gc-arena-derive/Cargo.toml b/src/gc-arena-derive/Cargo.toml index 8cb25df..16972e2 100644 --- a/src/gc-arena-derive/Cargo.toml +++ b/src/gc-arena-derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gc-arena-derive" -version = "0.2.2" +version = "0.3.0" authors = ["kyren "] edition = "2018" license = "MIT" diff --git a/src/gc-arena/Cargo.toml b/src/gc-arena/Cargo.toml index e17b4ef..fb6919a 100644 --- a/src/gc-arena/Cargo.toml +++ b/src/gc-arena/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gc-arena" -version = "0.2.2" +version = "0.3.0" authors = ["kyren "] edition = "2018" license = "MIT" @@ -13,7 +13,7 @@ default = ["std"] std = [] [dependencies] -gc-arena-derive = { path = "../gc-arena-derive", version = "0.2.2"} +gc-arena-derive = { path = "../gc-arena-derive", version = "0.3.0"} sptr = "0.3.2" [dev-dependencies]