1.0.0-beta.2
[anymap] / CHANGELOG.md
index 1e7dbff0e79fca4530d04e561ee100288bcc6557..5fad564cbc4649cef409e28381dd1247743a3bab 100644 (file)
@@ -1,25 +1,61 @@
 # 1.0.0 (unreleased)
 
 # 1.0.0 (unreleased)
 
-- **Breaking change:** `anymap::any` flattened out of existence:
-  `anymap::any::{Any, CloneAny}` are now found at `anymap::{Any, CloneAny}`.
+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.
+    (So `Any + Sync` is gone, but `Any`, `Any + Send` and `Any + Send + Sync`
+    remain, plus the same set for `CloneAny`.)
+
+- `anymap::any::CloneAny` moved to `anymap::CloneAny`.
+  With nothing public left in `anymap::any`, it is removed.
 
 - Relicensed from MIT/Apache-2.0 to BlueOak-1.0.0/MIT/Apache-2.0.
 
 
 - 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.
+
+- 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.
 
 
-- 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.
+- Implemented `Default` on `Map` (not just on `RawMap`).
 
 
-- Implement `Default` on `Map` (not just on `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.
 
 
 - 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)
 # 0.12.1 (2017-01-20)
 
 - Remove superfluous Clone bound on Entry methods (#26)