X-Git-Url: https://git.chrismorgan.info/anymap/blobdiff_plain/8bc7c76088639ab3a65a642f5d79ce20ef20e2f4..HEAD:/CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md index bb19bc9..5fad564 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,24 @@ # 1.0.0 (unreleased) -- Removed `anymap::any::Any` in favour of just plain `std::any::Any`, since its +Planned once the dust of 1.0.0-beta.1 settles, since 1.0.0-beta.1 ended up +being bigger than I’d earlier intended. + +# 1.0.0-beta.2 (unreleased) + +- Fixed the broken `Extend` implementation added in 1.0.0-beta.1. + +- Split the hashbrown implementation into a new module, `hashbrown`: + std and hashbrown can now coexist completely peacefully, + with `anymap::Map` being powered by `std::collections::hash_map`, + and `anymap::hashbrown::Map` being powered by `hashbrown::hash_map`. + The `raw_hash_map` alias, provided in 1.0.0-beta.1 because of the ambiguity + of what backed `anymap::Map`, is removed as superfluous and useless. + `RawMap` remains, despite not being *required*, as an ergonomic improvement. + With this, we’re back to proper completely additive Cargo features. + +# 1.0.0-beta.1 (2022-01-25) + +- Removed `anymap::any::Any` in favour of just plain `core::any::Any`, since its `Send`/`Sync` story is now long stable. - This loses `Any + Sync`. `CloneAny + Sync` is also removed for consistency. @@ -12,24 +30,32 @@ - Relicensed from MIT/Apache-2.0 to BlueOak-1.0.0/MIT/Apache-2.0. -- Increased the minimum supported version of Rust from 1.7.0 to 1.34.0. +- Increased the minimum supported version of Rust from 1.7.0 to 1.36.0. + +- no_std is now possible in the usual way (default Cargo feature 'std'), + depending on alloc and hashbrown. -- Remove `bench` Cargo feature (by shifting benchmarks out of `src/lib.rs` into - `benches/bench.rs`; it still won’t run on anything but nightly, but that - don’t signify). Technically a [breaking-change], but it was something for - development only, so I’m not in the slightest bit concerned by it. +- Removed the `bench` Cargo feature which was mostly to work around historical + Cargo limitations, but was solved by moving benchmarks from `src/lib.rs` to + `benches/bench.rs` even before those limitations were lifted. The benchmarks + still won’t run on anything but nightly, but that don’t signify. -- Implement `Default` on `Map` (not just on `RawMap`) +- Implemented `Default` on `Map` (not just on `RawMap`). -- The implementation of `Into>` for `Map` has been - replaced with the more general `From>` for `RawMap`. +- Added `Entry::{or_default, and_modify}` (std::collections::hash_map parity). + +- Removed the `anymap::raw` wrapper layer around `std::collections::hash_map`, + in favour of exposing the raw `HashMap` directly. I think there was a reason + I did it that seven years ago, but I think that reason may have dissolved by + now, and I can’t think of it and I don’t like the particular safe + `as_mut`/unsafe insert approach that I used. Because of the hashbrown stuff, + I have retained `anymap::RawMap` is an alias, and `anymap::raw_hash_map` too. + The end result of this is that raw access can finally access things that have + stabilised since Rust 1.7.0, and we’ll no longer need to play catch-up. - Worked around the spurious `where_clauses_object_safety` future-compatibility lint that has been raised since mid-2018. If you put `#![allow(where_clauses_object_safety)]` on your binary crates for this reason, you can remove it. -I don’t plan for there to be any real changes from 0.12.1; -it should be just a bit of housecleaning and a version bump. - # 0.12.1 (2017-01-20) - Remove superfluous Clone bound on Entry methods (#26)