• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Version 1.0.7
2=============
3
4 - Added `clone_from` implementations for all slot maps.
5 - Added `try_insert_with_key` methods that accept a fallible closure.
6 - Improved performance of insertion and key hashing.
7 - Made `new_key_type` resistant to shadowing.
8 - Made iterators clonable regardless of item type clonability.
9
10
11Version 1.0.6
12=============
13
14 - Made `Key` trait unsafe, as it was erroneously safe to implement.
15
16
17Version 1.0.5
18=============
19
20 - Added fuzzing for extra testing.
21 - Fixed an issue that could cause a segfault when using `HopSlotMap::retain`
22   that had the same underlying cause as the fix in 1.0.4 but was missed.
23
24
25Version 1.0.4
26=============
27
28 - Fixed an issue that could cause a segfault when using `HopSlotMap::drain`.
29   All versions 0.3+ are affected, and thus yanked.
30
31
32Version 1.0.3
33=============
34
35 - Made `get_disjoint_mut` available on stable Rust 1.51 and up.
36 - Added unchecked variants for the getters on `SparseSecondaryMap`.
37
38
39Version 1.0.2
40=============
41
42 - Fixed the `new_key_type!` macro, it assumed the `Key` trait was in scope.
43 - Updated code base with more stringent (clippy) warnings, and many small code
44   quality and documentation changes.
45 - Documented the minimum required stable Rust version, which is 1.49.
46
47
48Version 1.0.1
49=============
50
51 - Fixed an instance where an uninitialized `[u32; N]` was created. The
52   uninitialized values were never read - the code always initialized them
53   before reading - but simply having the variable be uninitialized (despite all
54   bit patterns being valid) is technically undefined behavior.
55
56
57Version 1.0.0
58=============
59
60 - Removed all `Copy` trait restrictions of value types stable Rust! There are
61   no longer any restrictions on the types you can store in any of the
62   slot maps. For that reason `Slottable` was deprecated as well.
63
64 - `no_std` support was added, use it by opting out of the default feature `std`.
65
66 - Added `sm.get_disjoint_mut([k1, k2, ...])` which allows you to get mutable
67   references from multiple disjoint keys at the same time. This requires
68   `min-const-generics` to be stabilized, so until Rust 1.51 comes out this is
69   only available on nightly by setting the `unstable` feature.
70
71 - Added an `Entry` API to the secondary maps.
72
73 - Added `derive(Clone)` for iterators where possible.
74
75 - Replaced `Into<KeyData>` with `Key::data()`.
76
77 - `SecondaryMap` now uses minimal space overhead. Each slot now uses
78   `max(sizeof(T), 4)` bytes.
79
80 - Moved `SlotMap` to the `basic` module.
81
82
83Version 0.4.1
84=============
85
86 - Backport of fix made in 1.0.4.
87
88
89Version 0.4.0
90=============
91
92 - Codebase moved to 2018 Edition.
93
94 - Reintroduce `DenseSlotMap` - an overzealous removal in 0.3.0.
95
96 - Added support for `try_reserve`.
97
98 - Added support for custom hashers in `SparseSecondaryMap`.
99
100 - `SparseSecondaryMap` and `SecondaryMap` can now be cloned.
101
102 - Keys have a more terse debug output.
103
104 - Fixed a bug that caused an overflowing left shift on 32-bit targets.
105
106
107Version 0.3.0
108=============
109
110 - Massive rework, with a focus on secondary maps and custom keys to prevent
111   cross-slotmap key usage.
112
113 - Removed `DenseSlotMap` in favour of `HopSlotMap` as the latter performs
114   better when secondary maps are in use.
115
116 - Unfortunately due to the redesign the first slot in a slot map must now
117   always be empty. This means some deserializations of slot maps serialized
118   with a version before 0.3.0 can fail.
119
120 - Added `SecondaryMap` and `SparseSecondaryMap`, which allows you to associate
121   extra data with keys given by a slot map.
122
123 - Added `DefaultKey`, custom key types, and support for them on all slot maps
124   and secondary maps. You must now always specify the key type you're using
125   with a slot map, so `SlotMap<i32>` would be `SlotMap<DefaultKey, i32>`. It is
126   recommended to make a custom key type with `new_key_type!` for any slot map
127   you create, as this entirely prevents using the wrong key on the wrong slot
128   map.
129
130 - `KeyData` now has `as_ffi` and `from_ffi` functions that convert the data
131   that makes up a key to/from an `u64`. This allows you to use slot map keys
132   as opaque handles in FFI code.
133
134
135Version 0.2.1
136=============
137
138 - Fixed a potential uninitialized memory vulnerability. No uninitialized memory
139   was read or used directly, but Rust's assumptions could lead to it. Yanked
140   all previous versions as they were all vulnerable.
141
142 - Made a `Key` member non-zero so that `Option<Key>` is optimized.
143
144
145Version 0.2.0
146=============
147Start of version history.
148