1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341
|
v4.14.0 / 2025-01-25
==================
* feat: implement bidirectional BFS
* fix(dijkstra)!: remove unneeded partial cost parameter. This is
a BREAKING CHANGE in `dijkstra_reach()` parameters, but fortunately
very easy to fix for users.
* chore: reorganize `rand` imports
v4.13.1 / 2025-01-15
==================
* fix(perf): back out commit 808b951c5a9eb5dd25adbd46a5887525d0a0913d which causes a severe performance regression in Dijkstra algorithm
* style: use `usize::div_ceil()`
* feat(gitignore): ignore flame graph files
* docs: cleanup some first line
* chore(deps): update rust crate itertools to 0.14.0
* fix(clippy): put test module last in file
* feat: accept `&(usize, usize)` as `Matrix` index
* fix(style): use a less convoluted test
v4.13.0 / 2024-12-29
==================
* feat: implement Bron-Kerbosch algorithm, thanks to @gzsombor
* fix(style): use `unwrap_or_else` when appropriate
* fix(style): use `Self` instead of the type name
* fix(style): make some functions `const`
v4.12.0 / 2024-12-10
==================
* fix(doc): reference `count_paths` from top-level documentation
* fix(tests): remove `test_` prefix in tests
* chore(Cargo): update fake regex dependency message
* fix(deps): update rust crate thiserror to v2
* fix: use proper pattern binding
* fix(deps): update codspeed-criterion-compat to get rid of advisory
* fix(tests): new test for `utils` module
* fix(ui): adapt UI tests to Rust 1.84
* chore(gitignore): ignore `cargo mutants` output
* fix(tests): `gen` will be a keyword in Rust 2024
* fix(kruskal): accept owned data into the method
* fix: remove or move `allow` attributes
* style(matrix): remove unneeded bounds on `DoubleEndedIterator` impl
* style: replace `let _ =` by `_ =`
* docs: remove empty lines in comments
* Add test for Yen's algorithm
* Add precision on development process
* feat(tests): test Edmonds-Karp failure in sparse mode
* feat(dfs): use a non-recursive version
* fix(benches): reinstate regular benches for DFS
* fix!(dfs): never visit the same node twice
* feat(benches): add restricted DFS benchmarks
* style: use Iterator::inspect() when the value does not change
* chore(deps): update rust crate codspeed-criterion-compat to v2
* fix!(msrv): update MSRV to 1.77.2
* Generic variant of connected_components
* fix(doc): refer to `usize::MAX` instead of `std::usize::MAX`
* chore(Cargo.toml): allow `clippy::too_long_first_doc_paragraph`
v4.11.0 / 2024-08-31
==================
* feat(prim): add Prim's algorithm for finding MST
* docs(astar): add documentation for SmallestCostHolder
* fix(README): Broken link in the README.md
* test: add more tests for `Grid` and `Matrix`
* fix(cargo-deny): update configuration
v4.10.0 / 2024-06-18
==================
* feat: replace `FixedBitSet` by `IndexSet` for better performances
* chore(deps): update many dependencies for better performances
* feat(tests): add new aoc-2023-17 test
* fix(tests): do not build useless vector
* fix: remove redundant imports
v4.9.1 / 2024-02-12
==================
* fix(README): inline documentation to fix inner links to modules
* fix(deps): update rust crate indexmap to 2.2.3
* fix(deps): update rust crate thiserror to 1.0.57
v4.9.0 / 2024-02-11
==================
* feat(matrix): add in-place matrix transposition for non-square matrix
* feat(bench): add bench for matrix transposition
* feat(tests): add a test for transposing an empty matrix
* fix(deps): add priority to clippy lints for lint_groups_priority
* chore(grid): replace deprecated IndexMap remove() method by swap_remove()
* fix(deps): update rust crate num-traits to 0.2.18
* fix(deps): update rust crate indexmap to 2.2.2
* chore(deps): update rust crate itertools to 0.12.1
v4.8.2 / 2024-01-14
==================
* fix(dfs_reach): visit nodes in the documented order
v4.8.1 / 2024-01-07
==================
* fix(yen): revert "Routes are already sorted by cost and path len"
* test(yen): add test for checking Yen algorithm output ordering
* chore(pre-commit): add conventional commit check
* chore: use deprecate_until attribute instead of deprecated
v4.8.0 / 2023-12-22
==================
* feat(matrix): add `Matrix::transpose()`
* feat(matrix): add `Matrix::column_iter()`
v4.7.0 / 2023-12-21
==================
* feat(grid): add `Grid::constrain()`
* feat(matrix): add `Matrix::constrain()`
* feat(utils): add `constrain()`
v4.6.0 / 2023-12-14
==================
* feat(matrix): implement DoubleEndedIterator for RowIterator
v4.5.0 / 2023-12-14
==================
* feat(matrix): add swap method
* chore(msrv): update minimum required Rust version to 1.70.0
* chore: use bool::is_some_and
v4.4.0 / 2023-11-30
==================
* feat: new `dijkstra_reach()` function
* fix(doc): remove useless explicit links
v4.3.4 / 2023-11-29
==================
* fix(edmondskarp): better panic messages
* fix(matrix): better panic messages
* fix(style): apply clippy fixes
* fix(doc): typo
v4.3.3 / 2023-11-13
==================
* fix(yen): return all loopless paths
* chore(cargo deny): fix warning in configuration file
* chore(deps): update rust crate indexmap to 2.1.0
* chore(deps): update rust crate thiserror to 1.0.50
* chore(deps): update rust crate regex to 1.10.2
* chore(deps): update rust crate num-traits to 0.2.17
v4.3.2 / 2023-09-22
==================
* New remaining_low_bounds() method for {Bfs,Dfs}Reachable
* Migrate to the evenfurther GitHub organization
* fix(deps): update rust crate thiserror to 1.0.48
* Use or_default() in test
v4.3.1 / 2023-08-02
==================
* Move `cycle_detection` module into `directed` and deprecate the former
* Update indexmap requirement from 1.9.2 to 2.0.0
* Style: use `or_default()` rather than `or_insert_with()` with default value
* Style: do not use `bool::then()` in `filter_map()`
* Style: make `partial_cmp` use `cmp`
* Style: reformat with let/else support
* Use codspeed-criterion-compat everywhere, do not require criterion
v4.3.0 / 2023-05-30
==================
* Allow creating a Matrix based on a function from position to value
* Make method cancel_flow of edmondskarp only cancel the minimum amount of flow among all edges along a path, instead of the maximum, in order to avoid negative flows
* Use sort_unstable_by() instead of sort_unstable_by_key()
* New Grid example for from_coordinates() method
* Use RemSP and path splitting
* Remove optimization which gives worst benchmark results
* Integrate CodSpeed
* Update criterion requirement from 0.4.0 to 0.5.1
* Make Kuhn-Munkres benchmarks reproducible
v4.2.1 / 2023-01-17
==================
* Document that A*/Dijkstra/Fringe/idA* costs must be non-negative
* Upgrade dependencies
* Use new clippy lint name
* Add bench for separate_components
* Bench Kuhn-Munkres algorithm
* Remove itertools dependency
* Remove unnecessary .into_iter() in tests
v4.2.0 / 2022-12-25
==================
* Add Grid::from_coordinates()
* Add the possibility to display the grid with reversed line order
* Add more Grid documentation
v4.1.1 / 2022-12-14
==================
* Better performances in Grid, Kruskal and Edmonds-Karp
v4.1.0 / 2022-12-14
==================
* Add Matrix::items() and Matrix::items_mut()
* Rename Matrix::indices() as Matrix::keys() and deprecate Matrix::indices()
* Clarify the ordering of coordinate tuples in Matrix
* Add more Grid documentation
* Enable clippy pedantic mode by default
v4.0.1 / 2022-12-12
==================
* Improve bfs performance
* Add documentation for possible errors and panics
v4.0.0 / 2022-11-30
==================
* Add move_in_direction and in_direction to utils
* Make some function const
* Cleanups
* Count paths
* Add minimum_cut capability to EdmondsKarp
* Bump MSRV to 1.65.0
* Update dependencies
v3.0.14 / 2022-10-03
==================
* Use into_keys() where appropriate
* Add fake regex dev dependency
* Use boolean::then_some()
* Update criterion requirement from 0.3.4 to 0.4.0
* Optimize Yen's algorithm
* Routes are already sorted by cost and path len
v3.0.13 / 2022-06-16
==================
* Document possibility of looping endlessly in kuhn_munkres related functions
* Use matches!() to simplify expression
v3.0.12 / 2022-04-13
==================
* Add two algorithms (Floyd and Brent) to detect cycles
* Deprecate absdiff() in favor of Rust 1.60 abs_diff()
* Remove double must-use
v3.0.11 / 2022-03-11
==================
* Introduce `Grid::{bfs,dfs}_reachable()` and `deprecate Grid::reachable()`
* Remove `Copy` bound on predicate of `Matrix::{bfs,dfs}_reachable()`
* Use anonymous lifetimes when appropriate
* Add example for `kuhn_munkres()`
v3.0.10 / 2022-02-14
====================
* Remove unused `Matrix::uninit`/`Matrix::assume_init()`
* Remove remaining `debug_assert!()` calls
v3.0.9 / 2022-02-02
===================
* Add conversion from `Matrix<bool>` to `Grid`
* Add `Grid` equality
* Add `Matrix::map()`
v3.0.8 / 2022-01-24
===================
* Add `Matrix::new_uninit()` and `Matrix::assume_init()`
* Forbid all missing or partially missing docs
* Mark iterators as fused
v3.0.7 / 2022-01-23
===================
* Deprecate `Matrix::reachable()` for `Matrix::bfs_reachable(`) and
`Matrix::dfs_reachable()`
* Add `dfs_reach()`
* Use an enumeration to represent `MatrixFormatError`
v3.0.6 / 2022-01-12
===================
* Add MSRV and check for consistency
* Add `#[must_use]` on `Weights` trait
* Use thiserror crate to build `MatrixFormatError`
* Add an example for `Grid` as `Debug`
v3.0.5 / 2021-12-13
===================
* Alternate `Grid` debug mode
v3.0.4 / 2021-12-12
===================
* Add `Grid::reachable()`
* Add `Matrix::get()` and `Matrix::get_mut()`
v3.0.3 / 2021-12-09
===================
* Add `Matrix::reachable()`
* Better `Matrix` corner cases documentation
v3.0.2 / 2021-12-09
===================
* Remove references in `Grid` methods
* Remove more references in `Matrix` methods
v3.0.1 / 2021-12-09
===================
* Remove unnecessary `Clone` bounds
v3.0.0 / 2021-12-09
===================
* Use tuples instead of tuples reference for `Matrix` index
|