diff --git a/Cargo.lock b/Cargo.lock
index d14ce5c..d3f101b 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1,18 +1,18 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
-version = 3
+version = 4
[[package]]
-name = "adler"
-version = "1.0.2"
+name = "adler2"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
[[package]]
name = "ahash"
-version = "0.8.6"
+version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
dependencies = [
"cfg-if",
"getrandom",
@@ -31,12 +31,24 @@ dependencies = [
]
[[package]]
-name = "ansi_term"
-version = "0.12.1"
+name = "allocator-api2"
+version = "0.2.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
+checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9"
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
dependencies = [
- "winapi",
+ "libc",
]
[[package]]
@@ -74,7 +86,7 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
dependencies = [
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -84,7 +96,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628"
dependencies = [
"anstyle",
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -108,26 +120,6 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c07dab4369547dbe5114677b33fbbf724971019f3818172d59a97a61c774ffd"
-[[package]]
-name = "atomic-polyfill"
-version = "0.1.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3ff7eb3f316534d83a8a2c3d1674ace8a5a71198eba31e2e2b597833f699b28"
-dependencies = [
- "critical-section",
-]
-
-[[package]]
-name = "atty"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
-dependencies = [
- "hermit-abi",
- "libc",
- "winapi",
-]
-
[[package]]
name = "autocfg"
version = "1.1.0"
@@ -136,56 +128,36 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "autotools"
-version = "0.2.6"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aef8da1805e028a172334c3b680f93e71126f2327622faef2ec3d893c0a4ad77"
+checksum = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf"
dependencies = [
"cc",
]
[[package]]
name = "bindgen"
-version = "0.65.1"
+version = "0.69.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5"
+checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088"
dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.4.0",
"cexpr",
"clang-sys",
+ "itertools 0.10.5",
"lazy_static",
"lazycell",
"log",
- "peeking_take_while",
"prettyplease 0.2.15",
"proc-macro2",
"quote",
"regex",
"rustc-hash",
"shlex",
- "syn 2.0.37",
+ "syn 2.0.87",
"which",
]
-[[package]]
-name = "bindgen"
-version = "0.66.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7"
-dependencies = [
- "bitflags 2.4.0",
- "cexpr",
- "clang-sys",
- "lazy_static",
- "lazycell",
- "peeking_take_while",
- "proc-macro2",
- "quote",
- "regex",
- "rustc-hash",
- "shlex",
- "syn 2.0.37",
-]
-
[[package]]
name = "bitflags"
version = "1.3.2"
@@ -200,13 +172,20 @@ checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
[[package]]
name = "build-probe-mpi"
-version = "0.1.2"
-source = "git+https://github.com/rsmpi/rsmpi?rev=1622101c9fc3a78620e9649f7f895616289d3558#1622101c9fc3a78620e9649f7f895616289d3558"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3234fa6de2f6e0e338c7183ba09ae68c8f2bd6919d8763362597627362b7f8fe"
dependencies = [
"pkg-config",
"shell-words",
]
+[[package]]
+name = "bumpalo"
+version = "3.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
+
[[package]]
name = "byteorder"
version = "1.5.0"
@@ -221,10 +200,11 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
[[package]]
name = "cc"
-version = "1.0.83"
+version = "1.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+checksum = "e9e8aabfac534be767c909e0690571677d49f41bd8465ae876fe043d52ba5292"
dependencies = [
+ "jobserver",
"libc",
]
@@ -243,6 +223,18 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+[[package]]
+name = "chrono"
+version = "0.4.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "num-traits",
+ "windows-targets 0.52.6",
+]
+
[[package]]
name = "clang-sys"
version = "1.6.1"
@@ -285,7 +277,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote",
- "syn 2.0.37",
+ "syn 2.0.87",
]
[[package]]
@@ -309,6 +301,12 @@ dependencies = [
"custom_derive",
]
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+
[[package]]
name = "crc32fast"
version = "1.3.2"
@@ -318,12 +316,6 @@ dependencies = [
"cfg-if",
]
-[[package]]
-name = "critical-section"
-version = "1.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216"
-
[[package]]
name = "crossbeam-channel"
version = "0.5.8"
@@ -334,6 +326,25 @@ dependencies = [
"crossbeam-utils",
]
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
[[package]]
name = "crossbeam-queue"
version = "0.3.8"
@@ -346,12 +357,9 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
-version = "0.8.16"
+version = "0.8.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
-dependencies = [
- "cfg-if",
-]
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
[[package]]
name = "custom_derive"
@@ -359,26 +367,13 @@ version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"
-[[package]]
-name = "dashmap"
-version = "5.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
-dependencies = [
- "cfg-if",
- "hashbrown 0.14.1",
- "lock_api",
- "once_cell",
- "parking_lot_core",
-]
-
[[package]]
name = "earcutr"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0812b44697951d35fde8fcb0da81c9de7e809e825a66bbf1ecb79d9829d4ca3d"
dependencies = [
- "itertools",
+ "itertools 0.10.5",
"num-traits",
]
@@ -396,11 +391,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
name = "erased-serde"
-version = "0.3.31"
+version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c138974f9d5e7fe373eb04df7cae98833802ae4b11c24ac7039a21d5af4b26c"
+checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d"
dependencies = [
"serde",
+ "typeid",
]
[[package]]
@@ -411,7 +407,7 @@ checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480"
dependencies = [
"errno-dragonfly",
"libc",
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -438,9 +434,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
[[package]]
name = "flate2"
-version = "1.0.27"
+version = "1.0.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010"
+checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0"
dependencies = [
"crc32fast",
"miniz_oxide",
@@ -448,21 +444,17 @@ dependencies = [
[[package]]
name = "flexi_logger"
-version = "0.22.6"
+version = "0.29.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c76a80dd14a27fc3d8bc696502132cb52b3f227256fd8601166c3a35e45f409"
+checksum = "d26948e37cfcb1f2c2cd38e0602d3a8ab6b9472c0c6eff4516fc8def9a3124d7"
dependencies = [
- "ansi_term",
- "atty",
+ "chrono",
"crossbeam-channel",
"crossbeam-queue",
- "glob",
- "lazy_static",
"log",
+ "nu-ansi-term 0.50.1",
"regex",
- "rustversion",
"thiserror",
- "time",
]
[[package]]
@@ -550,25 +542,27 @@ dependencies = [
[[package]]
name = "geo"
-version = "0.26.0"
+version = "0.29.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1645cf1d7fea7dac1a66f7357f3df2677ada708b8d9db8e9b043878930095a96"
+checksum = "8798f09c0fb3625cf216569408e151a1884c3a028a0b533b7c223ae8f695c89a"
dependencies = [
"earcutr",
"float_next_after",
"geo-types",
"geographiclib-rs",
+ "i_overlay",
"log",
"num-traits",
"robust",
"rstar",
+ "spade",
]
[[package]]
name = "geo-types"
-version = "0.7.11"
+version = "0.7.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9705398c5c7b26132e74513f4ee7c1d7dafd786004991b375c172be2be0eecaa"
+checksum = "9ff16065e5720f376fbced200a5ae0f47ace85fd70b7e54269790281353b6d61"
dependencies = [
"approx",
"num-traits",
@@ -604,9 +598,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
[[package]]
name = "hash32"
-version = "0.2.1"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67"
+checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
dependencies = [
"byteorder",
]
@@ -619,20 +613,21 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "hashbrown"
-version = "0.14.1"
+version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+dependencies = [
+ "ahash",
+ "allocator-api2",
+]
[[package]]
name = "heapless"
-version = "0.7.16"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db04bc24a18b9ea980628ecf00e6c0264f3c1426dac36c00cb49b6fbad8b0743"
+checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad"
dependencies = [
- "atomic-polyfill",
"hash32",
- "rustc_version",
- "spin",
"stable_deref_trait",
]
@@ -643,21 +638,79 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
[[package]]
-name = "hermit-abi"
-version = "0.1.19"
+name = "home"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
dependencies = [
- "libc",
+ "windows-sys 0.48.0",
]
[[package]]
-name = "home"
-version = "0.5.5"
+name = "i_float"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
+checksum = "b3123eb991f76125b7c1a9e789f41b8daf9176cf24f305a661f92ed997c4d296"
dependencies = [
- "windows-sys",
+ "serde",
+]
+
+[[package]]
+name = "i_key_sort"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "347c253b4748a1a28baf94c9ce133b6b166f08573157e05afe718812bc599fcd"
+
+[[package]]
+name = "i_overlay"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c4c8ebcefa2dc35059e35876d77aa9820aff3f3cfc38cc4be8316e458f62b23"
+dependencies = [
+ "i_float",
+ "i_key_sort",
+ "i_shape",
+ "i_tree",
+ "rayon",
+]
+
+[[package]]
+name = "i_shape"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0be74a9b2c283db7cfd364aabd45b3db3d789d740cb6005f297736413d857f98"
+dependencies = [
+ "i_float",
+ "serde",
+]
+
+[[package]]
+name = "i_tree"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "155181bc97d770181cf9477da51218a19ee92a8e5be642e796661aee2b601139"
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.61"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
]
[[package]]
@@ -677,7 +730,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897"
dependencies = [
"equivalent",
- "hashbrown 0.14.1",
+ "hashbrown 0.14.5",
]
[[package]]
@@ -695,12 +748,39 @@ dependencies = [
"either",
]
+[[package]]
+name = "itertools"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+dependencies = [
+ "either",
+]
+
[[package]]
name = "itoa"
version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+[[package]]
+name = "jobserver"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.72"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9"
+dependencies = [
+ "wasm-bindgen",
+]
+
[[package]]
name = "keyed_priority_queue"
version = "0.4.1"
@@ -800,31 +880,22 @@ version = "2.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
-[[package]]
-name = "memoffset"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
-dependencies = [
- "autocfg",
-]
-
[[package]]
name = "metis"
-version = "0.1.2"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62d65169fd55c134e5498444453fe968349421e7248e4d6547c6846e0082c397"
+checksum = "3653658399c092e0912b25c591e9dc89bae5c1db377b85c52011991f8b628ceb"
dependencies = [
"metis-sys",
]
[[package]]
name = "metis-sys"
-version = "0.2.1"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc898b11f9da2e428afa54b5f092dac7edd3f87281084d789b9a9a15b6f81853"
+checksum = "769ee6be814b21c52afcc631f07051f578487d642f3e89a45f2a086fd94fffa9"
dependencies = [
- "bindgen 0.66.1",
+ "cc",
]
[[package]]
@@ -835,22 +906,22 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "miniz_oxide"
-version = "0.7.1"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
dependencies = [
- "adler",
+ "adler2",
]
[[package]]
name = "mpi"
-version = "0.6.0"
-source = "git+https://github.com/rsmpi/rsmpi?rev=1622101c9fc3a78620e9649f7f895616289d3558#1622101c9fc3a78620e9649f7f895616289d3558"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677762a4bde2c81158fc566a69b97d11b0c3358694e64f4f922ac5189be311cc"
dependencies = [
"build-probe-mpi",
"conv",
"libffi",
- "memoffset",
"mpi-sys",
"once_cell",
"smallvec",
@@ -859,10 +930,11 @@ dependencies = [
[[package]]
name = "mpi-sys"
-version = "0.2.0"
-source = "git+https://github.com/rsmpi/rsmpi?rev=1622101c9fc3a78620e9649f7f895616289d3558#1622101c9fc3a78620e9649f7f895616289d3558"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f35fdd7bdb38959515f008d12598065631de9624f6d42c11caef19e8e0d10de"
dependencies = [
- "bindgen 0.65.1",
+ "bindgen",
"build-probe-mpi",
"cc",
]
@@ -899,6 +971,15 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "nu-ansi-term"
+version = "0.50.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
[[package]]
name = "num-traits"
version = "0.2.17"
@@ -920,9 +1001,9 @@ dependencies = [
[[package]]
name = "once_cell"
-version = "1.18.0"
+version = "1.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
[[package]]
name = "overload"
@@ -950,15 +1031,9 @@ dependencies = [
"libc",
"redox_syscall",
"smallvec",
- "windows-targets",
+ "windows-targets 0.48.5",
]
-[[package]]
-name = "peeking_take_while"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
-
[[package]]
name = "petgraph"
version = "0.6.4"
@@ -983,9 +1058,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkg-config"
-version = "0.3.27"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
+checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
[[package]]
name = "ppv-lite86"
@@ -1010,14 +1085,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d"
dependencies = [
"proc-macro2",
- "syn 2.0.37",
+ "syn 2.0.87",
]
[[package]]
name = "proc-macro2"
-version = "1.0.67"
+version = "1.0.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
+checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e"
dependencies = [
"unicode-ident",
]
@@ -1029,7 +1104,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd"
dependencies = [
"bytes",
- "prost-derive",
+ "prost-derive 0.11.9",
+]
+
+[[package]]
+name = "prost"
+version = "0.13.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f"
+dependencies = [
+ "bytes",
+ "prost-derive 0.13.3",
]
[[package]]
@@ -1040,13 +1125,13 @@ checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270"
dependencies = [
"bytes",
"heck",
- "itertools",
+ "itertools 0.10.5",
"lazy_static",
"log",
"multimap",
"petgraph",
"prettyplease 0.1.25",
- "prost",
+ "prost 0.11.9",
"prost-types",
"regex",
"syn 1.0.109",
@@ -1061,19 +1146,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4"
dependencies = [
"anyhow",
- "itertools",
+ "itertools 0.10.5",
"proc-macro2",
"quote",
"syn 1.0.109",
]
+[[package]]
+name = "prost-derive"
+version = "0.13.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5"
+dependencies = [
+ "anyhow",
+ "itertools 0.13.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
[[package]]
name = "prost-types"
version = "0.11.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13"
dependencies = [
- "prost",
+ "prost 0.11.9",
]
[[package]]
@@ -1097,9 +1195,9 @@ dependencies = [
[[package]]
name = "quote"
-version = "1.0.33"
+version = "1.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
dependencies = [
"proc-macro2",
]
@@ -1144,6 +1242,26 @@ dependencies = [
"rand",
]
+[[package]]
+name = "rayon"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
[[package]]
name = "redox_syscall"
version = "0.3.5"
@@ -1190,9 +1308,9 @@ checksum = "cbf4a6aa5f6d6888f39e980649f3ad6b666acdce1d78e95b8a2cb076e687ae30"
[[package]]
name = "rstar"
-version = "0.11.0"
+version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73111312eb7a2287d229f06c00ff35b51ddee180f017ab6dec1f69d62ac098d6"
+checksum = "421400d13ccfd26dfa5858199c30a5d76f9c54e0dba7575273025b43c5175dbb"
dependencies = [
"heapless",
"num-traits",
@@ -1210,13 +1328,13 @@ dependencies = [
"flate2",
"flexi_logger",
"geo",
- "itertools",
+ "itertools 0.13.0",
"keyed_priority_queue",
"lz4_flex",
"metis",
"mpi",
"nohash-hasher",
- "prost",
+ "prost 0.13.3",
"prost-build",
"protobuf-src",
"quick-xml",
@@ -1241,15 +1359,6 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
-[[package]]
-name = "rustc_version"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
-dependencies = [
- "semver",
-]
-
[[package]]
name = "rustix"
version = "0.38.15"
@@ -1260,21 +1369,24 @@ dependencies = [
"errno",
"libc",
"linux-raw-sys",
- "windows-sys",
+ "windows-sys 0.48.0",
]
-[[package]]
-name = "rustversion"
-version = "1.0.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
-
[[package]]
name = "ryu"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
+[[package]]
+name = "scc"
+version = "2.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8d25269dd3a12467afe2e510f69fb0b46b698e5afb296b59f2145259deaf8e8"
+dependencies = [
+ "sdd",
+]
+
[[package]]
name = "scopeguard"
version = "1.2.0"
@@ -1282,29 +1394,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
-name = "semver"
-version = "1.0.20"
+name = "sdd"
+version = "3.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
+checksum = "49c1eeaf4b6a87c7479688c6d52b9f1153cedd3c489300564f932b065c6eab95"
[[package]]
name = "serde"
-version = "1.0.192"
+version = "1.0.215"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001"
+checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.192"
+version = "1.0.215"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1"
+checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.37",
+ "syn 2.0.87",
]
[[package]]
@@ -1343,27 +1455,27 @@ dependencies = [
[[package]]
name = "serial_test"
-version = "2.0.0"
+version = "3.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d"
+checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9"
dependencies = [
- "dashmap",
"futures",
- "lazy_static",
"log",
+ "once_cell",
"parking_lot",
+ "scc",
"serial_test_derive",
]
[[package]]
name = "serial_test_derive"
-version = "2.0.0"
+version = "3.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f"
+checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.37",
+ "syn 2.0.87",
]
[[package]]
@@ -1398,17 +1510,20 @@ dependencies = [
[[package]]
name = "smallvec"
-version = "1.11.1"
+version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
[[package]]
-name = "spin"
-version = "0.9.8"
+name = "spade"
+version = "2.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+checksum = "93f5ef1f863aca7d1d7dda7ccfc36a0a4279bd6d3c375176e5e0712e25cb4889"
dependencies = [
- "lock_api",
+ "hashbrown 0.14.5",
+ "num-traits",
+ "robust",
+ "smallvec",
]
[[package]]
@@ -1442,9 +1557,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.37"
+version = "2.0.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
+checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d"
dependencies = [
"proc-macro2",
"quote",
@@ -1461,27 +1576,27 @@ dependencies = [
"fastrand",
"redox_syscall",
"rustix",
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
name = "thiserror"
-version = "1.0.49"
+version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4"
+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.49"
+version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc"
+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.37",
+ "syn 2.0.87",
]
[[package]]
@@ -1503,15 +1618,8 @@ dependencies = [
"itoa",
"libc",
"num_threads",
- "time-macros",
]
-[[package]]
-name = "time-macros"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792"
-
[[package]]
name = "tracing"
version = "0.1.37"
@@ -1543,7 +1651,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.37",
+ "syn 2.0.87",
]
[[package]]
@@ -1583,7 +1691,7 @@ version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77"
dependencies = [
- "nu-ansi-term",
+ "nu-ansi-term 0.46.0",
"serde",
"serde_json",
"sharded-slab",
@@ -1604,11 +1712,17 @@ dependencies = [
"static_assertions",
]
+[[package]]
+name = "typeid"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e"
+
[[package]]
name = "typetag"
-version = "0.2.13"
+version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80960fd143d4c96275c0e60b08f14b81fbb468e79bc0ef8fbda69fb0afafae43"
+checksum = "52ba3b6e86ffe0054b2c44f2d86407388b933b16cb0a70eea3929420db1d9bbe"
dependencies = [
"erased-serde",
"inventory",
@@ -1619,13 +1733,13 @@ dependencies = [
[[package]]
name = "typetag-impl"
-version = "0.2.13"
+version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfc13d450dc4a695200da3074dacf43d449b968baee95e341920e47f61a3b40f"
+checksum = "70b20a22c42c8f1cd23ce5e34f165d4d37038f5b663ad20fb6adbdf029172483"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.37",
+ "syn 2.0.87",
]
[[package]]
@@ -1673,6 +1787,61 @@ version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.95"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.95"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.95"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.95"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.95"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d"
+
[[package]]
name = "which"
version = "4.4.2"
@@ -1707,13 +1876,31 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
[[package]]
name = "windows-sys"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
dependencies = [
- "windows-targets",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.6",
]
[[package]]
@@ -1722,13 +1909,29 @@ version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
]
[[package]]
@@ -1737,42 +1940,90 @@ version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
[[package]]
name = "windows_aarch64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
[[package]]
name = "windows_i686_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
[[package]]
name = "windows_i686_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
[[package]]
name = "windows_x86_64_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
[[package]]
name = "windows_x86_64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
[[package]]
name = "xml"
version = "0.8.10"
@@ -1790,20 +2041,20 @@ checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a"
[[package]]
name = "zerocopy"
-version = "0.7.23"
+version = "0.7.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e50cbb27c30666a6108abd6bc7577556265b44f243e2be89a8bc4e07a528c107"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.7.23"
+version = "0.7.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a25f293fe55f0a48e7010d65552bb63704f6ceb55a1a385da10d41d8f78e4a3d"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.37",
+ "syn 2.0.87",
]
diff --git a/Cargo.toml b/Cargo.toml
index 54796a8..ddaf082 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -8,35 +8,35 @@ edition = "2021"
[dependencies]
serde = { version = "1.0.137", features = ["derive"] }
serde_json = "1.0.93"
+# sticking with quick-xml 0.23.0 because the serialization API changed: https://github.com/tafia/quick-xml/issues/499
+# since the new API would need an adapter from std::fmt::Write to std::io::Write, we stick with the old API
quick-xml = { version = "0.23.0", features = ["serialize"] }
flate2 = { version = "1.0.24" }
rand = "0.8.5"
-metis = "0.1.2"
-flexi_logger = { version = "0.22", features = ["async"] }
+metis = "0.2.2"
+flexi_logger = { version = "0.29.6", features = ["async"] }
clap = { version = "4.0.29", features = ["derive"] }
-# point to the github repo directly because we need a more recent version of bindgen. Otherwise the build fails
-# due to some incompatibility starting with macOs 13.6
-mpi = { git = "https://github.com/rsmpi/rsmpi", rev = "1622101c9fc3a78620e9649f7f895616289d3558" }
+mpi = "0.8.0"
# dependencies for serialization with protobuf
-prost = "0.11.5"
+prost = "0.13.3"
# bytes replaces the signature of std::io::Cursor to implemnt Buf somehow...
bytes = "1.3.0"
-serial_test = "2.0.0"
+serial_test = "3.2.0"
wait-timeout = "0.2.0"
tracing = "0.1"
tracing-subscriber = { version = "0.3.0", features = ["json", "fmt", "std", "registry"] }
tracing-appender = "0.2"
-itertools = "0.10.5"
+itertools = "0.13.0"
assert_approx_eq = "1.1.0"
nohash-hasher = "0.2.0"
rand_distr = "0.4.3"
serde_path_to_error = "0.1.14"
-geo = "0.26.0"
+geo = "0.29.1"
ahash = "0.8.6"
keyed_priority_queue = "0.4.1"
xml = "0.8.10"
lz4_flex = "0.11.1"
-typetag = "0.2.13"
+typetag = "0.2.18"
serde_yaml = "0.9.27"
[build-dependencies]
@@ -44,6 +44,7 @@ serde_yaml = "0.9.27"
prost-build = "0.11"
# provides the protoc compiler - this makes the build slow but one doesn't need to
# install the protoc compiler as prerequisite.
+# updating to 2.1.0 causes huge compile times (https://github.com/MaterializeInc/rust-protobuf-native/issues/24). Maybe we should switch to another crate.
protobuf-src = "1.1.0"
[profile.bench]
diff --git a/README.md b/README.md
index 43016a3..48fde70 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,7 @@ The most recent release can be cited with the following reference
[![DOI](https://zenodo.org/badge/498376436.svg)](https://zenodo.org/doi/10.5281/zenodo.13928119)
The project is described in two conference papers, which were presented at ISPDC 24 in Chur, Switzerland, July 2024:
+
- [High-Performance Simulations for Urban Planning: Implementing Parallel Distributed Multi-Agent Systems in MATSim](https://doi.org/10.1109/ISPDC62236.2024.10705395)
- [Real-Time Routing in Traffic Simulations: A Distributed Event Processing Approach](https://doi.org/10.1109/ISPDC62236.2024.10705399)
@@ -16,8 +17,8 @@ The project is described in two conference papers, which were presented at ISPDC
Install Rust for your operating system as described [here](https://www.rust-lang.org/tools/install). For WSL this would
be
-```
-$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
+```shell
+curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
## Set Up Prerequisites
@@ -28,8 +29,8 @@ compiled with the project, but need to be present on the operating system.
### METIS
The project uses the [metis](https://crates.io/crates/metis) crate as a dependency which
-is a wrapper for the [METIS C Library](https://github.com/KarypisLab/METIS). The C-Library is
-expected to be present on the machine. Also, the `metis` crate requires `libclang` on the machine
+is a wrapper for the [METIS C Library](https://github.com/KarypisLab/METIS). The C-Library is
+expected to be present on the machine. Also, the `metis` crate requires `libclang` on the machine
this project is built on.
### MPI
@@ -51,23 +52,24 @@ The dependencies named above need to be installed before the project can be buit
Install dev versions of required packages because dev stuff is required during compilation
-```
-$ sudo apt -y install libclang-dev llvm-dev libmetis-dev libopenmpi-dev
+```shell
+sudo apt -y install libclang-dev llvm-dev libmetis-dev libopenmpi-dev
```
#### MacOs
The dependencies are available via [homebrew](https://brew.sh/) on macOS.
-```
-$ brew install metis open-mpi
+```shell
+brew install metis open-mpi
```
The project contains a `config.toml` which tries to set the `CPATH` and the `RUSTFLAGS` environment variable. In case
this doesn't work, they need to be set like the following:
-```
-$ export CPATH=$HOMEBREW_PREFIX/include
-$ export RUSTFLAGS="-L$HOMEBREW_PREFIX/lib"
+
+```shell
+export CPATH=$HOMEBREW_PREFIX/include
+export RUSTFLAGS="-L$HOMEBREW_PREFIX/lib"
```
Both variables are necessary to compile the METIS and MPI wrapper libraries.
@@ -75,33 +77,68 @@ Both variables are necessary to compile the METIS and MPI wrapper libraries.
#### Math Cluster
The math cluster has all dependencies installed. They need to be enabled via the module system:
+
+```shell
+module load metis-5.1 ompi/gcc/4.1.2
```
-$ module load metis-5.1 ompi/gcc/4.1.2
-```
+
#### HLRN
-The HLRN cluster has all dependencies installed. They need to be enabled via the module system:
+##### Setup conda
+
+Unfortunately, there is no `libclang` dependency installed. You need to install it yourself via `conda`. If you use it
+for the first time, load the conda module and initialize it, such that it is available in your shell whenever you login:
+
+```shell
+module load anaconda3/2023.09
+conda init bash
+```
+
+Then create your own environment and install `libclang`:
+
+```shell
+conda create -n your_env_name
+conda activate your_env_name
+conda install libclang
+```
+
+##### Load dependencies
+
+The HLRN cluster has **some** dependencies installed. They need to be enabled via the module system:
+
+```shell
+module load intel/2024.2 openmpi/gcc/5.0.3
```
-$ module load gcc/9.3.0 llvm/9.0.0 openmpi/gcc.9/4.1.4 metis/5.1.0
+
+So, before you run the project, you need to activate the environment:
+
+```shell
+conda activate your_env_name
```
+The activation automatically updates the environment variables such that `libclang` files can be found by the compiler.
+
+Source: https://nhr-zib.atlassian.net/wiki/spaces/PUB/pages/430343/Anaconda+conda+and+Mamba
+
## Run the project
The project is built using cargo.
-```
-$ cargo build --release
+```shell
+cargo build --release
```
Then a simulation can be started like the following:
-```
-$ mpirun -np 2 ./target/release/mpi_qsim --config-path /path/to/config.yml
+
+```shell
+mpirun -np 2 ./target/release/mpi_qsim --config-path /path/to/config.yml
```
It is also possible to execute a build before running by executing the following. This is way, one doesn't
forget to re-compile before running.
-```
-$ cargo mpirun --np 2 --release --bin mpi_qsim -- --config-path /path/to/config.yaml
+
+```shell
+cargo mpirun --np 2 --release --bin mpi_qsim -- --config-path /path/to/config.yaml
```
We also have a
@@ -109,3 +146,11 @@ We also have a
### Test
Run `$ cargo test` to execute all tests. To have immediate output use `$ cargo test -- --nocapture`
+
+## Create input files
+
+You need to create protobuf files from the xml files. This can be done with the following command:
+
+```shell
+cargo run --bin convert_to_binary --release -- --network network.xml --population population.xml --vehicles vehicles.xml --output-dir output --run-id run
+```
\ No newline at end of file
diff --git a/assets/adhoc_routing/with_updates/network.xml b/assets/adhoc_routing/with_updates/network.xml
index a4c9dae..3c3a0f4 100644
--- a/assets/adhoc_routing/with_updates/network.xml
+++ b/assets/adhoc_routing/with_updates/network.xml
@@ -2,23 +2,86 @@
-
-
-
-
-
-
-
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
-
-
-
-
-
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
-
-
+
+
+ 1
+
+
+
+
+ 0
+
+
\ No newline at end of file
diff --git a/assets/rvr-1pct.config.yml b/assets/rvr-1pct.config.yml
new file mode 100644
index 0000000..a622b2b
--- /dev/null
+++ b/assets/rvr-1pct.config.yml
@@ -0,0 +1,27 @@
+modules:
+ protofiles:
+ type: ProtoFiles
+ network: /Users/paulheinrich/Nextcloud/Shared/RustQSim/scenarios/rvr/input/rvr-1pct/rvr-1pct.network.binpb
+ population: /Users/paulheinrich/Nextcloud/Shared/RustQSim/scenarios/rvr/input/rvr-1pct/rvr-1pct.plans.binpb
+ vehicles: /Users/paulheinrich/Nextcloud/Shared/RustQSim/scenarios/rvr/input/rvr-1pct/rvr-1pct.vehicles.binpb
+ ids: /Users/paulheinrich/Nextcloud/Shared/RustQSim/scenarios/rvr/input/rvr-1pct/rvr-1pct.ids.binpb
+ partitioning:
+ type: Partitioning
+ num_parts: 0
+ method: !Metis
+ vertex_weight:
+ - PreComputed
+ output:
+ type: Output
+ output_dir: ./assets/rvr-1pct/size
+ profiling: !CSV
+ level: INFO
+ routing:
+ type: Routing
+ mode: UsePlans
+ simulation:
+ type: Simulation
+ start_time: 0
+ end_time: 129600
+ sample_size: 0.01
+ stuck_threshold: 30
\ No newline at end of file
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
index f4004e1..31578d3 100644
--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,5 +1,2 @@
-# use nighly build because rust road router need experimental features.
[toolchain]
-# due to https://github.com/intellij-rust/intellij-rust/issues/10427
-#channel = "nightly-2023-05-01"
channel = "stable"
\ No newline at end of file
diff --git a/src/simulation/controller.rs b/src/simulation/controller.rs
index 6cefa2c..2e318cf 100644
--- a/src/simulation/controller.rs
+++ b/src/simulation/controller.rs
@@ -60,13 +60,16 @@ pub fn run_channel() {
pub fn run_mpi() {
let universe = mpi::initialize().unwrap();
let world = universe.world();
+ let size = world.size();
+ let rank = world.rank();
+
let comm = MpiSimCommunicator {
mpi_communicator: world,
};
let mut args = CommandLineArgs::parse();
// override the num part argument, with the number of processes mpi has started.
- args.num_parts = Some(world.size() as u32);
+ args.num_parts = Some(size as u32);
let config = Config::from_file(&args);
let _guards = logging::init_logging(&config, &args.config_path, comm.rank());
@@ -77,9 +80,9 @@ pub fn run_mpi() {
);
execute_partition(comm, &args);
- info!("#{} at barrier.", world.rank());
+ info!("#{} at barrier.", rank);
universe.world().barrier();
- info!("Process #{} finishing.", world.rank());
+ info!("Process #{} finishing.", rank);
}
fn execute_partition(comm: C, args: &CommandLineArgs) {
@@ -230,7 +233,7 @@ pub fn get_numbered_output_filename(output_dir: &Path, input_file: &Path, part:
insert_number_in_proto_filename(&out, part)
}
-fn create_output_filename(output_dir: &Path, input_file: &Path) -> PathBuf {
+pub fn create_output_filename(output_dir: &Path, input_file: &Path) -> PathBuf {
let filename = input_file.file_name().unwrap();
output_dir.join(filename)
}
diff --git a/src/simulation/messaging/communication/communicators.rs b/src/simulation/messaging/communication/communicators.rs
index 1f29cef..0aad7f4 100644
--- a/src/simulation/messaging/communication/communicators.rs
+++ b/src/simulation/messaging/communication/communicators.rs
@@ -5,7 +5,7 @@ use std::sync::{Arc, Barrier};
use mpi::collective::CommunicatorCollectives;
use mpi::datatype::PartitionMut;
use mpi::point_to_point::{Destination, Source};
-use mpi::topology::{Communicator, SystemCommunicator};
+use mpi::topology::{Communicator, SimpleCommunicator};
use mpi::{Count, Rank};
use tracing::{debug, info, instrument, span, Level};
@@ -193,7 +193,7 @@ impl SimCommunicator for ChannelSimCommunicator {
}
pub struct MpiSimCommunicator {
- pub mpi_communicator: SystemCommunicator,
+ pub mpi_communicator: SimpleCommunicator,
}
impl SimCommunicator for MpiSimCommunicator {
diff --git a/src/simulation/messaging/communication/message_broker.rs b/src/simulation/messaging/communication/message_broker.rs
index 1dba0ba..af8ff79 100644
--- a/src/simulation/messaging/communication/message_broker.rs
+++ b/src/simulation/messaging/communication/message_broker.rs
@@ -1,5 +1,6 @@
use std::collections::{BinaryHeap, HashMap, HashSet};
use std::rc::Rc;
+use tracing::info;
use crate::simulation::messaging::communication::communicators::SimCommunicator;
use crate::simulation::network::global_network::Network;
@@ -101,6 +102,13 @@ where
pub fn send_recv(&mut self, now: u32) -> Vec {
let vehicles = self.prepare_send_recv_vehicles(now);
+
+ for (_, m) in &vehicles {
+ if !m.vehicles.is_empty() {
+ info!("Rank {}, message {:?}", self.rank(), m);
+ }
+ }
+
let mut result: Vec = Vec::new();
let mut expected_vehicle_messages = self.neighbors.clone();
diff --git a/src/simulation/network/metis_partitioning.rs b/src/simulation/network/metis_partitioning.rs
index f03b7f9..2fc3d98 100644
--- a/src/simulation/network/metis_partitioning.rs
+++ b/src/simulation/network/metis_partitioning.rs
@@ -47,6 +47,7 @@ pub fn partition(network: &Network, num_parts: u32, options: MetisOptions) -> Ve
info!("Calling Metis Partitioning Library");
let mut graph = Graph::new(ncon, num_parts as Idx, &mut xadj, &mut adjncy)
+ .expect("Failed to create graph")
.set_option(metis::option::UFactor(options.ufactor() as Idx))
.set_option(metis::option::Seed(4711))
.set_option(metis::option::Contig(options.contiguous))
diff --git a/src/simulation/replanning/teleported_router.rs b/src/simulation/replanning/teleported_router.rs
index 02d87e9..66a6a1e 100644
--- a/src/simulation/replanning/teleported_router.rs
+++ b/src/simulation/replanning/teleported_router.rs
@@ -1,4 +1,4 @@
-use geo::{Closest, ClosestPoint, EuclideanDistance, Line, Point};
+use geo::{Closest, ClosestPoint, Distance, Euclidean, Line, Point};
use std::fmt::Debug;
use crate::simulation::network::global_network::Network;
@@ -46,7 +46,7 @@ impl BeeLineDistanceRouter {
}
fn query_points(speed: f32, p1: Point, p2: Point) -> Teleportation {
- let distance = p1.euclidean_distance(&p2);
+ let distance = Euclidean::distance(p1, p2);
let duration = (distance / speed as f64) as u32;
Teleportation { distance, duration }
}
diff --git a/src/simulation/vehicles/mod.rs b/src/simulation/vehicles/mod.rs
index 0e36b53..33e7900 100644
--- a/src/simulation/vehicles/mod.rs
+++ b/src/simulation/vehicles/mod.rs
@@ -1,3 +1,2 @@
pub mod garage;
mod io;
-mod vehicles;
diff --git a/src/simulation/vehicles/vehicles.rs b/src/simulation/vehicles/vehicles.rs
deleted file mode 100644
index 1135a53..0000000
--- a/src/simulation/vehicles/vehicles.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use crate::simulation::wire_types::vehicles::LevelOfDetail;
-
-impl TryFrom for LevelOfDetail {
- type Error = ();
-
- fn try_from(value: i32) -> Result {
- match value {
- x if x == LevelOfDetail::Network as i32 => Ok(LevelOfDetail::Network),
- x if x == LevelOfDetail::Teleported as i32 => Ok(LevelOfDetail::Teleported),
- _ => Err(()),
- }
- }
-}
diff --git a/tests/resources/adhoc_routing/no_updates/config-1.yml b/tests/resources/adhoc_routing/no_updates/config-1.yml
index f7b3cbf..41bb371 100644
--- a/tests/resources/adhoc_routing/no_updates/config-1.yml
+++ b/tests/resources/adhoc_routing/no_updates/config-1.yml
@@ -14,6 +14,7 @@ modules:
output:
type: Output
output_dir: ./test_output/simulation/adhoc_routing/no_updates/one_part
+ logging: Info
routing:
type: Routing
mode: AdHoc
diff --git a/tests/resources/adhoc_routing/no_updates/config-2.yml b/tests/resources/adhoc_routing/no_updates/config-2.yml
index 73bb2bf..d364a19 100644
--- a/tests/resources/adhoc_routing/no_updates/config-2.yml
+++ b/tests/resources/adhoc_routing/no_updates/config-2.yml
@@ -8,12 +8,11 @@ modules:
partitioning:
type: Partitioning
num_parts: 2
- method: !Metis
- vertex_weight:
- - Constant
+ method: None
output:
type: Output
output_dir: ./test_output/simulation/adhoc_routing/no_updates/two_parts
+ logging: Info
routing:
type: Routing
mode: AdHoc
diff --git a/tests/resources/adhoc_routing/with_updates/config-1.yml b/tests/resources/adhoc_routing/with_updates/config-1.yml
index 57f382b..8ca97bd 100644
--- a/tests/resources/adhoc_routing/with_updates/config-1.yml
+++ b/tests/resources/adhoc_routing/with_updates/config-1.yml
@@ -14,6 +14,7 @@ modules:
output:
type: Output
output_dir: ./test_output/simulation/adhoc_routing/with_updates/one_part
+ logging: Info
routing:
type: Routing
mode: AdHoc
diff --git a/tests/resources/adhoc_routing/with_updates/config-2.yml b/tests/resources/adhoc_routing/with_updates/config-2.yml
index 04fc594..c140979 100644
--- a/tests/resources/adhoc_routing/with_updates/config-2.yml
+++ b/tests/resources/adhoc_routing/with_updates/config-2.yml
@@ -8,13 +8,12 @@ modules:
partitioning:
type: Partitioning
num_parts: 2
- method: !Metis
- vertex_weight:
- - Constant
+ method: None
output:
type: Output
output_dir: ./test_output/simulation/adhoc_routing/with_updates/two_parts
profiling: !CSV
+ logging: Info
routing:
type: Routing
mode: AdHoc
diff --git a/tests/test_adhoc_routing.rs b/tests/test_adhoc_routing.rs
index 8c70603..fbb1721 100644
--- a/tests/test_adhoc_routing.rs
+++ b/tests/test_adhoc_routing.rs
@@ -1,7 +1,9 @@
use std::path::PathBuf;
-use rust_q_sim::simulation::config::CommandLineArgs;
+use rust_q_sim::simulation::config::{CommandLineArgs, Config};
use rust_q_sim::simulation::id::store_to_file;
+use rust_q_sim::simulation::logging;
+use rust_q_sim::simulation::logging::init_std_out_logging;
use rust_q_sim::simulation::messaging::communication::communicators::DummySimCommunicator;
use rust_q_sim::simulation::network::global_network::Network;
use rust_q_sim::simulation::population::population::Population;
@@ -24,6 +26,8 @@ fn create_resources(in_dir: &PathBuf, out_dir: &PathBuf) {
#[test]
fn execute_adhoc_routing_one_part_no_updates() {
+ // init_std_out_logging();
+
create_resources(
&PathBuf::from("./assets/adhoc_routing/no_updates/"),
&PathBuf::from("./test_output/simulation/adhoc_routing/no_updates/one_part/"),
@@ -63,11 +67,13 @@ fn execute_adhoc_routing_two_parts_no_updates() {
#[test]
fn execute_adhoc_routing_one_part_with_updates() {
+ // init_std_out_logging();
+
create_resources(
&PathBuf::from("./assets/adhoc_routing/with_updates/"),
&PathBuf::from("./test_output/simulation/adhoc_routing/with_updates/one_part/"),
);
- let config_args = CommandLineArgs {
+ let args = CommandLineArgs {
config_path: "./tests/resources/adhoc_routing/with_updates/config-1.yml".to_string(),
num_parts: None,
};
@@ -77,25 +83,27 @@ fn execute_adhoc_routing_one_part_with_updates() {
Box::new(TestSubscriber::new_with_events_from_file(
"./tests/resources/adhoc_routing/with_updates/expected_events.xml",
)),
- config_args,
+ args,
);
}
#[test]
#[serial_test::serial]
fn execute_adhoc_routing_two_parts_with_updates() {
+ init_std_out_logging();
+
create_resources(
&PathBuf::from("./assets/adhoc_routing/with_updates/"),
&PathBuf::from("./test_output/simulation/adhoc_routing/with_updates/two_parts/"),
);
- let config_args = CommandLineArgs {
+ let args = CommandLineArgs {
config_path: "./tests/resources/adhoc_routing/with_updates/config-2.yml".to_string(),
num_parts: None,
};
execute_sim_with_channels(
- config_args,
+ args,
"./tests/resources/adhoc_routing/with_updates/expected_events.xml",
);
}
diff --git a/tests/test_simulation.rs b/tests/test_simulation.rs
index 3da10a1..b6ae6ca 100644
--- a/tests/test_simulation.rs
+++ b/tests/test_simulation.rs
@@ -1,4 +1,6 @@
+use nohash_hasher::IntMap;
use std::any::Any;
+use std::collections::HashSet;
use std::fs::File;
use std::io::{BufRead, BufReader};
use std::path::PathBuf;
@@ -6,12 +8,12 @@ use std::rc::Rc;
use std::sync::mpsc::{channel, Receiver, Sender};
use std::thread::JoinHandle;
use std::{fs, thread};
-
-use nohash_hasher::IntMap;
use tracing::info;
-use rust_q_sim::simulation::config::{CommandLineArgs, Config, RoutingMode};
-use rust_q_sim::simulation::controller::{get_numbered_output_filename, partition_input};
+use rust_q_sim::simulation::config::{CommandLineArgs, Config, PartitionMethod, RoutingMode};
+use rust_q_sim::simulation::controller::{
+ create_output_filename, get_numbered_output_filename, partition_input,
+};
use rust_q_sim::simulation::id;
use rust_q_sim::simulation::io::xml_events::XmlEventsWriter;
use rust_q_sim::simulation::messaging::communication::communicators::{
@@ -69,11 +71,16 @@ pub fn execute_sim(
let output_path = PathBuf::from(&config.output().output_dir);
fs::create_dir_all(&output_path).expect("Failed to create output path");
- let temp_network_file = get_numbered_output_filename(
- &output_path,
- &PathBuf::from(config.proto_files().network),
- config.partitioning().num_parts,
- );
+ let temp_network_file = match config.partitioning().method {
+ PartitionMethod::Metis(_) => get_numbered_output_filename(
+ &output_path,
+ &PathBuf::from(config.proto_files().network),
+ config.partitioning().num_parts,
+ ),
+ PartitionMethod::None => {
+ create_output_filename(&output_path, &PathBuf::from(config.proto_files().network))
+ }
+ };
id::load_from_file(&PathBuf::from(config.proto_files().ids));
@@ -100,6 +107,16 @@ pub fn execute_sim(
);
let sim_net = SimNetworkPartition::from_network(&network, rank, config.simulation());
+ info!(
+ "Partitioning: Rank {rank}; Links {:?}; Nodes {:?}",
+ &sim_net.get_link_ids(),
+ &sim_net
+ .nodes
+ .iter()
+ .map(|(id, _)| *id)
+ .collect::>()
+ );
+
let mut events = EventsPublisher::new();
events.add_subscriber(test_subscriber);
events.add_subscriber(Box::new(TravelTimeCollector::new()));