3 - Removed
`anymap::any::Any` in favour of just plain
`core::any::Any`, since its
4 `Send`/
`Sync` story is now long stable.
6 - This loses
`Any + Sync`.
`CloneAny + Sync` is also removed for consistency.
7 (So
`Any + Sync` is gone, but
`Any`,
`Any + Send` and
`Any + Send + Sync`
8 remain, plus the same set for
`CloneAny`.)
10 - `anymap::any::CloneAny` moved to
`anymap::CloneAny`.
11 With nothing public left in
`anymap::any`, it is removed.
13 - Relicensed from MIT/Apache-
2.0 to BlueOak-
1.0.0/MIT/Apache-
2.0.
15 - Increased the minimum supported version of Rust from
1.7.0 to
1.36.0.
17 - no_std is now possible in the usual way (default Cargo feature 'std'),
18 depending on alloc and hashbrown.
20 - Removed the
`bench` Cargo feature which was mostly to work around historical
21 Cargo limitations, but was solved by moving benchmarks from
`src/lib.rs` to
22 `benches/bench.rs` even before those limitations were lifted. The benchmarks
23 still won’t run on anything but nightly, but that don’t signify.
25 - Implemented
`Default` on
`Map` (not just on
`RawMap`).
27 - Removed the
`anymap::raw` wrapper layer around
`std::collections::hash_map`,
28 in favour of exposing the raw
`HashMap` directly. I think there was a reason
29 I did it that seven years ago, but I think that reason may have dissolved by
30 now, and I can’t think of it and I don’t like the particular safe
31 `as_mut`/unsafe insert approach that I used. Because of the hashbrown stuff,
32 I have retained
`anymap::RawMap` is an alias, and
`anymap::raw_hash_map` too.
33 The end result of this is that raw access can finally access things that have
34 stabilised since Rust
1.7.0, and we’ll no longer need to play catch-up.
36 - Worked around the spurious
`where_clauses_object_safety` future-compatibility lint that has been raised since mid-
2018.
37 If you put
`#![allow(where_clauses_object_safety)]` on your binary crates for this reason, you can remove it.
39 I don’t plan for there to be any real changes from
0.12.1;
40 it should be just a bit of housecleaning and a version bump.
44 - Remove superfluous Clone bound on Entry methods (#
26)
45 - Consistent application of
`#[inline]` where it should be
46 - Fix bad performance (see
724f94758def9f71ad27ff49e47e908a431c2728 for details)
50 - Ungate
`drain` iterator (stable from Rust
1.6.0)
51 - Ungate efficient hashing (stable from Rust
1.7.0)
52 - Remove
`unstable` Cargo feature (in favour of a
`bench` feature for benchmarking)
56 - Rust warning updates only
60 - Unstable Rust compatibility updates
64 - Support concurrent maps (
`Send + Sync` bound)
65 - Rename
`nightly` feature to
`unstable`
66 - Implement
`Debug` for
`Map` and
`RawMap`
67 - Replace
`clone` Cargo feature with arcane DST magicks
69 # Older releases (from the initial code on 2014-06-12 to 0.10.3 on 2015-04-18)
71 I’m not giving a changelog for these artefacts of ancient history.
72 If you really care you can look through the Git history easily enough.
73 Most of the releases were just compensating for changes to the language
74 (that being before Rust
1.0; yes, this crate has been around for a while).
76 I do think that [
`src/lib.rs` in the first commit] is a work of art,
77 a thing of great beauty worth looking at; its simplicity is delightful,
78 and it doesn’t even need to contain any unsafe code.
80 [
`src/lib.rs` in the first commit]: https://github.com/chris-morgan/anymap/tree/a294948f57dee47bb284d6a3ae1b8f61a902a03c/src/lib.rs