]> git.proxmox.com Git - cargo.git/blame - vendor/hashbrown/CHANGELOG.md
Patch test macro to work around qemu vfork bug when command not found
[cargo.git] / vendor / hashbrown / CHANGELOG.md
CommitLineData
62c5094d
FG
1# Change Log
2
3All notable changes to this project will be documented in this file.
4
5The format is based on [Keep a Changelog](https://keepachangelog.com/)
6and this project adheres to [Semantic Versioning](https://semver.org/).
7
8## [Unreleased]
9
10## [v0.12.3] - 2022-07-17
11
12## Fixed
13
14- Fixed double-drop in `RawTable::clone_from`. (#348)
15
16## [v0.12.2] - 2022-07-09
17
18## Added
19
20- Added `Entry` API for `HashSet`. (#342)
21- Added `Extend<&'a (K, V)> for HashMap<K, V, S, A>`. (#340)
22- Added length-based short-circuiting for hash table iteration. (#338)
23- Added a function to access the `RawTable` of a `HashMap`. (#335)
24
25## Changed
26
27- Edited `do_alloc` to reduce LLVM IR generated. (#341)
28
29## [v0.12.1] - 2022-05-02
30
31## Fixed
32
33- Fixed underflow in `RawIterRange::size_hint`. (#325)
34- Fixed the implementation of `Debug` for `ValuesMut` and `IntoValues`. (#325)
35
36## [v0.12.0] - 2022-01-17
37
38## Added
39
40- Added `From<[T; N]>` and `From<[(K, V); N]>` for `HashSet` and `HashMap` respectively. (#297)
41- Added an `allocator()` getter to HashMap and HashSet. (#257)
42- Added `insert_unique_unchecked` to `HashMap` and `HashSet`. (#293)
43- Added `into_keys` and `into_values` to HashMap. (#295)
44- Implement `From<array>` on `HashSet` and `HashMap`. (#298)
45- Added `entry_ref` API to `HashMap`. (#201)
46
47## Changed
48
49- Bumped minimum Rust version to 1.56.1 and edition to 2021.
50- Use u64 for the GroupWord on WebAssembly. (#271)
51- Optimized `find`. (#279)
52- Made rehashing and resizing less generic to reduce compilation time. (#282)
53- Inlined small functions. (#283)
54- Use `BuildHasher::hash_one` when `feature = "nightly"` is enabled. (#292)
55- Relaxed the bounds on `Debug` for `HashSet`. (#296)
56- Rename `get_each_mut` to `get_many_mut` and align API with the stdlib. (#291)
57- Don't hash the key when searching in an empty table. (#305)
58
59## Fixed
60
61- Guard against allocations exceeding isize::MAX. (#268)
62- Made `RawTable::insert_no_grow` unsafe. (#254)
63- Inline `static_empty`. (#280)
64- Fixed trait bounds on Send/Sync impls. (#303)
65
66## [v0.11.2] - 2021-03-25
67
68## Fixed
69
70- Added missing allocator type parameter to `HashMap`'s and `HashSet`'s `Clone` impls. (#252)
71
72## [v0.11.1] - 2021-03-20
73
74## Fixed
75
76- Added missing `pub` modifier to `BumpWrapper`. (#251)
77
78## [v0.11.0] - 2021-03-14
79
80## Added
81- Added safe `try_insert_no_grow` method to `RawTable`. (#229)
82- Added support for `bumpalo` as an allocator without the `nightly` feature. (#231)
83- Implemented `Default` for `RawTable`. (#237)
84- Added new safe methods `RawTable::get_each_mut`, `HashMap::get_each_mut`, and
85 `HashMap::get_each_key_value_mut`. (#239)
86- Added `From<HashMap<T, ()>>` for `HashSet<T>`. (#235)
87- Added `try_insert` method to `HashMap`. (#247)
88
89## Changed
90- The minimum Rust version has been bumped to 1.49.0. (#230)
91- Significantly improved compilation times by reducing the amount of generated IR. (#205)
92
93## Removed
94- We no longer re-export the unstable allocator items from the standard library, nor the stable shims approximating the same. (#227)
95- Removed hasher specialization support from `aHash`, which was resulting in inconsistent hashes being generated for a key. (#248)
96
97## Fixed
98- Fixed union length comparison. (#228)
99
100## ~~[v0.10.0] - 2021-01-16~~
101
102This release was _yanked_ due to inconsistent hashes being generated with the `nightly` feature. (#248)
103
104## Changed
105- Parametrized `RawTable`, `HashSet` and `HashMap` over an allocator. (#133)
106- Improved branch prediction hints on stable. (#209)
107- Optimized hashing of primitive types with AHash using specialization. (#207)
108- Only instantiate `RawTable`'s reserve functions once per key-value. (#204)
109
110## [v0.9.1] - 2020-09-28
111
112## Added
113- Added safe methods to `RawTable` (#202):
114 - `get`: `find` and `as_ref`
115 - `get_mut`: `find` and `as_mut`
116 - `insert_entry`: `insert` and `as_mut`
117 - `remove_entry`: `find` and `remove`
118 - `erase_entry`: `find` and `erase`
119
120## Changed
121- Removed `from_key_hashed_nocheck`'s `Q: Hash`. (#200)
122- Made `RawTable::drain` safe. (#201)
123
124## [v0.9.0] - 2020-09-03
125
126### Fixed
127- `drain_filter` now removes and yields items that do match the predicate,
128 rather than items that don't. This is a **breaking change** to match the
129 behavior of the `drain_filter` methods in `std`. (#187)
130
131### Added
132- Added `replace_entry_with` to `OccupiedEntry`, and `and_replace_entry_with` to `Entry`. (#190)
133- Implemented `FusedIterator` and `size_hint` for `DrainFilter`. (#188)
134
135### Changed
136- The minimum Rust version has been bumped to 1.36 (due to `crossbeam` dependency). (#193)
137- Updated `ahash` dependency to 0.4. (#198)
138- `HashMap::with_hasher` and `HashSet::with_hasher` are now `const fn`. (#195)
139- Removed `T: Hash + Eq` and `S: BuildHasher` bounds on `HashSet::new`,
140 `with_capacity`, `with_hasher`, and `with_capacity_and_hasher`. (#185)
141
142## [v0.8.2] - 2020-08-08
143
144### Changed
145- Avoid closures to improve compile times. (#183)
146- Do not iterate to drop if empty. (#182)
147
148## [v0.8.1] - 2020-07-16
149
150### Added
151- Added `erase` and `remove` to `RawTable`. (#171)
152- Added `try_with_capacity` to `RawTable`. (#174)
153- Added methods that allow re-using a `RawIter` for `RawDrain`,
154 `RawIntoIter`, and `RawParIter`. (#175)
155- Added `reflect_remove` and `reflect_insert` to `RawIter`. (#175)
156- Added a `drain_filter` function to `HashSet`. (#179)
157
158### Changed
159- Deprecated `RawTable::erase_no_drop` in favor of `erase` and `remove`. (#176)
160- `insert_no_grow` is now exposed under the `"raw"` feature. (#180)
161
162## [v0.8.0] - 2020-06-18
163
164### Fixed
165- Marked `RawTable::par_iter` as `unsafe`. (#157)
166
167### Changed
168- Reduced the size of `HashMap`. (#159)
169- No longer create tables with a capacity of 1 element. (#162)
170- Removed `K: Eq + Hash` bounds on `retain`. (#163)
171- Pulled in `HashMap` changes from rust-lang/rust (#164):
172 - `extend_one` support on nightly.
173 - `CollectionAllocErr` renamed to `TryReserveError`.
174 - Added `HashSet::get_or_insert_owned`.
175 - `Default` for `HashSet` no longer requires `T: Eq + Hash` and `S: BuildHasher`.
176
177## [v0.7.2] - 2020-04-27
178
179### Added
180- Added `or_insert_with_key` to `Entry`. (#152)
181
182### Fixed
183- Partially reverted `Clone` optimization which was unsound. (#154)
184
185### Changed
186- Disabled use of `const-random` by default, which prevented reproducible builds. (#155)
187- Optimized `repeat` function. (#150)
188- Use `NonNull` for buckets, which improves codegen for iterators. (#148)
189
190## [v0.7.1] - 2020-03-16
191
192### Added
193- Added `HashMap::get_key_value_mut`. (#145)
194
195### Changed
196- Optimized `Clone` implementation. (#146)
197
198## [v0.7.0] - 2020-01-31
199
200### Added
201- Added a `drain_filter` function to `HashMap`. (#135)
202
203### Changed
204- Updated `ahash` dependency to 0.3. (#141)
205- Optimized set union and intersection. (#130)
206- `raw_entry` can now be used without requiring `S: BuildHasher`. (#123)
207- `RawTable::bucket_index` can now be used under the `raw` feature. (#128)
208
209## [v0.6.3] - 2019-10-31
210
211### Added
212- Added an `ahash-compile-time-rng` feature (enabled by default) which allows disabling the
213 `compile-time-rng` feature in `ahash` to work around a Cargo bug. (#125)
214
215## [v0.6.2] - 2019-10-23
216
217### Added
218- Added an `inline-more` feature (enabled by default) which allows choosing a tradeoff between
219 runtime performance and compilation time. (#119)
220
221## [v0.6.1] - 2019-10-04
222
223### Added
224- Added `Entry::insert` and `RawEntryMut::insert`. (#118)
225
226### Changed
227- `Group::static_empty` was changed from a `const` to a `static` (#116).
228
229## [v0.6.0] - 2019-08-13
230
231### Fixed
232- Fixed AHash accidentally depending on `std`. (#110)
233
234### Changed
235- The minimum Rust version has been bumped to 1.32 (due to `rand` dependency).
236
237## ~~[v0.5.1] - 2019-08-04~~
238
239This release was _yanked_ due to a breaking change for users of `no-default-features`.
240
241### Added
242- The experimental and unsafe `RawTable` API is available under the "raw" feature. (#108)
243- Added entry-like methods for `HashSet`. (#98)
244
245### Changed
246- Changed the default hasher from FxHash to AHash. (#97)
247- `hashbrown` is now fully `no_std` on recent Rust versions (1.36+). (#96)
248
249### Fixed
250- We now avoid growing the table during insertions when it wasn't necessary. (#106)
251- `RawOccupiedEntryMut` now properly implements `Send` and `Sync`. (#100)
252- Relaxed `lazy_static` version. (#92)
253
254## [v0.5.0] - 2019-06-12
255
256### Fixed
257- Resize with a more conservative amount of space after deletions. (#86)
258
259### Changed
260- Exposed the Layout of the failed allocation in CollectionAllocErr::AllocErr. (#89)
261
262## [v0.4.0] - 2019-05-30
263
264### Fixed
265- Fixed `Send` trait bounds on `IterMut` not matching the libstd one. (#82)
266
267## [v0.3.1] - 2019-05-30
268
269### Fixed
270- Fixed incorrect use of slice in unsafe code. (#80)
271
272## [v0.3.0] - 2019-04-23
273
274### Changed
275- Changed shrink_to to not panic if min_capacity < capacity. (#67)
276
277### Fixed
278- Worked around emscripten bug emscripten-core/emscripten-fastcomp#258. (#66)
279
280## [v0.2.2] - 2019-04-16
281
282### Fixed
283- Inlined non-nightly lowest_set_bit_nonzero. (#64)
284- Fixed build on latest nightly. (#65)
285
286## [v0.2.1] - 2019-04-14
287
288### Changed
289- Use for_each in map Extend and FromIterator. (#58)
290- Improved worst-case performance of HashSet.is_subset. (#61)
291
292### Fixed
293- Removed incorrect debug_assert. (#60)
294
295## [v0.2.0] - 2019-03-31
296
297### Changed
298- The code has been updated to Rust 2018 edition. This means that the minimum
299 Rust version has been bumped to 1.31 (2018 edition).
300
301### Added
302- Added `insert_with_hasher` to the raw_entry API to allow `K: !(Hash + Eq)`. (#54)
303- Added support for using hashbrown as the hash table implementation in libstd. (#46)
304
305### Fixed
306- Fixed cargo build with minimal-versions. (#45)
307- Fixed `#[may_dangle]` attributes to match the libstd `HashMap`. (#46)
308- ZST keys and values are now handled properly. (#46)
309
310## [v0.1.8] - 2019-01-14
311
312### Added
313- Rayon parallel iterator support (#37)
314- `raw_entry` support (#31)
315- `#[may_dangle]` on nightly (#31)
316- `try_reserve` support (#31)
317
318### Fixed
319- Fixed variance on `IterMut`. (#31)
320
321## [v0.1.7] - 2018-12-05
322
323### Fixed
324- Fixed non-SSE version of convert_special_to_empty_and_full_to_deleted. (#32)
325- Fixed overflow in rehash_in_place. (#33)
326
327## [v0.1.6] - 2018-11-17
328
329### Fixed
330- Fixed compile error on nightly. (#29)
331
332## [v0.1.5] - 2018-11-08
333
334### Fixed
335- Fixed subtraction overflow in generic::Group::match_byte. (#28)
336
337## [v0.1.4] - 2018-11-04
338
339### Fixed
340- Fixed a bug in the `erase_no_drop` implementation. (#26)
341
342## [v0.1.3] - 2018-11-01
343
344### Added
345- Serde support. (#14)
346
347### Fixed
348- Make the compiler inline functions more aggressively. (#20)
349
350## [v0.1.2] - 2018-10-31
351
352### Fixed
353- `clear` segfaults when called on an empty table. (#13)
354
355## [v0.1.1] - 2018-10-30
356
357### Fixed
358- `erase_no_drop` optimization not triggering in the SSE2 implementation. (#3)
359- Missing `Send` and `Sync` for hash map and iterator types. (#7)
360- Bug when inserting into a table smaller than the group width. (#5)
361
362## v0.1.0 - 2018-10-29
363
364- Initial release
365
366[Unreleased]: https://github.com/rust-lang/hashbrown/compare/v0.12.3...HEAD
367[v0.12.3]: https://github.com/rust-lang/hashbrown/compare/v0.12.2...v0.12.3
368[v0.12.2]: https://github.com/rust-lang/hashbrown/compare/v0.12.1...v0.12.2
369[v0.12.1]: https://github.com/rust-lang/hashbrown/compare/v0.12.0...v0.12.1
370[v0.12.0]: https://github.com/rust-lang/hashbrown/compare/v0.11.2...v0.12.0
371[v0.11.2]: https://github.com/rust-lang/hashbrown/compare/v0.11.1...v0.11.2
372[v0.11.1]: https://github.com/rust-lang/hashbrown/compare/v0.11.0...v0.11.1
373[v0.11.0]: https://github.com/rust-lang/hashbrown/compare/v0.10.0...v0.11.0
374[v0.10.0]: https://github.com/rust-lang/hashbrown/compare/v0.9.1...v0.10.0
375[v0.9.1]: https://github.com/rust-lang/hashbrown/compare/v0.9.0...v0.9.1
376[v0.9.0]: https://github.com/rust-lang/hashbrown/compare/v0.8.2...v0.9.0
377[v0.8.2]: https://github.com/rust-lang/hashbrown/compare/v0.8.1...v0.8.2
378[v0.8.1]: https://github.com/rust-lang/hashbrown/compare/v0.8.0...v0.8.1
379[v0.8.0]: https://github.com/rust-lang/hashbrown/compare/v0.7.2...v0.8.0
380[v0.7.2]: https://github.com/rust-lang/hashbrown/compare/v0.7.1...v0.7.2
381[v0.7.1]: https://github.com/rust-lang/hashbrown/compare/v0.7.0...v0.7.1
382[v0.7.0]: https://github.com/rust-lang/hashbrown/compare/v0.6.3...v0.7.0
383[v0.6.3]: https://github.com/rust-lang/hashbrown/compare/v0.6.2...v0.6.3
384[v0.6.2]: https://github.com/rust-lang/hashbrown/compare/v0.6.1...v0.6.2
385[v0.6.1]: https://github.com/rust-lang/hashbrown/compare/v0.6.0...v0.6.1
386[v0.6.0]: https://github.com/rust-lang/hashbrown/compare/v0.5.1...v0.6.0
387[v0.5.1]: https://github.com/rust-lang/hashbrown/compare/v0.5.0...v0.5.1
388[v0.5.0]: https://github.com/rust-lang/hashbrown/compare/v0.4.0...v0.5.0
389[v0.4.0]: https://github.com/rust-lang/hashbrown/compare/v0.3.1...v0.4.0
390[v0.3.1]: https://github.com/rust-lang/hashbrown/compare/v0.3.0...v0.3.1
391[v0.3.0]: https://github.com/rust-lang/hashbrown/compare/v0.2.2...v0.3.0
392[v0.2.2]: https://github.com/rust-lang/hashbrown/compare/v0.2.1...v0.2.2
393[v0.2.1]: https://github.com/rust-lang/hashbrown/compare/v0.2.0...v0.2.1
394[v0.2.0]: https://github.com/rust-lang/hashbrown/compare/v0.1.8...v0.2.0
395[v0.1.8]: https://github.com/rust-lang/hashbrown/compare/v0.1.7...v0.1.8
396[v0.1.7]: https://github.com/rust-lang/hashbrown/compare/v0.1.6...v0.1.7
397[v0.1.6]: https://github.com/rust-lang/hashbrown/compare/v0.1.5...v0.1.6
398[v0.1.5]: https://github.com/rust-lang/hashbrown/compare/v0.1.4...v0.1.5
399[v0.1.4]: https://github.com/rust-lang/hashbrown/compare/v0.1.3...v0.1.4
400[v0.1.3]: https://github.com/rust-lang/hashbrown/compare/v0.1.2...v0.1.3
401[v0.1.2]: https://github.com/rust-lang/hashbrown/compare/v0.1.1...v0.1.2
402[v0.1.1]: https://github.com/rust-lang/hashbrown/compare/v0.1.0...v0.1.1