13 KiB
13 KiB
Change Log
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Unreleased
v0.12.3 - 2022-07-17
Fixed
- Fixed double-drop in
RawTable::clone_from. (#348)
v0.12.2 - 2022-07-09
Added
- Added
EntryAPI forHashSet. (#342) - Added
Extend<&'a (K, V)> for HashMap<K, V, S, A>. (#340) - Added length-based short-circuiting for hash table iteration. (#338)
- Added a function to access the
RawTableof aHashMap. (#335)
Changed
- Edited
do_allocto reduce LLVM IR generated. (#341)
v0.12.1 - 2022-05-02
Fixed
- Fixed underflow in
RawIterRange::size_hint. (#325) - Fixed the implementation of
DebugforValuesMutandIntoValues. (#325)
v0.12.0 - 2022-01-17
Added
- Added
From<[T; N]>andFrom<[(K, V); N]>forHashSetandHashMaprespectively. (#297) - Added an
allocator()getter to HashMap and HashSet. (#257) - Added
insert_unique_uncheckedtoHashMapandHashSet. (#293) - Added
into_keysandinto_valuesto HashMap. (#295) - Implement
From<array>onHashSetandHashMap. (#298) - Added
entry_refAPI toHashMap. (#201)
Changed
- Bumped minimum Rust version to 1.56.1 and edition to 2021.
- Use u64 for the GroupWord on WebAssembly. (#271)
- Optimized
find. (#279) - Made rehashing and resizing less generic to reduce compilation time. (#282)
- Inlined small functions. (#283)
- Use
BuildHasher::hash_onewhenfeature = "nightly"is enabled. (#292) - Relaxed the bounds on
DebugforHashSet. (#296) - Rename
get_each_muttoget_many_mutand align API with the stdlib. (#291) - Don't hash the key when searching in an empty table. (#305)
Fixed
- Guard against allocations exceeding isize::MAX. (#268)
- Made
RawTable::insert_no_growunsafe. (#254) - Inline
static_empty. (#280) - Fixed trait bounds on Send/Sync impls. (#303)
v0.11.2 - 2021-03-25
Fixed
- Added missing allocator type parameter to
HashMap's andHashSet'sCloneimpls. (#252)
v0.11.1 - 2021-03-20
Fixed
- Added missing
pubmodifier toBumpWrapper. (#251)
v0.11.0 - 2021-03-14
Added
- Added safe
try_insert_no_growmethod toRawTable. (#229) - Added support for
bumpaloas an allocator without thenightlyfeature. (#231) - Implemented
DefaultforRawTable. (#237) - Added new safe methods
RawTable::get_each_mut,HashMap::get_each_mut, andHashMap::get_each_key_value_mut. (#239) - Added
From<HashMap<T, ()>>forHashSet<T>. (#235) - Added
try_insertmethod toHashMap. (#247)
Changed
- The minimum Rust version has been bumped to 1.49.0. (#230)
- Significantly improved compilation times by reducing the amount of generated IR. (#205)
Removed
- We no longer re-export the unstable allocator items from the standard library, nor the stable shims approximating the same. (#227)
- Removed hasher specialization support from
aHash, which was resulting in inconsistent hashes being generated for a key. (#248)
Fixed
- Fixed union length comparison. (#228)
v0.10.0 - 2021-01-16
This release was yanked due to inconsistent hashes being generated with the nightly feature. (#248)
Changed
- Parametrized
RawTable,HashSetandHashMapover an allocator. (#133) - Improved branch prediction hints on stable. (#209)
- Optimized hashing of primitive types with AHash using specialization. (#207)
- Only instantiate
RawTable's reserve functions once per key-value. (#204)
v0.9.1 - 2020-09-28
Added
- Added safe methods to
RawTable(#202):get:findandas_refget_mut:findandas_mutinsert_entry:insertandas_mutremove_entry:findandremoveerase_entry:findanderase
Changed
- Removed
from_key_hashed_nocheck'sQ: Hash. (#200) - Made
RawTable::drainsafe. (#201)
v0.9.0 - 2020-09-03
Fixed
drain_filternow removes and yields items that do match the predicate, rather than items that don't. This is a breaking change to match the behavior of thedrain_filtermethods instd. (#187)
Added
- Added
replace_entry_withtoOccupiedEntry, andand_replace_entry_withtoEntry. (#190) - Implemented
FusedIteratorandsize_hintforDrainFilter. (#188)
Changed
- The minimum Rust version has been bumped to 1.36 (due to
crossbeamdependency). (#193) - Updated
ahashdependency to 0.4. (#198) HashMap::with_hasherandHashSet::with_hasherare nowconst fn. (#195)- Removed
T: Hash + EqandS: BuildHasherbounds onHashSet::new,with_capacity,with_hasher, andwith_capacity_and_hasher. (#185)
v0.8.2 - 2020-08-08
Changed
- Avoid closures to improve compile times. (#183)
- Do not iterate to drop if empty. (#182)
v0.8.1 - 2020-07-16
Added
- Added
eraseandremovetoRawTable. (#171) - Added
try_with_capacitytoRawTable. (#174) - Added methods that allow re-using a
RawIterforRawDrain,RawIntoIter, andRawParIter. (#175) - Added
reflect_removeandreflect_inserttoRawIter. (#175) - Added a
drain_filterfunction toHashSet. (#179)
Changed
- Deprecated
RawTable::erase_no_dropin favor oferaseandremove. (#176) insert_no_growis now exposed under the"raw"feature. (#180)
v0.8.0 - 2020-06-18
Fixed
- Marked
RawTable::par_iterasunsafe. (#157)
Changed
- Reduced the size of
HashMap. (#159) - No longer create tables with a capacity of 1 element. (#162)
- Removed
K: Eq + Hashbounds onretain. (#163) - Pulled in
HashMapchanges from rust-lang/rust (#164):extend_onesupport on nightly.CollectionAllocErrrenamed toTryReserveError.- Added
HashSet::get_or_insert_owned. DefaultforHashSetno longer requiresT: Eq + HashandS: BuildHasher.
v0.7.2 - 2020-04-27
Added
- Added
or_insert_with_keytoEntry. (#152)
Fixed
- Partially reverted
Cloneoptimization which was unsound. (#154)
Changed
- Disabled use of
const-randomby default, which prevented reproducible builds. (#155) - Optimized
repeatfunction. (#150) - Use
NonNullfor buckets, which improves codegen for iterators. (#148)
v0.7.1 - 2020-03-16
Added
- Added
HashMap::get_key_value_mut. (#145)
Changed
- Optimized
Cloneimplementation. (#146)
v0.7.0 - 2020-01-31
Added
- Added a
drain_filterfunction toHashMap. (#135)
Changed
- Updated
ahashdependency to 0.3. (#141) - Optimized set union and intersection. (#130)
raw_entrycan now be used without requiringS: BuildHasher. (#123)RawTable::bucket_indexcan now be used under therawfeature. (#128)
v0.6.3 - 2019-10-31
Added
- Added an
ahash-compile-time-rngfeature (enabled by default) which allows disabling thecompile-time-rngfeature inahashto work around a Cargo bug. (#125)
v0.6.2 - 2019-10-23
Added
- Added an
inline-morefeature (enabled by default) which allows choosing a tradeoff between runtime performance and compilation time. (#119)
v0.6.1 - 2019-10-04
Added
- Added
Entry::insertandRawEntryMut::insert. (#118)
Changed
Group::static_emptywas changed from aconstto astatic(#116).
v0.6.0 - 2019-08-13
Fixed
- Fixed AHash accidentally depending on
std. (#110)
Changed
- The minimum Rust version has been bumped to 1.32 (due to
randdependency).
v0.5.1 - 2019-08-04
This release was yanked due to a breaking change for users of no-default-features.
Added
- The experimental and unsafe
RawTableAPI is available under the "raw" feature. (#108) - Added entry-like methods for
HashSet. (#98)
Changed
- Changed the default hasher from FxHash to AHash. (#97)
hashbrownis now fullyno_stdon recent Rust versions (1.36+). (#96)
Fixed
- We now avoid growing the table during insertions when it wasn't necessary. (#106)
RawOccupiedEntryMutnow properly implementsSendandSync. (#100)- Relaxed
lazy_staticversion. (#92)
v0.5.0 - 2019-06-12
Fixed
- Resize with a more conservative amount of space after deletions. (#86)
Changed
- Exposed the Layout of the failed allocation in CollectionAllocErr::AllocErr. (#89)
v0.4.0 - 2019-05-30
Fixed
- Fixed
Sendtrait bounds onIterMutnot matching the libstd one. (#82)
v0.3.1 - 2019-05-30
Fixed
- Fixed incorrect use of slice in unsafe code. (#80)
v0.3.0 - 2019-04-23
Changed
- Changed shrink_to to not panic if min_capacity < capacity. (#67)
Fixed
- Worked around emscripten bug emscripten-core/emscripten-fastcomp#258. (#66)
v0.2.2 - 2019-04-16
Fixed
- Inlined non-nightly lowest_set_bit_nonzero. (#64)
- Fixed build on latest nightly. (#65)
v0.2.1 - 2019-04-14
Changed
- Use for_each in map Extend and FromIterator. (#58)
- Improved worst-case performance of HashSet.is_subset. (#61)
Fixed
- Removed incorrect debug_assert. (#60)
v0.2.0 - 2019-03-31
Changed
- The code has been updated to Rust 2018 edition. This means that the minimum Rust version has been bumped to 1.31 (2018 edition).
Added
- Added
insert_with_hasherto the raw_entry API to allowK: !(Hash + Eq). (#54) - Added support for using hashbrown as the hash table implementation in libstd. (#46)
Fixed
- Fixed cargo build with minimal-versions. (#45)
- Fixed
#[may_dangle]attributes to match the libstdHashMap. (#46) - ZST keys and values are now handled properly. (#46)
v0.1.8 - 2019-01-14
Added
- Rayon parallel iterator support (#37)
raw_entrysupport (#31)#[may_dangle]on nightly (#31)try_reservesupport (#31)
Fixed
- Fixed variance on
IterMut. (#31)
v0.1.7 - 2018-12-05
Fixed
- Fixed non-SSE version of convert_special_to_empty_and_full_to_deleted. (#32)
- Fixed overflow in rehash_in_place. (#33)
v0.1.6 - 2018-11-17
Fixed
- Fixed compile error on nightly. (#29)
v0.1.5 - 2018-11-08
Fixed
- Fixed subtraction overflow in generic::Group::match_byte. (#28)
v0.1.4 - 2018-11-04
Fixed
- Fixed a bug in the
erase_no_dropimplementation. (#26)
v0.1.3 - 2018-11-01
Added
- Serde support. (#14)
Fixed
- Make the compiler inline functions more aggressively. (#20)
v0.1.2 - 2018-10-31
Fixed
clearsegfaults when called on an empty table. (#13)
v0.1.1 - 2018-10-30
Fixed
erase_no_dropoptimization not triggering in the SSE2 implementation. (#3)- Missing
SendandSyncfor hash map and iterator types. (#7) - Bug when inserting into a table smaller than the group width. (#5)
v0.1.0 - 2018-10-29
- Initial release