From 6c31ad6b2de1a38d6167e33430c86d0edf206325 Mon Sep 17 00:00:00 2001 From: Juniper Tyree Date: Sat, 18 May 2024 12:13:16 +0000 Subject: [PATCH] Upgrade MSRV to 1.79-nightly + update dependencies --- Cargo.lock | 662 +++++++++--------- necsim/core/Cargo.toml | 6 +- necsim/core/bond/Cargo.toml | 2 +- necsim/core/bond/src/lib.rs | 1 - necsim/core/maths/src/lib.rs | 1 + necsim/core/src/lib.rs | 1 - necsim/core/src/reporter/null.rs | 2 - necsim/core/src/reporter/used.rs | 2 +- necsim/core/src/simulation/builder.rs | 4 +- .../partial/active_lineage_sampler.rs | 4 +- .../src/simulation/partial/event_sampler.rs | 2 +- necsim/impls/cuda/Cargo.toml | 6 +- necsim/impls/cuda/src/lib.rs | 4 +- necsim/impls/no-std/Cargo.toml | 8 +- necsim/impls/no-std/src/alias/mod.rs | 2 +- .../in_memory/cumulative/mod.rs | 6 +- .../opensimplex_noise/vector/mod.rs | 9 - .../src/cogs/turnover_rate/in_memory.rs | 2 + necsim/impls/no-std/src/lib.rs | 1 - .../monolithic/reporter/recorded.rs | 8 - necsim/impls/std/src/event_log/recorder.rs | 2 +- necsim/partitioning/mpi/Cargo.toml | 3 +- necsim/partitioning/mpi/src/lib.rs | 4 +- .../mpi/src/partition/parallel.rs | 6 +- necsim/partitioning/mpi/src/partition/root.rs | 6 +- .../partitioning/mpi/src/partition/utils.rs | 7 +- necsim/plugins/core/Cargo.toml | 2 +- necsim/plugins/core/src/export.rs | 19 +- necsim/plugins/species/Cargo.toml | 6 +- necsim/plugins/tskit/Cargo.toml | 2 +- necsim/plugins/tskit/src/tree/metadata.rs | 2 +- necsim/plugins/tskit/src/tree/table.rs | 11 +- rust-toolchain | 3 +- rustcoalescence/Cargo.toml | 4 +- rustcoalescence/algorithms/cuda/Cargo.toml | 2 +- .../algorithms/cuda/cpu-kernel/Cargo.toml | 2 +- .../algorithms/cuda/cpu-kernel/src/link.rs | 113 ++- .../algorithms/cuda/cpu-kernel/src/patch.rs | 427 +++++++++-- .../algorithms/cuda/gpu-kernel/Cargo.toml | 2 +- .../algorithms/cuda/gpu-kernel/src/lib.rs | 2 +- rustcoalescence/scenarios/src/lib.rs | 1 - .../src/spatially_explicit/maps/mod.rs | 4 +- .../src/spatially_explicit/turnover/map.rs | 2 + .../spatially_explicit/turnover/uniform.rs | 2 + rustcoalescence/src/args/config/rng/mod.rs | 6 +- 45 files changed, 914 insertions(+), 459 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 40176d9bc..9cda7c632 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,9 +10,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.8.8" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42cd52102d3df161c77a887b608d7a4897d7cc112886a9537b738a887a03aaff" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom", @@ -23,62 +23,63 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] [[package]] name = "allocator-api2" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "anstream" -version = "0.6.12" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b09b5178381e0874812a9b157f7fe84982617e48f71f4e3235482775e5b540" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -86,9 +87,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.80" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "array-init-cursor" @@ -108,9 +109,9 @@ dependencies = [ [[package]] name = "arrow2" -version = "0.17.4" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59c468daea140b747d781a1da9f7db5f0a8e6636d4af20cc539e43d05b0604fa" +checksum = "963fef509b757bcbbf9e5ffa23bcb345614d99f4f6f531f97417b27b8604d389" dependencies = [ "ahash", "arrow-format", @@ -122,22 +123,23 @@ dependencies = [ "foreign_vec", "getrandom", "hash_hasher", + "hashbrown", "num-traits", - "rustc_version 0.4.0", + "rustc_version", "simdutf8", ] [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "base32" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23ce669cd6c8588f79e15cf450314f9638f967fc5770ff1c7c1deb0925ea7cfa" +checksum = "d1ce0365f4d5fb6646220bb52fe547afd51796d90f914d4063cb0b032ebee088" [[package]] name = "base64" @@ -156,46 +158,24 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.63.0" +version = "0.69.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36d860121800b2a9a94f9b5604b332d5cffb234ce17609ea479d723dbc9d3885" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "cexpr", "clang-sys", + "itertools", "lazy_static", "lazycell", "log", - "peeking_take_while", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn 1.0.109", - "which", -] - -[[package]] -name = "bindgen" -version = "0.65.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5" -dependencies = [ - "bitflags 1.3.2", - "cexpr", - "clang-sys", - "lazy_static", - "lazycell", - "log", - "peeking_take_while", "prettyplease", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", - "syn 2.0.49", + "syn 2.0.64", "which", ] @@ -207,17 +187,18 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" dependencies = [ "serde", ] [[package]] name = "build-probe-mpi" -version = "0.1.2" -source = "git+https://github.com/juntyr/rsmpi?rev=ed8c10d#ed8c10d1a64b6f63c57d91359b07669ff45e3455" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3234fa6de2f6e0e338c7183ba09ae68c8f2bd6919d8763362597627362b7f8fe" dependencies = [ "pkg-config", "shell-words", @@ -225,9 +206,8 @@ dependencies = [ [[package]] name = "build-probe-mpi" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6606c78346df2f2e1f39ac51d0a7752060a08a5de7805f0ad1b3bbefa93be8cc" +version = "0.1.4" +source = "git+https://github.com/juntyr/rsmpi?rev=2988f56#2988f56e350311acc04119df924edc206e03ad39" dependencies = [ "pkg-config", "shell-words", @@ -235,28 +215,28 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.15.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32a994c2b3ca201d9b263612a374263f05e7adde37c4707f693dcd375076d1f" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.14.3" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f" +checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" +checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.49", + "syn 2.0.64", ] [[package]] @@ -267,18 +247,18 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "camino" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" dependencies = [ "serde", ] [[package]] name = "cargo-platform" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "694c8807f2ae16faecc43dc17d74b3eb042482789fd0eb64b39a2e04e087053f" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" dependencies = [ "serde", ] @@ -291,8 +271,8 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "derive_builder", - "semver 1.0.22", + "derive_builder 0.12.0", + "semver", "serde", "serde_json", "thiserror", @@ -300,12 +280,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" dependencies = [ "jobserver", "libc", + "once_cell", ] [[package]] @@ -325,9 +306,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.34" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "num-traits", ] @@ -345,9 +326,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.1" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" dependencies = [ "clap_builder", "clap_derive", @@ -355,26 +336,26 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.1" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.11.0", + "strsim 0.11.1", ] [[package]] name = "clap_derive" -version = "4.5.0" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.49", + "syn 2.0.64", ] [[package]] @@ -385,9 +366,9 @@ checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "colored" @@ -401,18 +382,18 @@ dependencies = [ [[package]] name = "const-type-layout" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a8a1418a7c3cfdf6db57795ced0855a24249ddd38f1a3373d648cc3ef390d9" +checksum = "0de72aa3d2f0cfa2d220013066afd32a9e716447c74205d9c2c5944b2cac37f3" dependencies = [ "const-type-layout-derive", ] [[package]] name = "const-type-layout-derive" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf506f23bd8d2a7b9758a9abe0f4cddb87d6fd9206c836e65a48ecbdec74d4e" +checksum = "a53e9f496df0f05faf37a44c47df102c09faaa56a1adc31801ec332c7359fc90" dependencies = [ "proc-macro-error", "proc-macro2", @@ -485,8 +466,18 @@ version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.14.4", + "darling_macro 0.14.4", +] + +[[package]] +name = "darling" +version = "0.20.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +dependencies = [ + "darling_core 0.20.9", + "darling_macro 0.20.9", ] [[package]] @@ -503,26 +494,51 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "darling_core" +version = "0.20.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.64", +] + [[package]] name = "darling_macro" version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" dependencies = [ - "darling_core", + "darling_core 0.14.4", "quote", "syn 1.0.109", ] +[[package]] +name = "darling_macro" +version = "0.20.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +dependencies = [ + "darling_core 0.20.9", + "quote", + "syn 2.0.64", +] + [[package]] name = "delegate" -version = "0.9.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d358e0ec5c59a5e1603b933def447096886121660fc680dc1e64a0753981fe3c" +checksum = "4e018fccbeeb50ff26562ece792ed06659b9c2dae79ece77c4456bb10d9bf79b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.64", ] [[package]] @@ -531,7 +547,16 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8" dependencies = [ - "derive_builder_macro", + "derive_builder_macro 0.12.0", +] + +[[package]] +name = "derive_builder" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0350b5cb0331628a5916d6c5c0b72e97393b8b6b03b47a9284f4e7f5a405ffd7" +dependencies = [ + "derive_builder_macro 0.20.0", ] [[package]] @@ -540,22 +565,44 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" dependencies = [ - "darling", + "darling 0.14.4", "proc-macro2", "quote", "syn 1.0.109", ] +[[package]] +name = "derive_builder_core" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d48cda787f839151732d396ac69e3473923d54312c070ee21e9effcaa8ca0b1d" +dependencies = [ + "darling 0.20.9", + "proc-macro2", + "quote", + "syn 2.0.64", +] + [[package]] name = "derive_builder_macro" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e" dependencies = [ - "derive_builder_core", + "derive_builder_core 0.12.0", "syn 1.0.109", ] +[[package]] +name = "derive_builder_macro" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" +dependencies = [ + "derive_builder_core 0.20.0", + "syn 2.0.64", +] + [[package]] name = "displaydoc" version = "0.2.4" @@ -564,35 +611,36 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.49", + "syn 2.0.64", ] [[package]] name = "dyn-clone" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "either" -version = "1.10.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" [[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]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -606,9 +654,9 @@ checksum = "b90ca2580b73ab6a1f724b76ca11ab632df820fd6040c336200d2c1df7b3c82c" [[package]] name = "fallible-iterator" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fallible-streaming-iterator" @@ -636,9 +684,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", @@ -658,9 +706,9 @@ checksum = "ee1b05cbd864bcaecbd3455d6d967862d446e4ebfc3c2e5e5b9841e53cba6673" [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "js-sys", @@ -686,7 +734,7 @@ checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.49", + "syn 2.0.64", ] [[package]] @@ -703,18 +751,9 @@ checksum = "74721d007512d0cb3338cd20f0654ac913920061a4c4d0d8708edb3f2a698c0c" [[package]] name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash", -] - -[[package]] -name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", "allocator-api2", @@ -722,18 +761,18 @@ dependencies = [ [[package]] name = "hashlink" -version = "0.8.4" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" dependencies = [ - "hashbrown 0.14.3", + "hashbrown", ] [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hex" @@ -772,17 +811,32 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +[[package]] +name = "is_terminal_polyfill" +version = "1.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.28" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" dependencies = [ "libc", ] @@ -795,9 +849,9 @@ checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" [[package]] name = "js-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -816,18 +870,18 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libloading" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-sys 0.48.0", + "windows-targets 0.52.5", ] [[package]] @@ -838,9 +892,9 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libsqlite3-sys" -version = "0.26.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326" +checksum = "0c10584274047cb335c23d3e61bcef8e323adae7c5c8c760540f73610177fc3f" dependencies = [ "pkg-config", "vcpkg", @@ -848,38 +902,27 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" - -[[package]] -name = "mbox" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f88d5c34d63aad11aa4321ef55ccb064af58b3ad8091079ae22bf83e5eb75d6" -dependencies = [ - "libc", - "rustc_version 0.3.3", - "stable_deref_trait", -] +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memoffset" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] @@ -892,19 +935,19 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" dependencies = [ "adler", ] [[package]] name = "mpi" -version = "0.6.0" -source = "git+https://github.com/juntyr/rsmpi?rev=ed8c10d#ed8c10d1a64b6f63c57d91359b07669ff45e3455" +version = "0.8.0" +source = "git+https://github.com/juntyr/rsmpi?rev=2988f56#2988f56e350311acc04119df924edc206e03ad39" dependencies = [ - "build-probe-mpi 0.1.2", + "build-probe-mpi 0.1.4 (git+https://github.com/juntyr/rsmpi?rev=2988f56)", "conv", "memoffset", "mpi-derive", @@ -916,21 +959,21 @@ dependencies = [ [[package]] name = "mpi-derive" -version = "0.1.0" -source = "git+https://github.com/juntyr/rsmpi?rev=ed8c10d#ed8c10d1a64b6f63c57d91359b07669ff45e3455" +version = "0.1.2" +source = "git+https://github.com/juntyr/rsmpi?rev=2988f56#2988f56e350311acc04119df924edc206e03ad39" dependencies = [ "proc-macro2", "quote", - "syn 2.0.49", + "syn 2.0.64", ] [[package]] name = "mpi-sys" -version = "0.2.0" -source = "git+https://github.com/juntyr/rsmpi?rev=ed8c10d#ed8c10d1a64b6f63c57d91359b07669ff45e3455" +version = "0.2.2" +source = "git+https://github.com/juntyr/rsmpi?rev=2988f56#2988f56e350311acc04119df924edc206e03ad39" dependencies = [ - "bindgen 0.65.1", - "build-probe-mpi 0.1.2", + "bindgen", + "build-probe-mpi 0.1.4 (git+https://github.com/juntyr/rsmpi?rev=2988f56)", "cc", ] @@ -979,7 +1022,7 @@ dependencies = [ "displaydoc", "final", "fnv", - "hashbrown 0.13.2", + "hashbrown", "libm", "log", "necsim-core", @@ -1038,10 +1081,9 @@ name = "necsim-partitioning-mpi" version = "0.1.0" dependencies = [ "anyhow", - "build-probe-mpi 0.1.3", + "build-probe-mpi 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "contracts", "humantime-serde", - "memoffset", "mpi", "necsim-core", "necsim-core-bond", @@ -1074,7 +1116,7 @@ dependencies = [ "log", "necsim-core", "process_path", - "rustc_version 0.4.0", + "rustc_version", "serde", ] @@ -1136,8 +1178,8 @@ dependencies = [ "necsim-core", "necsim-core-bond", "necsim-plugins-core", - "rustc_version 0.4.0", - "semver 1.0.22", + "rustc_version", + "semver", "serde", "serde_json", "tskit", @@ -1156,9 +1198,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -1182,23 +1224,6 @@ dependencies = [ "serde", ] -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - -[[package]] -name = "pest" -version = "2.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219c0dcc30b6a27553f9cc242972b67f75b60eb0db71f0b5462f38b058c41546" -dependencies = [ - "memchr", - "thiserror", - "ucd-trie", -] - [[package]] name = "pkg-config" version = "0.3.30" @@ -1222,12 +1247,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.2.16" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.49", + "syn 2.0.64", ] [[package]] @@ -1256,9 +1281,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" dependencies = [ "unicode-ident", ] @@ -1283,16 +1308,16 @@ dependencies = [ "lazy_static", "libc", "regex", - "semver 1.0.22", + "semver", "thiserror", "toml", ] [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -1329,9 +1354,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.3" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", @@ -1341,9 +1366,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", @@ -1352,9 +1377,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "ron" @@ -1363,18 +1388,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64", - "bitflags 2.4.2", + "bitflags 2.5.0", "serde", "serde_derive", ] [[package]] name = "rusqlite" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "549b9d036d571d42e6e85d1c1425e2ac83491075078ca9a15be021c56b1641f2" +checksum = "b838eba278d213a8beaf485bd313fd580ca4505a00d5871caeb1457c55322cae" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -1385,7 +1410,7 @@ dependencies = [ [[package]] name = "rust-cuda" version = "0.1.0" -source = "git+https://github.com/juntyr/rust-cuda?rev=6b53e88#6b53e88ee0cf10e68c85f8e09f092d8f7f7b4683" +source = "git+https://github.com/juntyr/rust-cuda?rev=f395253#f395253bb244827bc46600ef5ee87f687eda249b" dependencies = [ "const-type-layout", "final", @@ -1399,7 +1424,7 @@ dependencies = [ [[package]] name = "rust-cuda-derive" version = "0.1.0" -source = "git+https://github.com/juntyr/rust-cuda?rev=6b53e88#6b53e88ee0cf10e68c85f8e09f092d8f7f7b4683" +source = "git+https://github.com/juntyr/rust-cuda?rev=f395253#f395253bb244827bc46600ef5ee87f687eda249b" dependencies = [ "cargo_metadata", "colored", @@ -1418,7 +1443,7 @@ dependencies = [ [[package]] name = "rust-cuda-ptx-jit" version = "0.1.0" -source = "git+https://github.com/juntyr/rust-cuda?rev=6b53e88#6b53e88ee0cf10e68c85f8e09f092d8f7f7b4683" +source = "git+https://github.com/juntyr/rust-cuda?rev=f395253#f395253bb244827bc46600ef5ee87f687eda249b" dependencies = [ "lazy_static", "regex", @@ -1460,22 +1485,13 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - [[package]] name = "rustc_version" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.22", + "semver", ] [[package]] @@ -1488,7 +1504,7 @@ dependencies = [ "bincode", "clap", "colored", - "derive_builder", + "derive_builder 0.20.0", "either", "fnv", "getrandom", @@ -1624,11 +1640,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys", @@ -1637,9 +1653,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "seahash" @@ -1649,49 +1665,31 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] name = "semver" -version = "0.11.0" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - [[package]] name = "serde" -version = "1.0.196" +version = "1.0.202" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.196" +version = "1.0.202" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" dependencies = [ "proc-macro2", "quote", - "syn 2.0.49", + "syn 2.0.64", ] [[package]] @@ -1707,9 +1705,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.113" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa", "ryu", @@ -1718,9 +1716,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd154a240de39fdebcf5775d2675c204d7c13cf39a4c697be6493c8e734337c" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" dependencies = [ "itoa", "serde", @@ -1764,15 +1762,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "streaming-iterator" @@ -1797,9 +1789,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strsim" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" @@ -1814,9 +1806,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.49" +version = "2.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915aea9e586f80826ee59f8453c1101f9d1c4b3964cd2460185ee8e299ada496" +checksum = "7ad3dee41f36859875573074334c200d1add8e4a87bb37113ebd31d926b7b11f" dependencies = [ "proc-macro2", "quote", @@ -1825,22 +1817,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.49", + "syn 2.0.64", ] [[package]] @@ -1874,27 +1866,26 @@ dependencies = [ [[package]] name = "tskit" -version = "0.14.1" +version = "0.15.0-alpha.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e9f945be66e7cf5a9d4084a37fc9f18552039ad1c0e48389cda388ba0e45af0" +checksum = "2f81d88299be08aaed950ee88530a09d6fb33e84d475d6af1233f1a304a6d812" dependencies = [ - "bindgen 0.63.0", - "bitflags 1.3.2", + "bindgen", + "bitflags 2.5.0", "cc", "delegate", "humantime", "libc", - "mbox", "pkg-config", "streaming-iterator", "thiserror", ] [[package]] -name = "ucd-trie" -version = "0.1.6" +name = "typeid" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "059d83cc991e7a42fc37bd50941885db0888e34209f8cfd9aab07ddec03bc9cf" [[package]] name = "uname" @@ -1957,9 +1948,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1967,24 +1958,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.49", + "syn 2.0.64", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1992,22 +1983,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.49", + "syn 2.0.64", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "weezl" @@ -2064,7 +2055,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.5", ] [[package]] @@ -2084,17 +2075,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -2105,9 +2097,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -2117,9 +2109,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -2129,9 +2121,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -2141,9 +2139,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -2153,9 +2151,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -2165,9 +2163,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -2177,26 +2175,26 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.49", + "syn 2.0.64", ] diff --git a/necsim/core/Cargo.toml b/necsim/core/Cargo.toml index de5b6c629..f481e5de1 100644 --- a/necsim/core/Cargo.toml +++ b/necsim/core/Cargo.toml @@ -15,12 +15,12 @@ cuda = ["rust-cuda"] necsim-core-maths = { path = "maths" } necsim-core-bond = { path = "bond" } -const-type-layout = { version = "0.2.0", features = ["derive"] } +const-type-layout = { version = "0.3.0", features = ["derive"] } contracts = "0.6.3" serde = { version = "1.0", default-features = false, features = ["derive"] } [target.'cfg(target_os = "cuda")'.dependencies] -rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "6b53e88", features = ["derive"], optional = true } +rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "f395253", features = ["derive"], optional = true } [target.'cfg(not(target_os = "cuda"))'.dependencies] -rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "6b53e88", features = ["derive", "host"], optional = true } +rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "f395253", features = ["derive", "host"], optional = true } diff --git a/necsim/core/bond/Cargo.toml b/necsim/core/bond/Cargo.toml index c9c8651f6..fc004b4da 100644 --- a/necsim/core/bond/Cargo.toml +++ b/necsim/core/bond/Cargo.toml @@ -13,5 +13,5 @@ default = [] [dependencies] necsim-core-maths = { path = "../maths" } -const-type-layout = { version = "0.2.0", features = ["derive"] } +const-type-layout = { version = "0.3.0", features = ["derive"] } serde = { version = "1.0", default-features = false, features = ["derive"] } diff --git a/necsim/core/bond/src/lib.rs b/necsim/core/bond/src/lib.rs index 67c6b9e81..ff3007150 100644 --- a/necsim/core/bond/src/lib.rs +++ b/necsim/core/bond/src/lib.rs @@ -4,7 +4,6 @@ #![feature(const_float_bits_conv)] #![feature(const_float_classify)] #![feature(const_type_name)] -#![feature(offset_of)] #[macro_use] extern crate const_type_layout; diff --git a/necsim/core/maths/src/lib.rs b/necsim/core/maths/src/lib.rs index 8cbdb6b83..fe975dfb6 100644 --- a/necsim/core/maths/src/lib.rs +++ b/necsim/core/maths/src/lib.rs @@ -1,5 +1,6 @@ #![deny(clippy::pedantic)] #![no_std] +#![allow(internal_features)] #![feature(core_intrinsics)] pub trait MathsCore: 'static + Clone + core::fmt::Debug { diff --git a/necsim/core/src/lib.rs b/necsim/core/src/lib.rs index 0888987ba..86e145fbc 100644 --- a/necsim/core/src/lib.rs +++ b/necsim/core/src/lib.rs @@ -1,7 +1,6 @@ #![deny(clippy::pedantic)] #![no_std] #![feature(const_type_name)] -#![feature(offset_of)] #![feature(control_flow_enum)] #![feature(min_specialization)] diff --git a/necsim/core/src/reporter/null.rs b/necsim/core/src/reporter/null.rs index 36acf512b..a5ac741fa 100644 --- a/necsim/core/src/reporter/null.rs +++ b/necsim/core/src/reporter/null.rs @@ -1,5 +1,3 @@ -use core::u64; - use crate::{impl_report, reporter::Reporter}; #[allow(clippy::module_name_repetitions)] diff --git a/necsim/core/src/reporter/used.rs b/necsim/core/src/reporter/used.rs index 285202373..8d83cd198 100644 --- a/necsim/core/src/reporter/used.rs +++ b/necsim/core/src/reporter/used.rs @@ -14,7 +14,7 @@ pub type Ignored = MaybeUsed; impl<'a, T, B: Boolean> From<&'a T> for &'a MaybeUsed { fn from(inner: &'a T) -> Self { - unsafe { &*(inner as *const T).cast() } + unsafe { &*core::ptr::from_ref(inner).cast() } } } diff --git a/necsim/core/src/simulation/builder.rs b/necsim/core/src/simulation/builder.rs index c73c112cb..eda540f91 100644 --- a/necsim/core/src/simulation/builder.rs +++ b/necsim/core/src/simulation/builder.rs @@ -173,7 +173,7 @@ impl< // This is only safe as PartialSimulation's type and layout is a prefix // subsequence of Self's type and layout let partial_simulation = unsafe { - &mut *(self as *mut Self) + &mut *core::ptr::from_mut(self) .cast::>() }; diff --git a/necsim/impls/cuda/Cargo.toml b/necsim/impls/cuda/Cargo.toml index 677c9e908..5288ebe32 100644 --- a/necsim/impls/cuda/Cargo.toml +++ b/necsim/impls/cuda/Cargo.toml @@ -10,12 +10,12 @@ edition = "2021" [dependencies] necsim-core = { path = "../../core", features = ["cuda"] } -const-type-layout = { version = "0.2.0", features = ["derive"] } +const-type-layout = { version = "0.3.0", features = ["derive"] } contracts = "0.6.3" serde = { version = "1.0", default-features = false, features = ["derive"] } [target.'cfg(target_os = "cuda")'.dependencies] -rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "6b53e88", features = ["derive"] } +rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "f395253", features = ["derive"] } [target.'cfg(not(target_os = "cuda"))'.dependencies] -rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "6b53e88", features = ["derive", "host"] } +rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "f395253", features = ["derive", "host"] } diff --git a/necsim/impls/cuda/src/lib.rs b/necsim/impls/cuda/src/lib.rs index e7d657c28..7f5a3bf91 100644 --- a/necsim/impls/cuda/src/lib.rs +++ b/necsim/impls/cuda/src/lib.rs @@ -1,11 +1,11 @@ #![deny(clippy::pedantic)] #![no_std] -#![feature(core_intrinsics)] #![feature(const_type_name)] -#![feature(offset_of)] #![cfg_attr(target_os = "cuda", feature(asm_experimental_arch))] #![cfg_attr(target_os = "cuda", feature(asm_const))] #![cfg_attr(target_os = "cuda", feature(const_float_bits_conv))] +#![allow(internal_features)] +#![feature(core_intrinsics)] #![allow(incomplete_features)] #![feature(specialization)] diff --git a/necsim/impls/no-std/Cargo.toml b/necsim/impls/no-std/Cargo.toml index d1cad4374..d85745eb1 100644 --- a/necsim/impls/no-std/Cargo.toml +++ b/necsim/impls/no-std/Cargo.toml @@ -17,10 +17,10 @@ necsim-core-maths = { path = "../../core/maths" } necsim-core-bond = { path = "../../core/bond" } necsim-partitioning-core = { path = "../../partitioning/core" } -const-type-layout = { version = "0.2.0", features = ["derive"] } +const-type-layout = { version = "0.3.0", features = ["derive"] } contracts = "0.6.3" libm = "0.2" -hashbrown = "0.13" +hashbrown = "0.14" slab = { version = "0.4", default-features = false, features = [] } serde = { version = "1.0", default-features = false, features = ["alloc", "derive"] } log = "0.4" @@ -30,7 +30,7 @@ fnv = { version = "1.0", default-features = false, features = [] } rand_core = "0.6" [target.'cfg(target_os = "cuda")'.dependencies] -rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "6b53e88", features = ["derive"], optional = true } +rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "f395253", features = ["derive"], optional = true } [target.'cfg(not(target_os = "cuda"))'.dependencies] -rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "6b53e88", features = ["derive", "host"], optional = true } +rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "f395253", features = ["derive", "host"], optional = true } diff --git a/necsim/impls/no-std/src/alias/mod.rs b/necsim/impls/no-std/src/alias/mod.rs index 2eec4ef53..641478464 100644 --- a/necsim/impls/no-std/src/alias/mod.rs +++ b/necsim/impls/no-std/src/alias/mod.rs @@ -83,7 +83,7 @@ impl AliasMethodSampler { // Safety: The bucket weights are now probabilities in [0.0; 1.0] #[allow(non_snake_case)] - let Us = unsafe { core::mem::transmute(Us) }; + let Us = unsafe { core::mem::transmute::, Vec>(Us) }; Self { Us, Es, Ks } } diff --git a/necsim/impls/no-std/src/cogs/dispersal_sampler/in_memory/cumulative/mod.rs b/necsim/impls/no-std/src/cogs/dispersal_sampler/in_memory/cumulative/mod.rs index 3ca7561e3..cb647c30b 100644 --- a/necsim/impls/no-std/src/cogs/dispersal_sampler/in_memory/cumulative/mod.rs +++ b/necsim/impls/no-std/src/cogs/dispersal_sampler/in_memory/cumulative/mod.rs @@ -92,7 +92,11 @@ impl, G: RngCore> InMemoryDispersalSampler, Box<[ClosedUnitF64]>>( + cumulative_dispersal, + ) + }; InMemoryCumulativeDispersalSampler { cumulative_dispersal, diff --git a/necsim/impls/no-std/src/cogs/habitat/wrapping_noise/opensimplex_noise/vector/mod.rs b/necsim/impls/no-std/src/cogs/habitat/wrapping_noise/opensimplex_noise/vector/mod.rs index 83c9c00bc..b13536d3c 100644 --- a/necsim/impls/no-std/src/cogs/habitat/wrapping_noise/opensimplex_noise/vector/mod.rs +++ b/necsim/impls/no-std/src/cogs/habitat/wrapping_noise/opensimplex_noise/vector/mod.rs @@ -28,12 +28,3 @@ impl< > VecType for X { } - -trait VecArgumentType: - Sub + Add + Mul + Copy -{ -} -impl + Add + Mul + Copy> - VecArgumentType for T -{ -} diff --git a/necsim/impls/no-std/src/cogs/turnover_rate/in_memory.rs b/necsim/impls/no-std/src/cogs/turnover_rate/in_memory.rs index 87ba5c3a8..dc884bc0d 100644 --- a/necsim/impls/no-std/src/cogs/turnover_rate/in_memory.rs +++ b/necsim/impls/no-std/src/cogs/turnover_rate/in_memory.rs @@ -1,3 +1,5 @@ +#![allow(non_local_definitions)] // FIXME: displaydoc + use alloc::boxed::Box; use r#final::Final; diff --git a/necsim/impls/no-std/src/lib.rs b/necsim/impls/no-std/src/lib.rs index f26467e88..aa63583a1 100644 --- a/necsim/impls/no-std/src/lib.rs +++ b/necsim/impls/no-std/src/lib.rs @@ -3,7 +3,6 @@ #![feature(iter_advance_by)] #![feature(extract_if)] #![feature(const_type_name)] -#![feature(offset_of)] #![feature(negative_impls)] #![feature(impl_trait_in_assoc_type)] #![allow(incomplete_features)] diff --git a/necsim/impls/no-std/src/parallelisation/independent/monolithic/reporter/recorded.rs b/necsim/impls/no-std/src/parallelisation/independent/monolithic/reporter/recorded.rs index 65a4d746b..455313de5 100644 --- a/necsim/impls/no-std/src/parallelisation/independent/monolithic/reporter/recorded.rs +++ b/necsim/impls/no-std/src/parallelisation/independent/monolithic/reporter/recorded.rs @@ -19,14 +19,6 @@ impl<'l, 'p, R: Reporter, P: LocalPartition<'p, R>> fmt::Debug for RecordedWaterLevelReporterProxy<'l, 'p, R, P> { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - struct EventBufferLen(usize); - - impl fmt::Debug for EventBufferLen { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "Vec", self.0) - } - } - fmt.debug_struct(stringify!(RecordedWaterLevelReporterProxy)) .field("water_level", &self.water_level) .finish() diff --git a/necsim/impls/std/src/event_log/recorder.rs b/necsim/impls/std/src/event_log/recorder.rs index b12ed5be6..59cb9e2da 100644 --- a/necsim/impls/std/src/event_log/recorder.rs +++ b/necsim/impls/std/src/event_log/recorder.rs @@ -124,7 +124,7 @@ impl EventLogRecorder { return Err(anyhow::anyhow!("{:?} is a read-only directory.", path)); } - self.directory = path.to_owned(); + path.clone_into(&mut self.directory); Ok(self) } diff --git a/necsim/partitioning/mpi/Cargo.toml b/necsim/partitioning/mpi/Cargo.toml index d392f8e1b..fa2c13c2f 100644 --- a/necsim/partitioning/mpi/Cargo.toml +++ b/necsim/partitioning/mpi/Cargo.toml @@ -14,10 +14,9 @@ necsim-impls-std = { path = "../../impls/std" } necsim-partitioning-core = { path = "../../partitioning/core" } contracts = "0.6.3" -mpi = { git = "https://github.com/juntyr/rsmpi", rev = "ed8c10d", version = "0.6", default-features = false, features = ["derive"] } +mpi = { git = "https://github.com/juntyr/rsmpi", rev = "2988f56", version = "0.8", default-features = false, features = ["derive"] } thiserror = "1.0" anyhow = "1.0" -memoffset = "0.8" serde = "1.0" serde_state = "0.4" serde_derive_state = "0.4" diff --git a/necsim/partitioning/mpi/src/lib.rs b/necsim/partitioning/mpi/src/lib.rs index ca58d59e2..0872e5d88 100644 --- a/necsim/partitioning/mpi/src/lib.rs +++ b/necsim/partitioning/mpi/src/lib.rs @@ -9,7 +9,7 @@ use anyhow::Context; use humantime_serde::re::humantime::format_duration; use mpi::{ environment::Universe, - topology::{Communicator, Rank, SystemCommunicator}, + topology::{Communicator, Rank, SimpleCommunicator}, Tag, }; use serde::{ser::SerializeStruct, Deserialize, Serialize, Serializer}; @@ -46,7 +46,7 @@ pub enum MpiLocalPartitionError { pub struct MpiPartitioning { universe: ManuallyDrop, - world: SystemCommunicator, + world: SimpleCommunicator, migration_interval: Duration, progress_interval: Duration, } diff --git a/necsim/partitioning/mpi/src/partition/parallel.rs b/necsim/partitioning/mpi/src/partition/parallel.rs index ef2cc99b3..8985d0366 100644 --- a/necsim/partitioning/mpi/src/partition/parallel.rs +++ b/necsim/partitioning/mpi/src/partition/parallel.rs @@ -10,7 +10,7 @@ use mpi::{ datatype::Equivalence, environment::Universe, point_to_point::{Destination, Source}, - topology::{Communicator, SystemCommunicator}, + topology::{Communicator, SimpleCommunicator}, }; use necsim_core::{ @@ -36,7 +36,7 @@ use crate::{ pub struct MpiParallelPartition<'p, R: Reporter> { _universe: Universe, - world: SystemCommunicator, + world: SimpleCommunicator, mpi_local_global_wait: DataOrRequest<'p, (bool, bool), bool>, mpi_local_remaining: DataOrRequest<'p, u64, u64>, mpi_migration_buffers: Box<[DataOrRequest<'p, Vec, [MpiMigratingLineage]>]>, @@ -261,7 +261,7 @@ impl<'p, R: Reporter> LocalPartition<'p, R> for MpiParallelPartition<'p, R> { let local_partition_rank = self.get_partition().rank(); let (global_min_time, global_min_rank) = - reduce_lexicographic_min_time_rank(self.world, local_time, local_partition_rank); + reduce_lexicographic_min_time_rank(&self.world, local_time, local_partition_rank); if global_min_rank == local_partition_rank { Ok(local_time) diff --git a/necsim/partitioning/mpi/src/partition/root.rs b/necsim/partitioning/mpi/src/partition/root.rs index 9d99b6cb8..db2d67ae7 100644 --- a/necsim/partitioning/mpi/src/partition/root.rs +++ b/necsim/partitioning/mpi/src/partition/root.rs @@ -11,7 +11,7 @@ use mpi::{ datatype::Equivalence, environment::Universe, point_to_point::{Destination, Source}, - topology::{Communicator, SystemCommunicator}, + topology::{Communicator, SimpleCommunicator}, }; use necsim_core::{ @@ -37,7 +37,7 @@ use crate::{ pub struct MpiRootPartition<'p, R: Reporter> { _universe: Universe, - world: SystemCommunicator, + world: SimpleCommunicator, mpi_local_global_wait: DataOrRequest<'p, (bool, bool), bool>, mpi_migration_buffers: Box<[DataOrRequest<'p, Vec, [MpiMigratingLineage]>]>, migration_buffers: Box<[Vec]>, @@ -279,7 +279,7 @@ impl<'p, R: Reporter> LocalPartition<'p, R> for MpiRootPartition<'p, R> { let local_partition_rank = self.get_partition().rank(); let (global_min_time, global_min_rank) = - reduce_lexicographic_min_time_rank(self.world, local_time, local_partition_rank); + reduce_lexicographic_min_time_rank(&self.world, local_time, local_partition_rank); if global_min_rank == local_partition_rank { Ok(local_time) diff --git a/necsim/partitioning/mpi/src/partition/utils.rs b/necsim/partitioning/mpi/src/partition/utils.rs index 9bd5c690b..ef1400166 100644 --- a/necsim/partitioning/mpi/src/partition/utils.rs +++ b/necsim/partitioning/mpi/src/partition/utils.rs @@ -1,14 +1,13 @@ use std::{ - mem::MaybeUninit, + mem::{offset_of, MaybeUninit}, os::raw::{c_int, c_void}, }; -use memoffset::offset_of; use mpi::{ collective::UnsafeUserOperation, datatype::{Equivalence, UserDatatype}, ffi::MPI_Datatype, - topology::SystemCommunicator, + topology::SimpleCommunicator, traits::CommunicatorCollectives, }; @@ -23,7 +22,7 @@ struct TimeRank { } pub fn reduce_lexicographic_min_time_rank( - world: SystemCommunicator, + world: &SimpleCommunicator, time: PositiveF64, rank: u32, ) -> (PositiveF64, u32) { diff --git a/necsim/plugins/core/Cargo.toml b/necsim/plugins/core/Cargo.toml index d9c179082..547cbc256 100644 --- a/necsim/plugins/core/Cargo.toml +++ b/necsim/plugins/core/Cargo.toml @@ -17,7 +17,7 @@ necsim-core = { path = "../../core" } log = "0.4" serde = { version = "1.0", features = ["derive"] } -erased-serde = "0.3" +erased-serde = "0.4" libloading = { version = "0.8", optional = true } process_path = { version = "0.1", optional = true } diff --git a/necsim/plugins/core/src/export.rs b/necsim/plugins/core/src/export.rs index 25218b5a8..2a0a80ab9 100644 --- a/necsim/plugins/core/src/export.rs +++ b/necsim/plugins/core/src/export.rs @@ -72,7 +72,24 @@ impl From for UnsafeReporterPlugin { > = Box::new(reporter); Self { - reporter: unsafe { std::mem::transmute(boxed_reporter) }, + reporter: unsafe { + std::mem::transmute::< + Box< + dyn SerializeableReporter< + ReportDispersal = R::ReportDispersal, + ReportProgress = R::ReportProgress, + ReportSpeciation = R::ReportSpeciation, + >, + >, + Box< + dyn SerializeableReporter< + ReportDispersal = True, + ReportProgress = True, + ReportSpeciation = True, + >, + >, + >(boxed_reporter) + }, filter: ReporterPluginFilter::from_reporter::(), } } diff --git a/necsim/plugins/species/Cargo.toml b/necsim/plugins/species/Cargo.toml index 96543ed6d..813ca7036 100644 --- a/necsim/plugins/species/Cargo.toml +++ b/necsim/plugins/species/Cargo.toml @@ -17,12 +17,12 @@ necsim-plugins-core = { path = "../core", features = ["export"] } serde = { version = "1.0", features = ["derive"] } log = { version = "0.4" } -rusqlite = "0.29" +rusqlite = "0.31" fnv = "1.0" -base32 = "0.4" +base32 = "0.5" hex = "0.4" bincode = "1.3" -arrow2 = { version = "0.17", features = ["io_ipc"] } +arrow2 = { version = "0.18", features = ["io_ipc"] } [dev-dependencies] rand = "0.8" diff --git a/necsim/plugins/tskit/Cargo.toml b/necsim/plugins/tskit/Cargo.toml index 4eff8f963..5e35ee549 100644 --- a/necsim/plugins/tskit/Cargo.toml +++ b/necsim/plugins/tskit/Cargo.toml @@ -17,7 +17,7 @@ necsim-plugins-core = { path = "../core", features = ["export"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -tskit = { version = "0.14.0", features = ["provenance"] } +tskit = { version = "0.15.0-alpha.0", features = ["provenance"] } uname = "0.1" findshlibs = "0.10" fnv = "1.0" diff --git a/necsim/plugins/tskit/src/tree/metadata.rs b/necsim/plugins/tskit/src/tree/metadata.rs index b3cc23375..bb26bfe0b 100644 --- a/necsim/plugins/tskit/src/tree/metadata.rs +++ b/necsim/plugins/tskit/src/tree/metadata.rs @@ -39,6 +39,6 @@ impl NodeMetadata for GlobalLineageMetadata {} impl GlobalLineageMetadata { pub fn new(reference: &GlobalLineageReference) -> &Self { - unsafe { &*(reference as *const GlobalLineageReference).cast() } + unsafe { &*std::ptr::from_ref(reference).cast() } } } diff --git a/necsim/plugins/tskit/src/tree/table.rs b/necsim/plugins/tskit/src/tree/table.rs index ff717e346..5e36cd777 100644 --- a/necsim/plugins/tskit/src/tree/table.rs +++ b/necsim/plugins/tskit/src/tree/table.rs @@ -1,7 +1,10 @@ use std::collections::VecDeque; use necsim_core_bond::NonNegativeF64; -use tskit::{IndividualId, NodeId, TableOutputOptions, TableSortOptions, TreeSequenceFlags}; +use tskit::{ + IndividualFlags, IndividualId, NodeFlags, NodeId, TableOutputOptions, TableSortOptions, + TreeSequenceFlags, +}; use necsim_core::{landscape::IndexedLocation, lineage::GlobalLineageReference}; @@ -9,8 +12,6 @@ use super::{ metadata::GlobalLineageMetadata, TskitTreeReporter, TSK_SEQUENCE_MAX, TSK_SEQUENCE_MIN, }; -const TSK_FLAGS_EMPTY: tskit::tsk_flags_t = 0_u32; - impl TskitTreeReporter { pub(super) fn store_individual_origin( &mut self, @@ -124,14 +125,14 @@ impl TskitTreeReporter { // Insert the lineage as an individual let individual_id = self .table - .add_individual_with_metadata(TSK_FLAGS_EMPTY, location, parents, metadata) + .add_individual_with_metadata(IndividualFlags::empty(), location, parents, metadata) .unwrap(); // Create corresponding node let node_id = self .table .add_node_with_metadata( - tskit::TSK_NODE_IS_SAMPLE, + NodeFlags::new_sample(), time.get(), tskit::PopulationId::NULL, individual_id, diff --git a/rust-toolchain b/rust-toolchain index 3ab928278..73b9f40a2 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1,4 +1,5 @@ [toolchain] -channel = "nightly-2023-11-10" +# Pin to final 1.79.0 nightly +channel = "nightly-2024-04-28" components = [ "cargo", "rustfmt", "clippy", "rust-src" ] targets = [ "x86_64-unknown-linux-gnu", "nvptx64-nvidia-cuda" ] diff --git a/rustcoalescence/Cargo.toml b/rustcoalescence/Cargo.toml index 0ff0fb65c..2215b6e02 100644 --- a/rustcoalescence/Cargo.toml +++ b/rustcoalescence/Cargo.toml @@ -87,9 +87,9 @@ serde_state = "0.4" serde_derive_state = "0.4" getrandom = "0.2" bincode = "1.3" -base32 = "0.4" +base32 = "0.5" tiny-keccak = { version = "2.0", features = ["keccak"] } -derive_builder = "0.12" +derive_builder = "0.20" fnv = "1.0" adler = "1.0" either = "1.10" diff --git a/rustcoalescence/algorithms/cuda/Cargo.toml b/rustcoalescence/algorithms/cuda/Cargo.toml index 22529049a..be7135a5c 100644 --- a/rustcoalescence/algorithms/cuda/Cargo.toml +++ b/rustcoalescence/algorithms/cuda/Cargo.toml @@ -32,4 +32,4 @@ thiserror = "1.0" serde = { version = "1.0", features = ["derive"] } serde_state = "0.4" serde_derive_state = "0.4" -rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "6b53e88", features = ["host"] } +rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "f395253", features = ["host"] } diff --git a/rustcoalescence/algorithms/cuda/cpu-kernel/Cargo.toml b/rustcoalescence/algorithms/cuda/cpu-kernel/Cargo.toml index bdee6575e..bab5e740e 100644 --- a/rustcoalescence/algorithms/cuda/cpu-kernel/Cargo.toml +++ b/rustcoalescence/algorithms/cuda/cpu-kernel/Cargo.toml @@ -23,4 +23,4 @@ necsim-impls-no-std = { path = "../../../../necsim/impls/no-std", features = ["c necsim-impls-cuda = { path = "../../../../necsim/impls/cuda" } rustcoalescence-algorithms-cuda-gpu-kernel = { path = "../gpu-kernel" } -rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "6b53e88", features = ["host"] } +rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "f395253", features = ["host"] } diff --git a/rustcoalescence/algorithms/cuda/cpu-kernel/src/link.rs b/rustcoalescence/algorithms/cuda/cpu-kernel/src/link.rs index 927c7a2fd..ee77a5d11 100644 --- a/rustcoalescence/algorithms/cuda/cpu-kernel/src/link.rs +++ b/rustcoalescence/algorithms/cuda/cpu-kernel/src/link.rs @@ -1,8 +1,117 @@ +use necsim_core::{ + cogs::{ + CoalescenceSampler, DispersalSampler, EmigrationExit, Habitat, ImmigrationEntry, + LineageStore, MathsCore, PrimeableRng, SpeciationProbability, TurnoverRate, + }, + reporter::boolean::Boolean, +}; + +use necsim_impls_no_std::cogs::{ + active_lineage_sampler::singular::SingularActiveLineageSampler, + event_sampler::tracking::MinSpeciationTrackingEventSampler, +}; + +use rust_cuda::{ + common::RustToCuda, + host::{LaunchConfig, LaunchPackage, Launcher}, + rustacuda::{error::CudaResult, function::Function}, +}; + #[allow(unused_imports)] use rustcoalescence_algorithms_cuda_gpu_kernel::{SimulatableKernel, SimulationKernelArgs}; -#[allow(unused_imports)] -use crate::SimulationKernel; +#[repr(transparent)] +pub struct SimulationKernel< + M: MathsCore, + H: Habitat + RustToCuda, + G: PrimeableRng + RustToCuda, + S: LineageStore + RustToCuda, + X: EmigrationExit + RustToCuda, + D: DispersalSampler + RustToCuda, + C: CoalescenceSampler + RustToCuda, + T: TurnoverRate + RustToCuda, + N: SpeciationProbability + RustToCuda, + E: MinSpeciationTrackingEventSampler + RustToCuda, + I: ImmigrationEntry + RustToCuda, + A: SingularActiveLineageSampler + RustToCuda, + ReportSpeciation: Boolean, + ReportDispersal: Boolean, +>( + #[allow(clippy::type_complexity)] + pub(crate) crate::SimulationKernel< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + ReportSpeciation, + ReportDispersal, + >, +); + +impl< + M: MathsCore, + H: Habitat + RustToCuda, + G: PrimeableRng + RustToCuda, + S: LineageStore + RustToCuda, + X: EmigrationExit + RustToCuda, + D: DispersalSampler + RustToCuda, + C: CoalescenceSampler + RustToCuda, + T: TurnoverRate + RustToCuda, + N: SpeciationProbability + RustToCuda, + E: MinSpeciationTrackingEventSampler + RustToCuda, + I: ImmigrationEntry + RustToCuda, + A: SingularActiveLineageSampler + RustToCuda, + ReportSpeciation: Boolean, + ReportDispersal: Boolean, + > Launcher + for SimulationKernel +{ + type CompilationWatcher = Box; + type KernelTraitObject = dyn SimulatableKernel< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + ReportSpeciation, + ReportDispersal, + >; + + fn get_launch_package(&mut self) -> LaunchPackage { + LaunchPackage { + config: LaunchConfig { + grid: self.0.grid.clone(), + block: self.0.block.clone(), + shared_memory_size: 0_u32, + ptx_jit: self.0.ptx_jit, + }, + + kernel: &mut self.0.kernel, + stream: &mut self.0.stream, + + watcher: &mut self.0.watcher, + } + } + + fn on_compile(kernel: &Function, watcher: &mut Self::CompilationWatcher) -> CudaResult<()> { + (watcher)(kernel) + } +} #[allow(unused_macros)] macro_rules! link_kernel { diff --git a/rustcoalescence/algorithms/cuda/cpu-kernel/src/patch.rs b/rustcoalescence/algorithms/cuda/cpu-kernel/src/patch.rs index 129565624..e9bb646b6 100644 --- a/rustcoalescence/algorithms/cuda/cpu-kernel/src/patch.rs +++ b/rustcoalescence/algorithms/cuda/cpu-kernel/src/patch.rs @@ -27,16 +27,7 @@ use rustcoalescence_algorithms_cuda_gpu_kernel::SimulatableKernel; use crate::SimulationKernel; -// If `Kernel` is implemented for `ReportSpeciation` x `ReportDispersal`, i.e. -// for {`False`, `True`} x {`False`, `True`} then it is implemented for all -// `Boolean`s. However, Rust does not recognise that `Boolean` is closed over -// {`False`, `True`}. These default impls provide the necessary coersion. - -extern "C" { - fn unreachable_cuda_simulation_linking_reporter() -> !; -} - -#[allow(clippy::trait_duplication_in_bounds)] +#[allow(clippy::missing_transmute_annotations, clippy::too_many_lines)] unsafe impl< M: MathsCore, H: Habitat + RustToCuda, @@ -55,20 +46,85 @@ unsafe impl< > SimulatableKernel for SimulationKernel where - SimulationKernel: + crate::link::SimulationKernel: SimulatableKernel, - SimulationKernel: + crate::link::SimulationKernel: SimulatableKernel, - SimulationKernel: + crate::link::SimulationKernel: SimulatableKernel, - SimulationKernel: + crate::link::SimulationKernel: SimulatableKernel, { - default fn get_ptx_str() -> &'static str { - unsafe { unreachable_cuda_simulation_linking_reporter() } + fn get_ptx_str() -> &'static str { + match (ReportSpeciation::VALUE, ReportDispersal::VALUE) { + (false, false) => crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + False, + False, + >::get_ptx_str(), + (false, true) => crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + False, + True, + >::get_ptx_str(), + (true, false) => crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + True, + False, + >::get_ptx_str(), + (true, true) => crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + True, + True, + >::get_ptx_str(), + } } - default fn new_kernel() -> CudaResult< + fn new_kernel() -> CudaResult< TypedKernel< dyn SimulatableKernel< M, @@ -88,54 +144,345 @@ where >, >, > { - unsafe { unreachable_cuda_simulation_linking_reporter() } + match (ReportSpeciation::VALUE, ReportDispersal::VALUE) { + (false, false) => unsafe { + std::mem::transmute(crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + False, + False, + >::new_kernel()) + }, + (false, true) => unsafe { + std::mem::transmute(crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + False, + True, + >::new_kernel()) + }, + (true, false) => unsafe { + std::mem::transmute(crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + True, + False, + >::new_kernel()) + }, + (true, true) => unsafe { + std::mem::transmute(crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + True, + True, + >::new_kernel()) + }, + } } - default fn simulate( + fn simulate( &mut self, - _simulation: &mut Simulation, - _task_list: &mut ValueBuffer, - _event_buffer_reporter: &mut EventBuffer, - _min_spec_sample_buffer: &mut ValueBuffer, - _next_event_time_buffer: &mut ValueBuffer, - _total_time_max: &AtomicU64, - _total_steps_sum: &AtomicU64, - _max_steps: u64, - _max_next_event_time: NonNegativeF64, + simulation: &mut Simulation, + task_list: &mut ValueBuffer, + event_buffer_reporter: &mut EventBuffer, + min_spec_sample_buffer: &mut ValueBuffer, + next_event_time_buffer: &mut ValueBuffer, + total_time_max: &AtomicU64, + total_steps_sum: &AtomicU64, + max_steps: u64, + max_next_event_time: NonNegativeF64, ) -> CudaResult<()> { - unsafe { unreachable_cuda_simulation_linking_reporter() } + match (ReportSpeciation::VALUE, ReportDispersal::VALUE) { + (false, false) => crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + False, + False, + >::simulate( + unsafe { &mut *std::ptr::from_mut(self).cast() }, + simulation, + task_list, + unsafe { &mut *std::ptr::from_mut(event_buffer_reporter).cast() }, + min_spec_sample_buffer, + next_event_time_buffer, + total_time_max, + total_steps_sum, + max_steps, + max_next_event_time, + ), + (false, true) => crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + False, + True, + >::simulate( + unsafe { &mut *std::ptr::from_mut(self).cast() }, + simulation, + task_list, + unsafe { &mut *std::ptr::from_mut(event_buffer_reporter).cast() }, + min_spec_sample_buffer, + next_event_time_buffer, + total_time_max, + total_steps_sum, + max_steps, + max_next_event_time, + ), + (true, false) => crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + True, + False, + >::simulate( + unsafe { &mut *std::ptr::from_mut(self).cast() }, + simulation, + task_list, + unsafe { &mut *std::ptr::from_mut(event_buffer_reporter).cast() }, + min_spec_sample_buffer, + next_event_time_buffer, + total_time_max, + total_steps_sum, + max_steps, + max_next_event_time, + ), + (true, true) => crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + True, + True, + >::simulate( + unsafe { &mut *std::ptr::from_mut(self).cast() }, + simulation, + task_list, + unsafe { &mut *std::ptr::from_mut(event_buffer_reporter).cast() }, + min_spec_sample_buffer, + next_event_time_buffer, + total_time_max, + total_steps_sum, + max_steps, + max_next_event_time, + ), + } } - default fn simulate_raw( + fn simulate_raw( &mut self, - _simulation: HostAndDeviceMutRef< + simulation: HostAndDeviceMutRef< DeviceAccessible< as RustToCuda>::CudaRepresentation, >, >, - _task_list: HostAndDeviceMutRef< + task_list: HostAndDeviceMutRef< DeviceAccessible< as RustToCuda>::CudaRepresentation>, >, - _event_buffer_reporter: HostAndDeviceMutRef< + event_buffer_reporter: HostAndDeviceMutRef< DeviceAccessible< as RustToCuda>::CudaRepresentation, >, >, - _min_spec_sample_buffer: HostAndDeviceMutRef< + min_spec_sample_buffer: HostAndDeviceMutRef< DeviceAccessible< as RustToCuda>::CudaRepresentation, >, >, - _next_event_time_buffer: HostAndDeviceMutRef< + next_event_time_buffer: HostAndDeviceMutRef< DeviceAccessible< as RustToCuda>::CudaRepresentation, >, >, - _total_time_max: HostAndDeviceConstRef>, - _total_steps_sum: HostAndDeviceConstRef>, - _max_steps: SafeDeviceCopyWrapper, - _max_next_event_time: SafeDeviceCopyWrapper, + total_time_max: HostAndDeviceConstRef>, + total_steps_sum: HostAndDeviceConstRef>, + max_steps: SafeDeviceCopyWrapper, + max_next_event_time: SafeDeviceCopyWrapper, ) -> CudaResult<()> { - unsafe { unreachable_cuda_simulation_linking_reporter() } + match (ReportSpeciation::VALUE, ReportDispersal::VALUE) { + (false, false) => crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + False, + False, + >::simulate_raw( + unsafe { &mut *std::ptr::from_mut(self).cast() }, + simulation, + task_list, + unsafe { std::mem::transmute(event_buffer_reporter) }, + min_spec_sample_buffer, + next_event_time_buffer, + total_time_max, + total_steps_sum, + max_steps, + max_next_event_time, + ), + (false, true) => crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + False, + True, + >::simulate_raw( + unsafe { &mut *std::ptr::from_mut(self).cast() }, + simulation, + task_list, + unsafe { std::mem::transmute(event_buffer_reporter) }, + min_spec_sample_buffer, + next_event_time_buffer, + total_time_max, + total_steps_sum, + max_steps, + max_next_event_time, + ), + (true, false) => crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + True, + False, + >::simulate_raw( + unsafe { &mut *std::ptr::from_mut(self).cast() }, + simulation, + task_list, + unsafe { std::mem::transmute(event_buffer_reporter) }, + min_spec_sample_buffer, + next_event_time_buffer, + total_time_max, + total_steps_sum, + max_steps, + max_next_event_time, + ), + (true, true) => crate::link::SimulationKernel::< + M, + H, + G, + S, + X, + D, + C, + T, + N, + E, + I, + A, + True, + True, + >::simulate_raw( + unsafe { &mut *std::ptr::from_mut(self).cast() }, + simulation, + task_list, + unsafe { std::mem::transmute(event_buffer_reporter) }, + min_spec_sample_buffer, + next_event_time_buffer, + total_time_max, + total_steps_sum, + max_steps, + max_next_event_time, + ), + } } } diff --git a/rustcoalescence/algorithms/cuda/gpu-kernel/Cargo.toml b/rustcoalescence/algorithms/cuda/gpu-kernel/Cargo.toml index 2a13df0fc..a45a7c862 100644 --- a/rustcoalescence/algorithms/cuda/gpu-kernel/Cargo.toml +++ b/rustcoalescence/algorithms/cuda/gpu-kernel/Cargo.toml @@ -16,4 +16,4 @@ necsim-core-bond = { path = "../../../../necsim/core/bond" } necsim-impls-no-std = { path = "../../../../necsim/impls/no-std", features = ["cuda"] } necsim-impls-cuda = { path = "../../../../necsim/impls/cuda" } -rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "6b53e88", features = ["derive"] } +rust-cuda = { git = "https://github.com/juntyr/rust-cuda", rev = "f395253", features = ["derive"] } diff --git a/rustcoalescence/algorithms/cuda/gpu-kernel/src/lib.rs b/rustcoalescence/algorithms/cuda/gpu-kernel/src/lib.rs index 1e5724d9c..3365963fd 100644 --- a/rustcoalescence/algorithms/cuda/gpu-kernel/src/lib.rs +++ b/rustcoalescence/algorithms/cuda/gpu-kernel/src/lib.rs @@ -5,7 +5,7 @@ #![cfg_attr(target_os = "cuda", feature(panic_info_message))] #![cfg_attr(target_os = "cuda", feature(atomic_from_mut))] #![cfg_attr(target_os = "cuda", feature(asm_experimental_arch))] -#![cfg_attr(target_os = "cuda", feature(stdsimd))] +#![cfg_attr(target_os = "cuda", feature(stdarch_nvptx))] #![cfg_attr(target_os = "cuda", feature(control_flow_enum))] #![allow(long_running_const_eval)] #![recursion_limit = "1024"] diff --git a/rustcoalescence/scenarios/src/lib.rs b/rustcoalescence/scenarios/src/lib.rs index 783b2d7ac..388110982 100644 --- a/rustcoalescence/scenarios/src/lib.rs +++ b/rustcoalescence/scenarios/src/lib.rs @@ -1,5 +1,4 @@ #![deny(clippy::pedantic)] -#![feature(associated_type_bounds)] #![feature(never_type)] #[allow(unused_imports)] diff --git a/rustcoalescence/scenarios/src/spatially_explicit/maps/mod.rs b/rustcoalescence/scenarios/src/spatially_explicit/maps/mod.rs index 3b54961eb..0817cbaed 100644 --- a/rustcoalescence/scenarios/src/spatially_explicit/maps/mod.rs +++ b/rustcoalescence/scenarios/src/spatially_explicit/maps/mod.rs @@ -25,7 +25,7 @@ pub fn load_dispersal_map( anyhow::bail!("Dispersal weights are not all non-negative") } - Ok(unsafe { std::mem::transmute(map) }) + Ok(unsafe { std::mem::transmute::, Array2D>(map) }) })() .with_context(|| format!("Failed to load the dispersal map from {path:?}.")) } @@ -47,7 +47,7 @@ pub fn load_turnover_map( anyhow::bail!("Turnover rates are not all non-negative") } - Ok(unsafe { std::mem::transmute(map) }) + Ok(unsafe { std::mem::transmute::, Array2D>(map) }) })() .with_context(|| format!("Failed to load the turnover map from {path:?}.")) } diff --git a/rustcoalescence/scenarios/src/spatially_explicit/turnover/map.rs b/rustcoalescence/scenarios/src/spatially_explicit/turnover/map.rs index 4bfe771f9..3d56f5a49 100644 --- a/rustcoalescence/scenarios/src/spatially_explicit/turnover/map.rs +++ b/rustcoalescence/scenarios/src/spatially_explicit/turnover/map.rs @@ -1,3 +1,5 @@ +#![allow(non_local_definitions)] // FIXME: displaydoc + use std::{convert::TryFrom, marker::PhantomData, path::PathBuf}; use serde::{Deserialize, Serialize, Serializer}; diff --git a/rustcoalescence/scenarios/src/spatially_explicit/turnover/uniform.rs b/rustcoalescence/scenarios/src/spatially_explicit/turnover/uniform.rs index 45dbbbc0a..a5131f351 100644 --- a/rustcoalescence/scenarios/src/spatially_explicit/turnover/uniform.rs +++ b/rustcoalescence/scenarios/src/spatially_explicit/turnover/uniform.rs @@ -1,3 +1,5 @@ +#![allow(non_local_definitions)] // FIXME: displaydoc + use std::{convert::TryFrom, marker::PhantomData, path::PathBuf}; use serde::{Deserialize, Serialize, Serializer}; diff --git a/rustcoalescence/src/args/config/rng/mod.rs b/rustcoalescence/src/args/config/rng/mod.rs index 6899a848a..5e536a5c3 100644 --- a/rustcoalescence/src/args/config/rng/mod.rs +++ b/rustcoalescence/src/args/config/rng/mod.rs @@ -188,11 +188,7 @@ impl<'a> ProtectedState<'a> { } fn from_bytes(bytes: &'a [u8]) -> Option { - if bytes.len() < 4 { - return None; - } - - let (state, checksum) = bytes.rsplit_array_ref(); + let (state, checksum) = bytes.split_last_chunk()?; let checksum = u32::from_le_bytes(*checksum); if adler::adler32_slice(state) != checksum {