From 9bd41cb918b661f85df66417726f6ed973f3e4ac Mon Sep 17 00:00:00 2001 From: Dominik Maier Date: Sat, 9 Nov 2024 19:11:01 +0100 Subject: [PATCH] Introduce workspace (again) (#2673) * Trying to redo workspace deps again after #2672 * unused * clippy --- .github/dependabot.yml | 3 +- Cargo.toml | 37 ++++++++++++++ fuzzers/baby/tutorial/Cargo.toml | 2 +- .../forkserver_libafl_cc/Cargo.toml | 2 +- .../fuzzbench_forkserver/Cargo.toml | 2 +- .../fuzzbench_forkserver_cmplog/Cargo.toml | 2 +- .../fuzz_anything/libafl_atheris/Cargo.toml | 2 +- fuzzers/inprocess/dynamic_analysis/Cargo.toml | 2 +- fuzzers/inprocess/fuzzbench/Cargo.toml | 2 +- fuzzers/inprocess/fuzzbench_ctx/Cargo.toml | 2 +- fuzzers/inprocess/fuzzbench_text/Cargo.toml | 2 +- fuzzers/inprocess/libfuzzer_libpng/Cargo.toml | 2 +- .../libfuzzer_libpng_accounting/Cargo.toml | 2 +- .../libfuzzer_libpng_centralized/Cargo.toml | 2 +- .../libfuzzer_libpng_cmin/Cargo.toml | 2 +- .../libfuzzer_libpng_launcher/Cargo.toml | 2 +- .../libfuzzer_libpng_norestart/Cargo.toml | 2 +- .../libfuzzer_libpng_tcp_manager/Cargo.toml | 2 +- .../Cargo.toml | 2 +- .../fuzzer/Cargo.toml | 2 +- libafl/Cargo.toml | 50 +++++++++---------- libafl_bolts/Cargo.toml | 38 +++++++------- libafl_bolts/src/serdeany.rs | 8 +-- libafl_cc/Cargo.toml | 6 +-- libafl_concolic/symcc_libafl/Cargo.toml | 6 +-- libafl_concolic/symcc_runtime/Cargo.toml | 10 ++-- .../test/dump_constraints/Cargo.toml | 2 +- libafl_frida/Cargo.toml | 30 +++++------ libafl_libfuzzer/Cargo.toml | 4 +- libafl_libfuzzer/build.rs | 2 +- libafl_libfuzzer/runtime/Cargo.toml.template | 4 +- libafl_nyx/Cargo.toml | 4 +- libafl_qemu/Cargo.toml | 32 ++++++------ libafl_qemu/libafl_qemu_build/Cargo.toml | 10 ++-- libafl_qemu/libafl_qemu_sys/Cargo.toml | 12 ++--- libafl_sugar/Cargo.toml | 6 +-- libafl_targets/Cargo.toml | 16 +++--- libafl_tinyinst/Cargo.toml | 4 +- utils/deexit/Cargo.toml | 2 +- utils/desyscall/Cargo.toml | 2 +- utils/gdb_qemu/demo/Cargo.toml | 2 +- utils/gdb_qemu/gdb_qemu/Cargo.toml | 2 +- utils/gramatron/construct_automata/Cargo.toml | 8 +-- utils/libafl_benches/Cargo.toml | 2 +- utils/libafl_fmt/Cargo.toml | 2 +- utils/libafl_jumper/Cargo.toml | 2 +- utils/multi_machine_generator/Cargo.toml | 2 +- utils/noaslr/demo/Cargo.toml | 2 +- utils/noaslr/noaslr/Cargo.toml | 2 +- 49 files changed, 187 insertions(+), 161 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 31398988cb..03bf8a3ae0 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,7 +1,6 @@ version: 2 updates: - package-ecosystem: "cargo" - directories: - - "*" + directory: "/" schedule: interval: "daily" \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml index 88274a9d3d..45bbf9b8d9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,6 +49,43 @@ exclude = [ [workspace.package] version = "0.13.2" +[workspace.dependencies] +ahash = { version = "0.8.11", default-features = false } # The hash function already used in hashbrown +backtrace = { version = "0.3.74", default-features = false } # Used to get the stacktrace in StacktraceObserver +bindgen = "0.70.1" +clap = "4.5.18" +cc = "1.1.21" +cmake = "0.1.51" +document-features = "0.2.10" +hashbrown = { version = "0.14.5", default-features = false } # A faster hashmap, nostd compatible +libc = "0.2.159" # For (*nix) libc +log = "0.4.22" +meminterval = "0.4.1" +mimalloc = { version = "0.1.43", default-features = false } +nix = { version = "0.29.0", default-features = false } +num_enum = { version = "0.7.3", default-features = false } +num-traits = { version = "0.2.19", default-features = false } +paste = "1.0.15" +postcard = { version = "1.0.10", features = [ + "alloc", +], default-features = false } # no_std compatible serde serialization format +rangemap = "1.5.1" +regex = "1.10.6" +rustversion = "1.0.17" +serde = { version = "1.0.210", default-features = false } # serialization lib +serial_test = { version = "3.1.1", default-features = false } +serde_json = { version = "1.0.128", default-features = false } +serde_yaml = { version = "0.9.34" } # For parsing the injections yaml file +strum = "0.26.3" +strum_macros = "0.26.4" +toml = "0.8.19" # For parsing the injections toml file +typed-builder = "0.20.0" # Implement the builder pattern at compiletime +uuid = { version = "1.10.0", features = ["serde", "v4"] } +which = "6.0.3" +windows = "0.58.0" +z3 = "0.12.1" + + [workspace.lints.rust] # Forbid unexpected_cfgs = "forbid" diff --git a/fuzzers/baby/tutorial/Cargo.toml b/fuzzers/baby/tutorial/Cargo.toml index c116dfad32..820d65a78b 100644 --- a/fuzzers/baby/tutorial/Cargo.toml +++ b/fuzzers/baby/tutorial/Cargo.toml @@ -19,7 +19,7 @@ debug = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] libafl = { path = "../../../libafl", features = ["default", "rand_trait"] } diff --git a/fuzzers/forkserver/forkserver_libafl_cc/Cargo.toml b/fuzzers/forkserver/forkserver_libafl_cc/Cargo.toml index 8ed3289ecf..ac74b11ab2 100644 --- a/fuzzers/forkserver/forkserver_libafl_cc/Cargo.toml +++ b/fuzzers/forkserver/forkserver_libafl_cc/Cargo.toml @@ -18,7 +18,7 @@ debug = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = { version = "6.0.3" } [dependencies] clap = { version = "4.5.18", features = ["derive"] } diff --git a/fuzzers/forkserver/fuzzbench_forkserver/Cargo.toml b/fuzzers/forkserver/fuzzbench_forkserver/Cargo.toml index d21f674432..024cdfe888 100644 --- a/fuzzers/forkserver/fuzzbench_forkserver/Cargo.toml +++ b/fuzzers/forkserver/fuzzbench_forkserver/Cargo.toml @@ -20,7 +20,7 @@ strip = true [build-dependencies] cc = { version = "1.1.22", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] libafl = { path = "../../../libafl" } diff --git a/fuzzers/forkserver/fuzzbench_forkserver_cmplog/Cargo.toml b/fuzzers/forkserver/fuzzbench_forkserver_cmplog/Cargo.toml index 15774570cf..300e042c11 100644 --- a/fuzzers/forkserver/fuzzbench_forkserver_cmplog/Cargo.toml +++ b/fuzzers/forkserver/fuzzbench_forkserver_cmplog/Cargo.toml @@ -20,7 +20,7 @@ strip = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] libafl = { path = "../../../libafl" } diff --git a/fuzzers/fuzz_anything/libafl_atheris/Cargo.toml b/fuzzers/fuzz_anything/libafl_atheris/Cargo.toml index 7a903b760c..c6a21e510a 100644 --- a/fuzzers/fuzz_anything/libafl_atheris/Cargo.toml +++ b/fuzzers/fuzz_anything/libafl_atheris/Cargo.toml @@ -19,7 +19,7 @@ debug = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] libafl = { path = "../../../libafl" } diff --git a/fuzzers/inprocess/dynamic_analysis/Cargo.toml b/fuzzers/inprocess/dynamic_analysis/Cargo.toml index 85315572b8..00d6a5452c 100644 --- a/fuzzers/inprocess/dynamic_analysis/Cargo.toml +++ b/fuzzers/inprocess/dynamic_analysis/Cargo.toml @@ -25,7 +25,7 @@ strip = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] env_logger = "0.11.5" diff --git a/fuzzers/inprocess/fuzzbench/Cargo.toml b/fuzzers/inprocess/fuzzbench/Cargo.toml index 032ca405d5..bc836b134c 100644 --- a/fuzzers/inprocess/fuzzbench/Cargo.toml +++ b/fuzzers/inprocess/fuzzbench/Cargo.toml @@ -25,7 +25,7 @@ strip = true [build-dependencies] cc = { version = "1.0.106", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] libafl = { path = "../../../libafl" } diff --git a/fuzzers/inprocess/fuzzbench_ctx/Cargo.toml b/fuzzers/inprocess/fuzzbench_ctx/Cargo.toml index c75871bcff..db73077c8d 100644 --- a/fuzzers/inprocess/fuzzbench_ctx/Cargo.toml +++ b/fuzzers/inprocess/fuzzbench_ctx/Cargo.toml @@ -25,7 +25,7 @@ strip = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] libafl = { path = "../../../libafl" } diff --git a/fuzzers/inprocess/fuzzbench_text/Cargo.toml b/fuzzers/inprocess/fuzzbench_text/Cargo.toml index 91168c0d56..406b5a58cd 100644 --- a/fuzzers/inprocess/fuzzbench_text/Cargo.toml +++ b/fuzzers/inprocess/fuzzbench_text/Cargo.toml @@ -20,7 +20,7 @@ debug = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] libafl = { path = "../../../libafl" } diff --git a/fuzzers/inprocess/libfuzzer_libpng/Cargo.toml b/fuzzers/inprocess/libfuzzer_libpng/Cargo.toml index 89ac94d7d7..4aefdb6952 100644 --- a/fuzzers/inprocess/libfuzzer_libpng/Cargo.toml +++ b/fuzzers/inprocess/libfuzzer_libpng/Cargo.toml @@ -21,7 +21,7 @@ debug = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] libafl = { path = "../../../libafl", features = ["default"] } diff --git a/fuzzers/inprocess/libfuzzer_libpng_accounting/Cargo.toml b/fuzzers/inprocess/libfuzzer_libpng_accounting/Cargo.toml index 07e9015479..7e48d6ccce 100644 --- a/fuzzers/inprocess/libfuzzer_libpng_accounting/Cargo.toml +++ b/fuzzers/inprocess/libfuzzer_libpng_accounting/Cargo.toml @@ -19,7 +19,7 @@ debug = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] libafl = { path = "../../../libafl", features = [ diff --git a/fuzzers/inprocess/libfuzzer_libpng_centralized/Cargo.toml b/fuzzers/inprocess/libfuzzer_libpng_centralized/Cargo.toml index ecb34aa29a..2f7f9ef8f8 100644 --- a/fuzzers/inprocess/libfuzzer_libpng_centralized/Cargo.toml +++ b/fuzzers/inprocess/libfuzzer_libpng_centralized/Cargo.toml @@ -19,7 +19,7 @@ debug = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] libafl = { path = "../../../libafl", features = [ diff --git a/fuzzers/inprocess/libfuzzer_libpng_cmin/Cargo.toml b/fuzzers/inprocess/libfuzzer_libpng_cmin/Cargo.toml index bcdc8b17dd..8d857aee3a 100644 --- a/fuzzers/inprocess/libfuzzer_libpng_cmin/Cargo.toml +++ b/fuzzers/inprocess/libfuzzer_libpng_cmin/Cargo.toml @@ -22,7 +22,7 @@ debug = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] libafl = { path = "../../../libafl", features = ["default", "cmin"] } diff --git a/fuzzers/inprocess/libfuzzer_libpng_launcher/Cargo.toml b/fuzzers/inprocess/libfuzzer_libpng_launcher/Cargo.toml index 971268f8c0..7b0d116c55 100644 --- a/fuzzers/inprocess/libfuzzer_libpng_launcher/Cargo.toml +++ b/fuzzers/inprocess/libfuzzer_libpng_launcher/Cargo.toml @@ -19,7 +19,7 @@ debug = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] libafl = { path = "../../../libafl", features = [ diff --git a/fuzzers/inprocess/libfuzzer_libpng_norestart/Cargo.toml b/fuzzers/inprocess/libfuzzer_libpng_norestart/Cargo.toml index 3b7fc66f9b..977298828f 100644 --- a/fuzzers/inprocess/libfuzzer_libpng_norestart/Cargo.toml +++ b/fuzzers/inprocess/libfuzzer_libpng_norestart/Cargo.toml @@ -19,7 +19,7 @@ debug = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] env_logger = "0.11.5" diff --git a/fuzzers/inprocess/libfuzzer_libpng_tcp_manager/Cargo.toml b/fuzzers/inprocess/libfuzzer_libpng_tcp_manager/Cargo.toml index a7b2e6ee8f..990258a9df 100644 --- a/fuzzers/inprocess/libfuzzer_libpng_tcp_manager/Cargo.toml +++ b/fuzzers/inprocess/libfuzzer_libpng_tcp_manager/Cargo.toml @@ -21,7 +21,7 @@ debug = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] libafl = { path = "../../../libafl", features = ["default", "tcp_manager"] } diff --git a/fuzzers/inprocess/sqlite_centralized_multi_machine/Cargo.toml b/fuzzers/inprocess/sqlite_centralized_multi_machine/Cargo.toml index 0397eb9d18..fdadefc791 100644 --- a/fuzzers/inprocess/sqlite_centralized_multi_machine/Cargo.toml +++ b/fuzzers/inprocess/sqlite_centralized_multi_machine/Cargo.toml @@ -20,7 +20,7 @@ debug = true [build-dependencies] cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +which = "6.0.3" [dependencies] # no llmp compression for now, better perfs. diff --git a/fuzzers/structure_aware/libfuzzer_stb_image_concolic/fuzzer/Cargo.toml b/fuzzers/structure_aware/libfuzzer_stb_image_concolic/fuzzer/Cargo.toml index cebeebeda6..91ce02be04 100644 --- a/fuzzers/structure_aware/libfuzzer_stb_image_concolic/fuzzer/Cargo.toml +++ b/fuzzers/structure_aware/libfuzzer_stb_image_concolic/fuzzer/Cargo.toml @@ -34,5 +34,5 @@ mimalloc = { version = "0.1.43", default-features = false } [build-dependencies] cc = { version = "1.1.22", features = ["parallel"] } cmake = "0.1.51" -which = { version = "7.0.0" } +which = "6.0.3" symcc_libafl = { path = "../../../../libafl_concolic/symcc_libafl" } diff --git a/libafl/Cargo.toml b/libafl/Cargo.toml index 40b67de9cb..d846961512 100644 --- a/libafl/Cargo.toml +++ b/libafl/Cargo.toml @@ -189,7 +189,7 @@ nautilus = [ rustversion = "1.0.17" [dev-dependencies] -serde_json = { version = "1.0.128", default-features = false, features = [ +serde_json = { workspace = true, default-features = false, features = [ "alloc", ] } # clippy-suggested optimised byte counter @@ -201,32 +201,28 @@ libafl_bolts = { version = "0.13.2", path = "../libafl_bolts", default-features ] } libafl_derive = { version = "0.13.2", path = "../libafl_derive", optional = true } -rustversion = { version = "1.0.17" } +rustversion = { workspace = true } tuple_list = { version = "0.1.3" } -hashbrown = { version = "0.15.0", features = [ +hashbrown = { workspace = true, features = [ "serde", - "default-hasher", + "ahash", ], default-features = false } # A faster hashmap, nostd compatible -num-traits = { version = "0.2.19", default-features = false } -serde = { version = "1.0.210", default-features = false, features = [ - "alloc", -] } # serialization lib -postcard = { version = "1.0.10", features = [ - "alloc", -], default-features = false } # no_std compatible serde serialization format +num-traits = { workspace = true, default-features = false } +serde = { workspace = true, features = ["alloc"] } # serialization lib +postcard = { workspace = true } # no_std compatible serde serialization format bincode = { version = "1.3.3", optional = true } c2rust-bitfields = { version = "0.19.0", features = ["no_std"] } -ahash = { version = "0.8.11", default-features = false } # The hash function already used in hashbrown -meminterval = { version = "0.4.1", features = ["serde"] } -backtrace = { version = "0.3.74", default-features = false, optional = true } # Used to get the stacktrace in StacktraceObserver -typed-builder = { version = "0.20.0", optional = true } # Implement the builder pattern at compiletime +ahash = { workspace = true } # The hash function already used in hashbrown +meminterval = { workspace = true, features = ["serde"] } +backtrace = { workspace = true, optional = true } # Used to get the stacktrace in StacktraceObserver +typed-builder = { workspace = true, optional = true } # Implement the builder pattern at compiletime -serde_json = { version = "1.0.128", optional = true, default-features = false, features = [ +serde_json = { workspace = true, optional = true, default-features = false, features = [ "alloc", ] } -nix = { version = "0.29.0", default-features = true, optional = true } -regex = { version = "1.10.6", optional = true } -uuid = { version = "1.10.0", optional = true, features = ["serde", "v4"] } +nix = { workspace = true, default-features = true, optional = true } +regex = { workspace = true, optional = true } +uuid = { workspace = true, optional = true, features = ["serde", "v4"] } libm = "0.2.8" ratatui = { version = "0.29.0", default-features = false, features = [ 'crossterm', @@ -237,7 +233,7 @@ prometheus-client = { version = "0.22.3", optional = true } # For the prometheus tide = { version = "0.16.0", optional = true } async-std = { version = "1.13.0", features = ["attributes"], optional = true } futures = { version = "0.3.30", optional = true } -log = { version = "0.4.22" } +log = { workspace = true } tokio = { version = "1.40.0", optional = true, features = [ "sync", "net", @@ -268,24 +264,24 @@ pyo3 = { version = "0.22.3", features = ["gil-refs"], optional = true } regex-syntax = { version = "0.8.4", optional = true } # For nautilus # optional-dev deps (change when target.'cfg(accessible(::std))'.test-dependencies will be stable) -serial_test = { version = "3.1.1", optional = true, default-features = false, features = [ +serial_test = { workspace = true, optional = true, default-features = false, features = [ "logging", ] } # Document all features of this crate (for `cargo doc`) -document-features = { version = "0.2.10", optional = true } +document-features = { workspace = true, optional = true } # Optional -clap = { version = "4.5.18", optional = true } +clap = { workspace = true, optional = true } [lints] workspace = true [target.'cfg(unix)'.dependencies] -libc = { version = "0.2.59" } # For (*nix) libc -z3 = { version = "0.12.1", optional = true } # for concolic mutation +libc = { workspace = true } # For (*nix) libc +z3 = { workspace = true, optional = true } # for concolic mutation [target.'cfg(windows)'.dependencies] -windows = { version = "0.58.0", features = [ +windows = { workspace = true, features = [ "Win32_Foundation", "Win32_System_Threading", "Win32_System_Diagnostics_Debug", @@ -296,4 +292,4 @@ windows = { version = "0.58.0", features = [ ] } [target.'cfg(windows)'.build-dependencies] -windows = { version = "0.58.0" } +windows = { workspace = true } diff --git a/libafl_bolts/Cargo.toml b/libafl_bolts/Cargo.toml index cf6adcc38a..de77fbeb12 100644 --- a/libafl_bolts/Cargo.toml +++ b/libafl_bolts/Cargo.toml @@ -117,68 +117,64 @@ llmp_debug = ["alloc", "std"] llmp_small_maps = ["alloc"] [build-dependencies] -rustversion = { version = "1.0.17" } +rustversion = { workspace = true } [dependencies] libafl_derive = { version = "0.13.2", optional = true, path = "../libafl_derive" } static_assertions = "1.1.0" tuple_list = { version = "0.1.3" } -hashbrown = { version = "0.15.0", features = [ +hashbrown = { workspace = true, features = [ "serde", - "default-hasher", - "raw-entry", + "ahash", ], default-features = false, optional = true } # A faster hashmap, nostd compatible xxhash-rust = { version = "0.8.12", features = [ "xxh3", ], optional = true } # xxh3 hashing for rust -serde = { version = "1.0.210", default-features = false, features = [ +serde = { workspace = true, default-features = false, features = [ "derive", ] } # serialization lib erased-serde = { version = "0.4.5", default-features = false, optional = true } # erased serde -postcard = { version = "1.0.10", features = [ - "alloc", -], default-features = false, optional = true } # no_std compatible serde serialization format -num_enum = { version = "0.7.3", default-features = false } -ahash = { version = "0.8.11", default-features = false, optional = true } # The hash function already used in hashbrown -foldhash = { version = "0.1.3", default-features = false } # After hashbrown 0.15.0 -backtrace = { version = "0.3.74", default-features = true, optional = true } # Used to get the stacktrace in StacktraceObserver +postcard = { workspace = true, optional = true } # no_std compatible serde serialization format +num_enum = { workspace = true, default-features = false } +ahash = { workspace = true, optional = true } # The hash function already used in hashbrown +backtrace = { workspace = true, default-features = true, optional = true } # Used to get the stacktrace in StacktraceObserver ctor = { optional = true, version = "0.2.8" } miniz_oxide = { version = "0.8.0", optional = true } hostname = { version = "0.4.0", optional = true } # Is there really no gethostname in the stdlib? rand_core = { version = "0.6.4", optional = true } -nix = { version = "0.29.0", optional = true, default-features = false, features = [ +nix = { workspace = true, optional = true, default-features = false, features = [ "fs", "signal", "socket", "poll", ] } -uuid = { version = "1.10.0", optional = true, features = ["serde", "v4"] } -clap = { version = "4.5.18", features = [ +uuid = { workspace = true, optional = true, features = ["serde", "v4"] } +clap = { workspace = true, features = [ "derive", "wrap_help", ], optional = true } # CLI parsing, for libafl_bolts::cli / the `cli` feature -log = { version = "0.4.22" } +log = { workspace = true } pyo3 = { version = "0.22.3", optional = true, features = ["serde", "macros"] } # optional-dev deps (change when target.'cfg(accessible(::std))'.test-dependencies will be stable) -serial_test = { version = "3.1.1", optional = true, default-features = false, features = [ +serial_test = { workspace = true, optional = true, default-features = false, features = [ "logging", ] } # Document all features of this crate (for `cargo doc`) -document-features = { version = "0.2.10", optional = true } +document-features = { workspace = true, optional = true } [lints] workspace = true [target.'cfg(unix)'.dependencies] -libc = { version = "0.2.59" } # For (*nix) libc +libc = { workspace = true } # For (*nix) libc uds = { version = "0.4.2", optional = true, default-features = false } [target.'cfg(windows)'.dependencies] -windows = { version = "0.58.0", features = [ +windows = { workspace = true, features = [ "Win32_Foundation", "Win32_System_Threading", "Win32_System_Diagnostics_Debug", @@ -191,7 +187,7 @@ windows = { version = "0.58.0", features = [ windows-result = "0.2.0" [target.'cfg(windows)'.build-dependencies] -windows = { version = "0.58.0" } +windows = { workspace = true } [target.'cfg(target_vendor = "apple")'.dependencies] mach = "0.3.2" diff --git a/libafl_bolts/src/serdeany.rs b/libafl_bolts/src/serdeany.rs index b0aecc175a..9b16e9a548 100644 --- a/libafl_bolts/src/serdeany.rs +++ b/libafl_bolts/src/serdeany.rs @@ -118,7 +118,7 @@ pub mod serdeany_registry { boxed::Box, string::{String, ToString}, }; - use core::{any::TypeId, fmt}; + use core::{any::TypeId, fmt, hash::BuildHasherDefault}; use hashbrown::{ hash_map::{Values, ValuesMut}, @@ -342,7 +342,7 @@ pub mod serdeany_registry { '_, TypeRepr, Box, - foldhash::fast::RandomState, + BuildHasherDefault, > where T: crate::serdeany::SerdeAny, @@ -646,7 +646,7 @@ pub mod serdeany_registry { '_, String, Box, - foldhash::fast::RandomState, + BuildHasherDefault, > where T: crate::serdeany::SerdeAny, @@ -664,7 +664,7 @@ pub mod serdeany_registry { '_, String, Box, - foldhash::fast::RandomState, + BuildHasherDefault, > where T: crate::serdeany::SerdeAny, diff --git a/libafl_cc/Cargo.toml b/libafl_cc/Cargo.toml index 1a73bd3a39..e2005f0d3c 100644 --- a/libafl_cc/Cargo.toml +++ b/libafl_cc/Cargo.toml @@ -44,14 +44,14 @@ dump-cfg = [] profiling = [] [build-dependencies] -cc = { version = "1.1.21", features = ["parallel"] } -which = { version = "7.0.0" } +cc = { workspace = true, features = ["parallel"] } +which = { workspace = true } [target.'cfg(target_vendor = "apple")'.build-dependencies] glob = "0.3.1" [dependencies] -serde = { version = "1.0.210", default-features = false, features = [ +serde = { workspace = true, default-features = false, features = [ "alloc", "derive", ] } # serialization lib diff --git a/libafl_concolic/symcc_libafl/Cargo.toml b/libafl_concolic/symcc_libafl/Cargo.toml index 4d3d859c2e..8c1150be55 100644 --- a/libafl_concolic/symcc_libafl/Cargo.toml +++ b/libafl_concolic/symcc_libafl/Cargo.toml @@ -34,9 +34,9 @@ build = ["which", "cmake"] clone = ["which"] [dependencies] -which = { version = "7.0.0", optional = true } -cmake = { version = "0.1.51", optional = true } -log = { version = "0.4.22" } +which = { workspace = true, optional = true } +cmake = { workspace = true, optional = true } +log = { workspace = true } [lints] workspace = true diff --git a/libafl_concolic/symcc_runtime/Cargo.toml b/libafl_concolic/symcc_runtime/Cargo.toml index 4dee260cd8..5484ccf9e4 100644 --- a/libafl_concolic/symcc_runtime/Cargo.toml +++ b/libafl_concolic/symcc_runtime/Cargo.toml @@ -43,13 +43,13 @@ libafl_bolts = { path = "../../libafl_bolts", version = "0.13.2", default-featur unchecked_unwrap = "4.0.0" ctor = "0.2.8" -libc = { version = "0.2.59" } +libc = { workspace = true } [build-dependencies] -cmake = { version = "0.1.51" } -bindgen = { version = "0.70.1" } -regex = { version = "1.10.6" } -which = { version = "7.0.0" } +cmake = { workspace = true } +bindgen = { workspace = true } +regex = { workspace = true } +which = { workspace = true } symcc_libafl = { path = "../symcc_libafl", version = "0.13.2" } [lints] diff --git a/libafl_concolic/test/dump_constraints/Cargo.toml b/libafl_concolic/test/dump_constraints/Cargo.toml index 53917b07d8..adf42fda92 100644 --- a/libafl_concolic/test/dump_constraints/Cargo.toml +++ b/libafl_concolic/test/dump_constraints/Cargo.toml @@ -22,7 +22,7 @@ categories = [ [dependencies] libafl = { path = "../../../libafl" } libafl_bolts = { path = "../../../libafl_bolts" } -clap = { version = "4.5.18", features = ["derive"] } +clap = { workspace = true, features = ["derive"] } [lints] workspace = true diff --git a/libafl_frida/Cargo.toml b/libafl_frida/Cargo.toml index bc5a6180f5..f79be8d475 100644 --- a/libafl_frida/Cargo.toml +++ b/libafl_frida/Cargo.toml @@ -44,7 +44,7 @@ track_hit_feedbacks = ["libafl/track_hit_feedbacks"] auto-download = ["frida-gum-sys/auto-download", "frida-gum/auto-download"] [build-dependencies] -cc = { version = "1.1.21", features = ["parallel"] } +cc = { workspace = true, features = ["parallel"] } [dependencies] libafl = { path = "../libafl", default-features = false, version = "0.13.2", features = [ @@ -62,10 +62,10 @@ libafl_targets = { path = "../libafl_targets", version = "0.13.2", features = [ "sancov_cmplog", ] } -nix = { version = "0.29.0", default-features = true, features = ["mman"] } -libc = { version = "0.2.59" } -hashbrown = { version = "0.15.1", default-features = true } -rangemap = { version = "1.5.1" } +nix = { workspace = true, default-features = true, features = ["mman"] } +libc = { workspace = true } +hashbrown = { workspace = true, default-features = true } +rangemap = { workspace = true } frida-gum-sys = { version = "0.15.1", features = [ "event-sink", "invocation-listener", @@ -80,28 +80,28 @@ dynasmrt = "3.0.1" color-backtrace = { version = "0.6.1", features = ["resolve-modules"] } termcolor = "1.4.1" -serde = { version = "1.0.210", default-features = true } -backtrace = { version = "0.3.74", default-features = false, features = [ +serde = { workspace = true, default-features = true } +backtrace = { workspace = true, default-features = false, features = [ "std", "serde", ] } -num-traits = { version = "0.2.19", default-features = true } -ahash = { version = "0.8.11", default-features = true } # The hash function already used in hashbrown -paste = { version = "1.0.15" } -log = { version = "0.4.22" } +num-traits = { workspace = true, default-features = true } +ahash = { workspace = true, default-features = true } +paste = { workspace = true } +log = { workspace = true } mmap-rs = "0.6.1" bit_reverse = "0.1.8" yaxpeax-arch = "0.3.2" -document-features = { version = "0.2.10", optional = true } # Document all features of this crate (for `cargo doc`) +document-features = { workspace = true, optional = true } # Document all features of this crate (for `cargo doc`) [dev-dependencies] -serial_test = { version = "3.1.1", default-features = false, features = [ +serial_test = { workspace = true, default-features = false, features = [ "logging", ] } -clap = { version = "4.5.18", features = ["derive"] } +clap = { workspace = true, features = ["derive"] } libloading = "0.8.5" -mimalloc = { version = "0.1.43", default-features = false } +mimalloc = { workspace = true, default-features = false } dlmalloc = { version = "0.2.6", features = ["global"] } [lints] diff --git a/libafl_libfuzzer/Cargo.toml b/libafl_libfuzzer/Cargo.toml index b16055ef5e..a578036a1d 100644 --- a/libafl_libfuzzer/Cargo.toml +++ b/libafl_libfuzzer/Cargo.toml @@ -14,7 +14,7 @@ include = ["/src", "/Cargo.toml", "/build.rs", "/runtime"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [build-dependencies] -cc = { version = "1.1.21" } +cc = "1.0.106" rustversion = "1.0.17" toml = { version = "0.8.19", features = ["preserve_order"] } @@ -43,7 +43,7 @@ libafl-libfuzzer-use-version = [] [dependencies] libfuzzer-sys = { version = "0.4.7", default-features = false } -document-features = { version = "0.2.10", optional = true } +document-features = { workspace = true, optional = true } [package.metadata.docs.rs] features = ["document-features"] diff --git a/libafl_libfuzzer/build.rs b/libafl_libfuzzer/build.rs index c8a65f9bf0..3d960f7ce1 100644 --- a/libafl_libfuzzer/build.rs +++ b/libafl_libfuzzer/build.rs @@ -11,7 +11,7 @@ use std::{ const NAMESPACE: &str = "🐇"; #[cfg(not(feature = "rabbit"))] const NAMESPACE: &str = "__libafl"; -const NAMESPACE_LEN: usize = NAMESPACE.as_bytes().len(); +const NAMESPACE_LEN: usize = NAMESPACE.len(); #[allow(clippy::too_many_lines)] fn main() -> Result<(), Box> { diff --git a/libafl_libfuzzer/runtime/Cargo.toml.template b/libafl_libfuzzer/runtime/Cargo.toml.template index f48773aef2..87cf9b29ce 100644 --- a/libafl_libfuzzer/runtime/Cargo.toml.template +++ b/libafl_libfuzzer/runtime/Cargo.toml.template @@ -74,9 +74,7 @@ rand = "0.8.5" serde = { version = "1.0.210", default-features = true, features = [ "derive", ] } # serialization lib -hashbrown = { version = "0.14.5", default-features = true, features = [ - "serde", -] } +hashbrown = { version = "0.14.5", default-features = true } # for identifying if we can grimoire-ify utf8-chars = "3.0.4" diff --git a/libafl_nyx/Cargo.toml b/libafl_nyx/Cargo.toml index 98f9c4d32f..a81bbac088 100644 --- a/libafl_nyx/Cargo.toml +++ b/libafl_nyx/Cargo.toml @@ -36,8 +36,8 @@ libafl_targets = { path = "../libafl_targets", version = "0.13.2", features = [ "sancov_cmplog", ] } -nix = { version = "0.29.0", default-features = true, features = ["fs"] } -typed-builder = { version = "0.20.0" } +nix = { workspace = true, default-features = true, features = ["fs"] } +typed-builder = { workspace = true } [lints] workspace = true diff --git a/libafl_qemu/Cargo.toml b/libafl_qemu/Cargo.toml index f84ce72a1e..90ee7abee2 100644 --- a/libafl_qemu/Cargo.toml +++ b/libafl_qemu/Cargo.toml @@ -101,48 +101,48 @@ libafl_targets = { path = "../libafl_targets", version = "0.13.2" } libafl_qemu_sys = { path = "./libafl_qemu_sys", version = "0.13.2", default-features = false } libafl_derive = { path = "../libafl_derive", version = "0.13.2" } -serde = { version = "1.0.210", default-features = false, features = [ +serde = { workspace = true, default-features = false, features = [ "alloc", ] } # serialization lib -hashbrown = { version = "0.15.1", default-features = true, features = [ +hashbrown = { workspace = true, default-features = true, features = [ "serde", ] } # A faster hashmap, nostd compatible -num-traits = { version = "0.2.19", default-features = true } +num-traits = { workspace = true, default-features = true } num-derive = "0.4.2" -num_enum = { version = "0.7.3", default-features = true } +num_enum = { workspace = true, default-features = true } goblin = "0.9.2" -libc = { version = "0.2.59" } +libc = { workspace = true } strum = "0.26.3" strum_macros = "0.26.4" syscall-numbers = "4.0.0" -meminterval = { version = "0.4.1" } +meminterval = { workspace = true } thread_local = "1.1.8" capstone = "0.12.0" -rangemap = { version = "1.5.1" } -log = { version = "0.4.22" } +rangemap = { workspace = true } +log = { workspace = true } object = "0.36.4" addr2line = "0.24.1" typed-arena = "2.0.2" -paste = { version = "1.0.15" } +paste = { workspace = true } enum-map = "2.7.3" -serde_yaml = { version = "0.9.34", optional = true } # For parsing the injections yaml file -toml = { version = "0.8.19", optional = true } # For parsing the injections toml file +serde_yaml = { workspace = true, optional = true } # For parsing the injections yaml file +toml = { workspace = true, optional = true } # For parsing the injections toml file pyo3 = { version = "0.22.3", optional = true, features = [ "multiple-pymethods", ] } bytes-utils = "0.1.4" -typed-builder = { version = "0.20.0" } +typed-builder = { workspace = true } memmap2 = "0.9.5" getset = "0.1.3" # Document all features of this crate (for `cargo doc`) -document-features = { version = "0.2.10", optional = true } +document-features = { workspace = true, optional = true } [build-dependencies] libafl_qemu_build = { path = "./libafl_qemu_build", version = "0.13.2" } pyo3-build-config = { version = "0.22.3", optional = true } -rustversion = { version = "1.0.17" } -bindgen = { version = "0.70.1" } -cc = { version = "1.1.21" } +rustversion = { workspace = true } +bindgen = { workspace = true } +cc = { workspace = true } [lib] name = "libafl_qemu" diff --git a/libafl_qemu/libafl_qemu_build/Cargo.toml b/libafl_qemu/libafl_qemu_build/Cargo.toml index 4c25c2fb69..ed4771eafa 100644 --- a/libafl_qemu/libafl_qemu_build/Cargo.toml +++ b/libafl_qemu/libafl_qemu_build/Cargo.toml @@ -30,14 +30,14 @@ paranoid_debug = [ ] # Will perform as many checks as possible. The target will be greatly slowed down. [dependencies] -bindgen = { version = "0.70.1" } -which = { version = "7.0.0" } +bindgen = { workspace = true } +which = { workspace = true } json = "0.12.4" shell-words = "1.1.0" pkg-config = "0.3.31" -cc = { version = "1.1.21" } -regex = { version = "1.10.6" } -rustversion = { version = "1.0.17" } +cc = { workspace = true } +regex = { workspace = true } +rustversion = { workspace = true } rustc_version = "0.4.1" [lints] diff --git a/libafl_qemu/libafl_qemu_sys/Cargo.toml b/libafl_qemu/libafl_qemu_sys/Cargo.toml index 240758a629..5d89ebf1e5 100644 --- a/libafl_qemu/libafl_qemu_sys/Cargo.toml +++ b/libafl_qemu/libafl_qemu_sys/Cargo.toml @@ -58,17 +58,17 @@ paranoid_debug = [ ] # Will perform as many checks as possible. The target will be greatly slowed down. [dependencies] -paste = { version = "1.0.15" } -num_enum = { version = "0.7.3", default-features = true } -libc = { version = "0.2.59" } -strum = { version = "0.26.3" } -strum_macros = { version = "0.26.4" } +paste = { workspace = true } +num_enum = { workspace = true, default-features = true } +libc = { workspace = true } +strum = { workspace = true } +strum_macros = { workspace = true } pyo3 = { version = "0.22.3", optional = true } [build-dependencies] libafl_qemu_build = { path = "../libafl_qemu_build", version = "0.13.2" } pyo3-build-config = { version = "0.22.3", optional = true } -rustversion = { version = "1.0.17" } +rustversion = { workspace = true } [lints] workspace = true diff --git a/libafl_sugar/Cargo.toml b/libafl_sugar/Cargo.toml index 1aa72c9758..399a825103 100644 --- a/libafl_sugar/Cargo.toml +++ b/libafl_sugar/Cargo.toml @@ -65,11 +65,11 @@ libafl_bolts = { path = "../libafl_bolts", version = "0.13.2" } libafl_targets = { path = "../libafl_targets", version = "0.13.2" } # Document all features of this crate (for `cargo doc`) -document-features = { version = "0.2.10", optional = true } +document-features = { workspace = true, optional = true } -typed-builder = { version = "0.20.0" } # Implement the builder pattern at compiletime +typed-builder = { workspace = true } # Implement the builder pattern at compiletime pyo3 = { version = "0.22.3", optional = true } -log = { version = "0.4.22" } +log = { workspace = true } [target.'cfg(target_os = "linux")'.dependencies] libafl_qemu = { path = "../libafl_qemu", version = "0.13.2" } diff --git a/libafl_targets/Cargo.toml b/libafl_targets/Cargo.toml index 8ec5dd3496..fc29d8aebd 100644 --- a/libafl_targets/Cargo.toml +++ b/libafl_targets/Cargo.toml @@ -74,18 +74,18 @@ libafl = { path = "../libafl", version = "0.13.2", default-features = false, fea ] } libafl_bolts = { path = "../libafl_bolts", version = "0.13.2", default-features = false, features = [ ] } -libc = { version = "0.2.59" } -hashbrown = { version = "0.15.1", default-features = true } +libc = { workspace = true } +hashbrown = { workspace = true, default-features = true } once_cell = "1.19.0" -log = { version = "0.4.22" } -rustversion = { version = "1.0.17" } +log = { workspace = true } +rustversion = { workspace = true } -rangemap = { version = "1.5.1" } -serde = { version = "1.0.210", default-features = false, features = [ +rangemap = { workspace = true } +serde = { workspace = true, default-features = false, features = [ "alloc", ] } # serialization lib -meminterval = { version = "0.4.1", features = ["serde"], optional = true } -ahash = { version = "0.8.11", default-features = false, optional = true } +meminterval = { workspace = true, features = ["serde"], optional = true } +ahash = { workspace = true, default-features = false, optional = true } [lints] workspace = true diff --git a/libafl_tinyinst/Cargo.toml b/libafl_tinyinst/Cargo.toml index 6d1d9f1f78..b3c1e48f5e 100644 --- a/libafl_tinyinst/Cargo.toml +++ b/libafl_tinyinst/Cargo.toml @@ -31,10 +31,10 @@ libafl_bolts = { path = "../libafl_bolts", version = "0.13.2", features = [ ] } tinyinst = { git = "https://github.com/AFLplusplus/tinyinst-rs" } # tinyinst-rs = { path = "../../tinyinst-rs" } -log = { version = "0.4.22" } +log = { workspace = true } [build-dependencies] -cmake = { version = "0.1.51" } +cmake = { workspace = true } [lints] workspace = true diff --git a/utils/deexit/Cargo.toml b/utils/deexit/Cargo.toml index e3446888fb..f15b0e0cf5 100644 --- a/utils/deexit/Cargo.toml +++ b/utils/deexit/Cargo.toml @@ -23,7 +23,7 @@ categories = [ # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -log = { version = "0.4.22" } +log = { workspace = true } [lib] name = "deexit" diff --git a/utils/desyscall/Cargo.toml b/utils/desyscall/Cargo.toml index 5cd13f2065..c6a5bce7f4 100644 --- a/utils/desyscall/Cargo.toml +++ b/utils/desyscall/Cargo.toml @@ -22,7 +22,7 @@ libc = "0.2" rusty-fork = "0.3.0" [build-dependencies] -cc = { version = "1.1.21" } +cc = "1" [lib] name = "desyscall" diff --git a/utils/gdb_qemu/demo/Cargo.toml b/utils/gdb_qemu/demo/Cargo.toml index 01085a6faa..48f4035c43 100644 --- a/utils/gdb_qemu/demo/Cargo.toml +++ b/utils/gdb_qemu/demo/Cargo.toml @@ -15,7 +15,7 @@ vergen = { version = "8.1.1", features = [ [dependencies] anyhow = { version = "1.0", default-features = false } -clap = { version = "4.5.18", default-features = false, features = [ +clap = { version = "4.5", default-features = false, features = [ "derive", "string", "std", diff --git a/utils/gdb_qemu/gdb_qemu/Cargo.toml b/utils/gdb_qemu/gdb_qemu/Cargo.toml index 2788f048f8..0755ac5f21 100644 --- a/utils/gdb_qemu/gdb_qemu/Cargo.toml +++ b/utils/gdb_qemu/gdb_qemu/Cargo.toml @@ -15,7 +15,7 @@ vergen = { version = "8.1.1", features = [ [dependencies] anyhow = { version = "1.0", default-features = false } -clap = { version = "4.5.18", default-features = false, features = [ +clap = { version = "4.5", default-features = false, features = [ "derive", "string", "std", diff --git a/utils/gramatron/construct_automata/Cargo.toml b/utils/gramatron/construct_automata/Cargo.toml index 4ab30d371d..75d4b5e677 100644 --- a/utils/gramatron/construct_automata/Cargo.toml +++ b/utils/gramatron/construct_automata/Cargo.toml @@ -25,12 +25,12 @@ categories = [ [dependencies] libafl = { path = "../../../libafl", default-features = false } -serde_json = { version = "1.0.128", default-features = true } -regex = { version = "1.10.6" } -postcard = { version = "1.0.10", features = [ +serde_json = { workspace = true, default-features = true } +regex = { workspace = true } +postcard = { workspace = true, features = [ "alloc", ], default-features = false } # no_std compatible serde serialization format -clap = { version = "4.5.18", features = ["derive"] } +clap = { workspace = true, features = ["derive"] } [lints] workspace = true diff --git a/utils/libafl_benches/Cargo.toml b/utils/libafl_benches/Cargo.toml index ceaa2ab6c0..debda6ac0a 100644 --- a/utils/libafl_benches/Cargo.toml +++ b/utils/libafl_benches/Cargo.toml @@ -27,7 +27,7 @@ libafl_bolts = { path = "../../libafl_bolts", default-features = false, features ] } # libafl_bolts criterion = "0.5.1" # Benchmarking -ahash = { version = "0.8.11", default-features = false } # The hash function already used in hashbrown +ahash = { workspace = true, default-features = false } # The hash function already used in hashbrown rustc-hash = { version = "2.0.0", default-features = false } # yet another hash xxhash-rust = { version = "0.8.12", features = [ "xxh3", diff --git a/utils/libafl_fmt/Cargo.toml b/utils/libafl_fmt/Cargo.toml index 61be34ceef..3b774ca07d 100644 --- a/utils/libafl_fmt/Cargo.toml +++ b/utils/libafl_fmt/Cargo.toml @@ -17,6 +17,6 @@ tokio = { version = "1.38", features = [ "rt-multi-thread", "macros", ] } -clap = { version = "4.5.18", features = ["derive"] } +clap = { version = "4.5", features = ["derive"] } exitcode = "1.1" which = "6.0" diff --git a/utils/libafl_jumper/Cargo.toml b/utils/libafl_jumper/Cargo.toml index ebf3c263da..9a97fdb707 100644 --- a/utils/libafl_jumper/Cargo.toml +++ b/utils/libafl_jumper/Cargo.toml @@ -13,7 +13,7 @@ default = ["std"] std = [] [build-dependencies] -cc = { version = "1.1.21" } +cc = "1" [dependencies] hex = { version = "0.4", default-features = false } diff --git a/utils/multi_machine_generator/Cargo.toml b/utils/multi_machine_generator/Cargo.toml index 5e264384f8..60ab384cdf 100644 --- a/utils/multi_machine_generator/Cargo.toml +++ b/utils/multi_machine_generator/Cargo.toml @@ -9,6 +9,6 @@ edition = "2021" [dependencies] petgraph = "0.6" -clap = { version = "4.5.18", features = ["derive"] } +clap = { version = "4.5", features = ["derive"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/utils/noaslr/demo/Cargo.toml b/utils/noaslr/demo/Cargo.toml index 571fb1c70d..e8ad7e1ca6 100644 --- a/utils/noaslr/demo/Cargo.toml +++ b/utils/noaslr/demo/Cargo.toml @@ -15,7 +15,7 @@ vergen = { version = "8.1.1", features = [ [dependencies] anyhow = { version = "1.0", default-features = false } -clap = { version = "4.5.18", default-features = false, features = [ +clap = { version = "4.5", default-features = false, features = [ "derive", "string", "std", diff --git a/utils/noaslr/noaslr/Cargo.toml b/utils/noaslr/noaslr/Cargo.toml index 36fb251fd0..5d93a77f5c 100644 --- a/utils/noaslr/noaslr/Cargo.toml +++ b/utils/noaslr/noaslr/Cargo.toml @@ -15,7 +15,7 @@ vergen = { version = "8.1.1", features = [ [dependencies] anyhow = { version = "1.0", default-features = false } -clap = { version = "4.5.18", default-features = false, features = [ +clap = { version = "4.5", default-features = false, features = [ "derive", "string", "std",