|
| 1 | +- 1.8.1 |
| 2 | + |
| 3 | + - The new `IndexSet::replace_full` will return the index of the item along |
| 4 | + with the replaced value, if any, by @zakcutner in PR [222]. |
| 5 | + |
| 6 | +[222]: https://github.com/bluss/indexmap/pull/222 |
| 7 | + |
| 8 | +- 1.8.0 |
| 9 | + |
| 10 | + - The new `IndexMap::into_keys` and `IndexMap::into_values` will consume |
| 11 | + the map into keys or values, respectively, matching Rust 1.54's `HashMap` |
| 12 | + methods, by @taiki-e in PR [195]. |
| 13 | + |
| 14 | + - More of the iterator types implement `Debug`, `ExactSizeIterator`, and |
| 15 | + `FusedIterator`, by @cuviper in PR [196]. |
| 16 | + |
| 17 | + - `IndexMap` and `IndexSet` now implement rayon's `ParallelDrainRange`, |
| 18 | + by @cuviper in PR [197]. |
| 19 | + |
| 20 | + - `IndexMap::with_hasher` and `IndexSet::with_hasher` are now `const` |
| 21 | + functions, allowing static maps and sets, by @mwillsey in PR [203]. |
| 22 | + |
| 23 | + - `IndexMap` and `IndexSet` now implement `From` for arrays, matching |
| 24 | + Rust 1.56's implementation for `HashMap`, by @rouge8 in PR [205]. |
| 25 | + |
| 26 | + - `IndexMap` and `IndexSet` now have methods `sort_unstable_keys`, |
| 27 | + `sort_unstable_by`, `sorted_unstable_by`, and `par_*` equivalents, |
| 28 | + which sort in-place without preserving the order of equal items, by |
| 29 | + @bhgomes in PR [211]. |
| 30 | + |
| 31 | +[195]: https://github.com/bluss/indexmap/pull/195 |
| 32 | +[196]: https://github.com/bluss/indexmap/pull/196 |
| 33 | +[197]: https://github.com/bluss/indexmap/pull/197 |
| 34 | +[203]: https://github.com/bluss/indexmap/pull/203 |
| 35 | +[205]: https://github.com/bluss/indexmap/pull/205 |
| 36 | +[211]: https://github.com/bluss/indexmap/pull/211 |
| 37 | + |
| 38 | +- 1.7.0 |
| 39 | + |
| 40 | + - **MSRV**: Rust 1.49 or later is now required. |
| 41 | + |
| 42 | + - The `hashbrown` dependency has been updated to version 0.11. |
| 43 | + |
| 44 | +- 1.6.2 |
| 45 | + |
| 46 | + - Fixed to match `std` behavior, `OccupiedEntry::key` now references the |
| 47 | + existing key in the map instead of the lookup key, by @cuviper in PR [170]. |
| 48 | + |
| 49 | + - The new `Entry::or_insert_with_key` matches Rust 1.50's `Entry` method, |
| 50 | + passing `&K` to the callback to create a value, by @cuviper in PR [175]. |
| 51 | + |
| 52 | +[170]: https://github.com/bluss/indexmap/pull/170 |
| 53 | +[175]: https://github.com/bluss/indexmap/pull/175 |
| 54 | + |
| 55 | +- 1.6.1 |
| 56 | + |
| 57 | + - The new `serde_seq` module implements `IndexMap` serialization as a |
| 58 | + sequence to ensure order is preserved, by @cuviper in PR [158]. |
| 59 | + |
| 60 | + - New methods on maps and sets work like the `Vec`/slice methods by the same name: |
| 61 | + `truncate`, `split_off`, `first`, `first_mut`, `last`, `last_mut`, and |
| 62 | + `swap_indices`, by @cuviper in PR [160]. |
| 63 | + |
| 64 | +[158]: https://github.com/bluss/indexmap/pull/158 |
| 65 | +[160]: https://github.com/bluss/indexmap/pull/160 |
| 66 | + |
| 67 | +- 1.6.0 |
| 68 | + |
| 69 | + - **MSRV**: Rust 1.36 or later is now required. |
| 70 | + |
| 71 | + - The `hashbrown` dependency has been updated to version 0.9. |
| 72 | + |
| 73 | +- 1.5.2 |
| 74 | + |
| 75 | + - The new "std" feature will force the use of `std` for users that explicitly |
| 76 | + want the default `S = RandomState`, bypassing the autodetection added in 1.3.0, |
| 77 | + by @cuviper in PR [145]. |
| 78 | + |
| 79 | +[145]: https://github.com/bluss/indexmap/pull/145 |
| 80 | + |
| 81 | +- 1.5.1 |
| 82 | + |
| 83 | + - Values can now be indexed by their `usize` position by @cuviper in PR [132]. |
| 84 | + |
| 85 | + - Some of the generic bounds have been relaxed to match `std` by @cuviper in PR [141]. |
| 86 | + |
| 87 | + - `drain` now accepts any `R: RangeBounds<usize>` by @cuviper in PR [142]. |
| 88 | + |
| 89 | +[132]: https://github.com/bluss/indexmap/pull/132 |
| 90 | +[141]: https://github.com/bluss/indexmap/pull/141 |
| 91 | +[142]: https://github.com/bluss/indexmap/pull/142 |
| 92 | + |
| 93 | +- 1.5.0 |
| 94 | + |
| 95 | + - **MSRV**: Rust 1.32 or later is now required. |
| 96 | + |
| 97 | + - The inner hash table is now based on `hashbrown` by @cuviper in PR [131]. |
| 98 | + This also completes the method `reserve` and adds `shrink_to_fit`. |
| 99 | + |
| 100 | + - Add new methods `get_key_value`, `remove_entry`, `swap_remove_entry`, |
| 101 | + and `shift_remove_entry`, by @cuviper in PR [136] |
| 102 | + |
| 103 | + - `Clone::clone_from` reuses allocations by @cuviper in PR [125] |
| 104 | + |
| 105 | + - Add new method `reverse` by @linclelinkpart5 in PR [128] |
| 106 | + |
| 107 | +[125]: https://github.com/bluss/indexmap/pull/125 |
| 108 | +[128]: https://github.com/bluss/indexmap/pull/128 |
| 109 | +[131]: https://github.com/bluss/indexmap/pull/131 |
| 110 | +[136]: https://github.com/bluss/indexmap/pull/136 |
| 111 | + |
| 112 | +- 1.4.0 |
| 113 | + |
| 114 | + - Add new method `get_index_of` by @Thermatrix in PR [115] and [120] |
| 115 | + |
| 116 | + - Fix build script rebuild-if-changed configuration to use "build.rs"; |
| 117 | + fixes issue [123]. Fix by @cuviper. |
| 118 | + |
| 119 | + - Dev-dependencies (rand and quickcheck) have been updated. The crate's tests |
| 120 | + now run using Rust 1.32 or later (MSRV for building the crate has not changed). |
| 121 | + by @kjeremy and @bluss |
| 122 | + |
| 123 | +[123]: https://github.com/bluss/indexmap/issues/123 |
| 124 | +[115]: https://github.com/bluss/indexmap/pull/115 |
| 125 | +[120]: https://github.com/bluss/indexmap/pull/120 |
| 126 | + |
| 127 | +- 1.3.2 |
| 128 | + |
| 129 | + - Maintenance update to regenerate the published `Cargo.toml`. |
| 130 | + |
| 131 | +- 1.3.1 |
| 132 | + |
| 133 | + - Maintenance update for formatting and `autocfg` 1.0. |
| 134 | + |
| 135 | +- 1.3.0 |
| 136 | + |
| 137 | + - The deprecation messages in the previous version have been removed. |
| 138 | + (The methods have not otherwise changed.) Docs for removal methods have been |
| 139 | + improved. |
| 140 | + - From Rust 1.36, this crate supports being built **without std**, requiring |
| 141 | + `alloc` instead. This is enabled automatically when it is detected that |
| 142 | + `std` is not available. There is no crate feature to enable/disable to |
| 143 | + trigger this. The new build-dep `autocfg` enables this. |
| 144 | + |
| 145 | +- 1.2.0 |
| 146 | + |
| 147 | + - Plain `.remove()` now has a deprecation message, it informs the user |
| 148 | + about picking one of the removal functions `swap_remove` and `shift_remove` |
| 149 | + which have different performance and order semantics. |
| 150 | + Plain `.remove()` will not be removed, the warning message and method |
| 151 | + will remain until further. |
| 152 | + |
| 153 | + - Add new method `shift_remove` for order preserving removal on the map, |
| 154 | + and `shift_take` for the corresponding operation on the set. |
| 155 | + |
| 156 | + - Add methods `swap_remove`, `swap_remove_entry` to `Entry`. |
| 157 | + |
| 158 | + - Fix indexset/indexmap to support full paths, like `indexmap::indexmap!()` |
| 159 | + |
| 160 | + - Internal improvements: fix warnings, deprecations and style lints |
| 161 | + |
| 162 | +- 1.1.0 |
| 163 | + |
| 164 | + - Added optional feature `"rayon"` that adds parallel iterator support |
| 165 | + to `IndexMap` and `IndexSet` using Rayon. This includes all the regular |
| 166 | + iterators in parallel versions, and parallel sort. |
| 167 | + |
| 168 | + - Implemented `Clone` for `map::{Iter, Keys, Values}` and |
| 169 | + `set::{Difference, Intersection, Iter, SymmetricDifference, Union}` |
| 170 | + |
| 171 | + - Implemented `Debug` for `map::{Entry, IntoIter, Iter, Keys, Values}` and |
| 172 | + `set::{Difference, Intersection, IntoIter, Iter, SymmetricDifference, Union}` |
| 173 | + |
| 174 | + - Serde trait `IntoDeserializer` are implemented for `IndexMap` and `IndexSet`. |
| 175 | + |
| 176 | + - Minimum Rust version requirement increased to Rust 1.30 for development builds. |
| 177 | + |
| 178 | +- 1.0.2 |
| 179 | + |
| 180 | + - The new methods `IndexMap::insert_full` and `IndexSet::insert_full` are |
| 181 | + both like `insert` with the index included in the return value. |
| 182 | + |
| 183 | + - The new method `Entry::and_modify` can be used to modify occupied |
| 184 | + entries, matching the new methods of `std` maps in Rust 1.26. |
| 185 | + |
| 186 | + - The new method `Entry::or_default` inserts a default value in unoccupied |
| 187 | + entries, matching the new methods of `std` maps in Rust 1.28. |
| 188 | + |
| 189 | +- 1.0.1 |
| 190 | + |
| 191 | + - Document Rust version policy for the crate (see rustdoc) |
| 192 | + |
| 193 | +- 1.0.0 |
| 194 | + |
| 195 | + - This is the 1.0 release for `indexmap`! (the crate and datastructure |
| 196 | + formerly known as “ordermap”) |
| 197 | + - `OccupiedEntry::insert` changed its signature, to use `&mut self` for |
| 198 | + the method receiver, matching the equivalent method for a standard |
| 199 | + `HashMap`. Thanks to @dtolnay for finding this bug. |
| 200 | + - The deprecated old names from ordermap were removed: `OrderMap`, |
| 201 | + `OrderSet`, `ordermap!{}`, `orderset!{}`. Use the new `IndexMap` |
| 202 | + etc names instead. |
| 203 | + |
| 204 | +- 0.4.1 |
| 205 | + |
| 206 | + - Renamed crate to `indexmap`; the `ordermap` crate is now deprecated |
| 207 | + and the types `OrderMap/Set` now have a deprecation notice. |
| 208 | + |
| 209 | +- 0.4.0 |
| 210 | + |
| 211 | + - This is the last release series for this `ordermap` under that name, |
| 212 | + because the crate is **going to be renamed** to `indexmap` (with types |
| 213 | + `IndexMap`, `IndexSet`) and no change in functionality! |
| 214 | + - The map and its associated structs moved into the `map` submodule of the |
| 215 | + crate, so that the map and set are symmetric |
| 216 | + |
| 217 | + + The iterators, `Entry` and other structs are now under `ordermap::map::` |
| 218 | + |
| 219 | + - Internally refactored `OrderMap<K, V, S>` so that all the main algorithms |
| 220 | + (insertion, lookup, removal etc) that don't use the `S` parameter (the |
| 221 | + hasher) are compiled without depending on `S`, which reduces generics bloat. |
| 222 | + |
| 223 | + - `Entry<K, V>` no longer has a type parameter `S`, which is just like |
| 224 | + the standard `HashMap`'s entry. |
| 225 | + |
| 226 | + - Minimum Rust version requirement increased to Rust 1.18 |
| 227 | + |
| 228 | +- 0.3.5 |
| 229 | + |
| 230 | + - Documentation improvements |
| 231 | + |
| 232 | +- 0.3.4 |
| 233 | + |
| 234 | + - The `.retain()` methods for `OrderMap` and `OrderSet` now |
| 235 | + traverse the elements in order, and the retained elements **keep their order** |
| 236 | + - Added new methods `.sort_by()`, `.sort_keys()` to `OrderMap` and |
| 237 | + `.sort_by()`, `.sort()` to `OrderSet`. These methods allow you to |
| 238 | + sort the maps in place efficiently. |
| 239 | + |
| 240 | +- 0.3.3 |
| 241 | + |
| 242 | + - Document insertion behaviour better by @lucab |
| 243 | + - Updated dependences (no feature changes) by @ignatenkobrain |
| 244 | + |
| 245 | +- 0.3.2 |
| 246 | + |
| 247 | + - Add `OrderSet` by @cuviper! |
| 248 | + - `OrderMap::drain` is now (too) a double ended iterator. |
| 249 | + |
| 250 | +- 0.3.1 |
| 251 | + |
| 252 | + - In all ordermap iterators, forward the `collect` method to the underlying |
| 253 | + iterator as well. |
| 254 | + - Add crates.io categories. |
| 255 | + |
| 256 | +- 0.3.0 |
| 257 | + |
| 258 | + - The methods `get_pair`, `get_pair_index` were both replaced by |
| 259 | + `get_full` (and the same for the mutable case). |
| 260 | + - Method `swap_remove_pair` replaced by `swap_remove_full`. |
| 261 | + - Add trait `MutableKeys` for opt-in mutable key access. Mutable key access |
| 262 | + is only possible through the methods of this extension trait. |
| 263 | + - Add new trait `Equivalent` for key equivalence. This extends the |
| 264 | + `Borrow` trait mechanism for `OrderMap::get` in a backwards compatible |
| 265 | + way, just some minor type inference related issues may become apparent. |
| 266 | + See [#10] for more information. |
| 267 | + - Implement `Extend<(&K, &V)>` by @xfix. |
| 268 | + |
| 269 | +[#10]: https://github.com/bluss/ordermap/pull/10 |
| 270 | + |
| 271 | +- 0.2.13 |
| 272 | + |
| 273 | + - Fix deserialization to support custom hashers by @Techcable. |
| 274 | + - Add methods `.index()` on the entry types by @garro95. |
| 275 | + |
| 276 | +- 0.2.12 |
| 277 | + |
| 278 | + - Add methods `.with_hasher()`, `.hasher()`. |
| 279 | + |
| 280 | +- 0.2.11 |
| 281 | + |
| 282 | + - Support `ExactSizeIterator` for the iterators. By @Binero. |
| 283 | + - Use `Box<[Pos]>` internally, saving a word in the `OrderMap` struct. |
| 284 | + - Serde support, with crate feature `"serde-1"`. By @xfix. |
| 285 | + |
| 286 | +- 0.2.10 |
| 287 | + |
| 288 | + - Add iterator `.drain(..)` by @stevej. |
| 289 | + |
| 290 | +- 0.2.9 |
| 291 | + |
| 292 | + - Add method `.is_empty()` by @overvenus. |
| 293 | + - Implement `PartialEq, Eq` by @overvenus. |
| 294 | + - Add method `.sorted_by()`. |
| 295 | + |
| 296 | +- 0.2.8 |
| 297 | + |
| 298 | + - Add iterators `.values()` and `.values_mut()`. |
| 299 | + - Fix compatibility with 32-bit platforms. |
| 300 | + |
| 301 | +- 0.2.7 |
| 302 | + |
| 303 | + - Add `.retain()`. |
| 304 | + |
| 305 | +- 0.2.6 |
| 306 | + |
| 307 | + - Add `OccupiedEntry::remove_entry` and other minor entry methods, |
| 308 | + so that it now has all the features of `HashMap`'s entries. |
| 309 | + |
| 310 | +- 0.2.5 |
| 311 | + |
| 312 | + - Improved `.pop()` slightly. |
| 313 | + |
| 314 | +- 0.2.4 |
| 315 | + |
| 316 | + - Improved performance of `.insert()` ([#3]) by @pczarn. |
| 317 | + |
| 318 | +[#3]: https://github.com/bluss/ordermap/pull/3 |
| 319 | + |
| 320 | +- 0.2.3 |
| 321 | + |
| 322 | + - Generalize `Entry` for now, so that it works on hashmaps with non-default |
| 323 | + hasher. However, there's a lingering compat issue since libstd `HashMap` |
| 324 | + does not parameterize its entries by the hasher (`S` typarm). |
| 325 | + - Special case some iterator methods like `.nth()`. |
| 326 | + |
| 327 | +- 0.2.2 |
| 328 | + |
| 329 | + - Disable the verbose `Debug` impl by default. |
| 330 | + |
| 331 | +- 0.2.1 |
| 332 | + |
| 333 | + - Fix doc links and clarify docs. |
| 334 | + |
| 335 | +- 0.2.0 |
| 336 | + |
| 337 | + - Add more `HashMap` methods & compat with its API. |
| 338 | + - Experimental support for `.entry()` (the simplest parts of the API). |
| 339 | + - Add `.reserve()` (placeholder impl). |
| 340 | + - Add `.remove()` as synonym for `.swap_remove()`. |
| 341 | + - Changed `.insert()` to swap value if the entry already exists, and |
| 342 | + return `Option`. |
| 343 | + - Experimental support as an *indexed* hash map! Added methods |
| 344 | + `.get_index()`, `.get_index_mut()`, `.swap_remove_index()`, |
| 345 | + `.get_pair_index()`, `.get_pair_index_mut()`. |
| 346 | + |
| 347 | +- 0.1.2 |
| 348 | + |
| 349 | + - Implement the 32/32 split idea for `Pos` which improves cache utilization |
| 350 | + and lookup performance. |
| 351 | + |
| 352 | +- 0.1.1 |
| 353 | + |
| 354 | + - Initial release. |
0 commit comments