From 88f18b71616248c464f73999e8b6a8adce2b91f9 Mon Sep 17 00:00:00 2001 From: not-matthias Date: Tue, 29 Jul 2025 13:57:55 +0200 Subject: [PATCH 1/2] fix(cargo-codspeed): use target.rustflags config so it's merged with the .cargo/config.toml When using build.rustflags, it won't be merged because it has a lower precedence. See: https://doc.rust-lang.org/nightly/cargo/reference/config.html#buildrustflags --- crates/cargo-codspeed/src/build.rs | 3 ++- .../tests/cargo_config.in/.cargo/config.toml | 8 ++++++++ .../tests/cargo_config.in/benches/cargo_config_bench.rs | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/crates/cargo-codspeed/src/build.rs b/crates/cargo-codspeed/src/build.rs index ab099b6d..6bf9c117 100644 --- a/crates/cargo-codspeed/src/build.rs +++ b/crates/cargo-codspeed/src/build.rs @@ -145,8 +145,9 @@ impl BuildOptions<'_> { // Use --config to set rustflags // Our rust integration has an msrv of 1.74, --config is available since 1.63 // https://doc.rust-lang.org/nightly/cargo/CHANGELOG.html#cargo-163-2022-08-11 + // Note: We have to use `target.cfg(all())` since `build` has a lower precedence. let config_value = format!( - "build.rustflags=[{}]", + "target.'cfg(all())'.rustflags=[{}]", flags.into_iter().map(|f| format!("\"{f}\"")).join(",") ); cargo.arg("--config").arg(config_value); diff --git a/crates/cargo-codspeed/tests/cargo_config.in/.cargo/config.toml b/crates/cargo-codspeed/tests/cargo_config.in/.cargo/config.toml index 7b4d0356..d1905f4b 100644 --- a/crates/cargo-codspeed/tests/cargo_config.in/.cargo/config.toml +++ b/crates/cargo-codspeed/tests/cargo_config.in/.cargo/config.toml @@ -1,2 +1,10 @@ +# Note: This does nothing since `target..rustflags` takes precedence over `build.rustflags` +# See: https://doc.rust-lang.org/nightly/cargo/reference/config.html#buildrustflags [build] +rustflags = ["--cfg", "this_does_nothing"] + +[target.x86_64-unknown-linux-gnu] +rustflags = ["--cfg", "target_feature_flag"] + +[target.'cfg(all())'] rustflags = ["--cfg", "custom_feature_flag"] diff --git a/crates/cargo-codspeed/tests/cargo_config.in/benches/cargo_config_bench.rs b/crates/cargo-codspeed/tests/cargo_config.in/benches/cargo_config_bench.rs index d763db64..36c2478c 100644 --- a/crates/cargo-codspeed/tests/cargo_config.in/benches/cargo_config_bench.rs +++ b/crates/cargo-codspeed/tests/cargo_config.in/benches/cargo_config_bench.rs @@ -8,6 +8,11 @@ fn bench_failing_without_custom_flag(c: &mut Criterion) { compile_error!( "custom_feature_flag is not enabled - .cargo/config.toml rustflags not applied" ); + + #[cfg(not(target_feature_flag))] + compile_error!( + "target_feature_flag is not enabled - .cargo/config.toml rustflags not applied" + ); }) }); } From b2110848292bd0c9ce0fb82183b93f01ec1e108f Mon Sep 17 00:00:00 2001 From: Arthur Pastel Date: Thu, 31 Jul 2025 11:20:03 +0200 Subject: [PATCH 2/2] Release 3.0.5 cargo-codspeed@3.0.5 codspeed@3.0.5 codspeed-bencher-compat@3.0.5 codspeed-criterion-compat@3.0.5 codspeed-criterion-compat-walltime@3.0.5 codspeed-divan-compat@3.0.5 codspeed-divan-compat-macros@3.0.5 codspeed-divan-compat-walltime@3.0.5 Generated by cargo-workspaces --- Cargo.lock | 16 ++++++++-------- crates/bencher_compat/Cargo.toml | 4 ++-- crates/cargo-codspeed/Cargo.toml | 4 ++-- crates/codspeed/Cargo.toml | 2 +- crates/criterion_compat/Cargo.toml | 6 +++--- .../criterion_compat/criterion_fork/Cargo.toml | 4 ++-- crates/divan_compat/Cargo.toml | 8 ++++---- crates/divan_compat/divan_fork/Cargo.toml | 4 ++-- crates/divan_compat/macros/Cargo.toml | 2 +- 9 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fa60df05..e35de18c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -454,7 +454,7 @@ dependencies = [ [[package]] name = "cargo-codspeed" -version = "3.0.4" +version = "3.0.5" dependencies = [ "anstyle", "anyhow", @@ -588,7 +588,7 @@ checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "codspeed" -version = "3.0.4" +version = "3.0.5" dependencies = [ "anyhow", "bincode", @@ -605,7 +605,7 @@ dependencies = [ [[package]] name = "codspeed-bencher-compat" -version = "3.0.4" +version = "3.0.5" dependencies = [ "bencher", "codspeed", @@ -613,7 +613,7 @@ dependencies = [ [[package]] name = "codspeed-criterion-compat" -version = "3.0.4" +version = "3.0.5" dependencies = [ "async-std", "codspeed", @@ -626,7 +626,7 @@ dependencies = [ [[package]] name = "codspeed-criterion-compat-walltime" -version = "3.0.4" +version = "3.0.5" dependencies = [ "anes", "approx", @@ -660,7 +660,7 @@ dependencies = [ [[package]] name = "codspeed-divan-compat" -version = "3.0.4" +version = "3.0.5" dependencies = [ "codspeed", "codspeed-divan-compat-macros", @@ -679,7 +679,7 @@ dependencies = [ [[package]] name = "codspeed-divan-compat-macros" -version = "3.0.4" +version = "3.0.5" dependencies = [ "divan-macros", "itertools 0.14.0", @@ -691,7 +691,7 @@ dependencies = [ [[package]] name = "codspeed-divan-compat-walltime" -version = "3.0.4" +version = "3.0.5" dependencies = [ "cfg-if", "clap", diff --git a/crates/bencher_compat/Cargo.toml b/crates/bencher_compat/Cargo.toml index 7cdf003f..bc3fa008 100644 --- a/crates/bencher_compat/Cargo.toml +++ b/crates/bencher_compat/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "codspeed-bencher-compat" -version = "3.0.4" +version = "3.0.5" rust-version = "1.74" # MSRV edition = "2021" description = "Bencher compatibility layer for CodSpeed" @@ -19,7 +19,7 @@ keywords = ["codspeed", "benchmark", "bencher"] [dependencies] bencher = "0.1.5" -codspeed = { path = "../codspeed", version = "=3.0.4" } +codspeed = { path = "../codspeed", version = "=3.0.5" } [[bench]] name = "bencher_example" diff --git a/crates/cargo-codspeed/Cargo.toml b/crates/cargo-codspeed/Cargo.toml index ef08fe06..d2f3eda6 100644 --- a/crates/cargo-codspeed/Cargo.toml +++ b/crates/cargo-codspeed/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cargo-codspeed" -version = "3.0.4" +version = "3.0.5" rust-version = "1.74" # MSRV edition = "2021" description = "Cargo extension to build & run your codspeed benchmarks" @@ -27,7 +27,7 @@ itertools = { workspace = true } anstyle = "1.0.8" serde = { workspace = true } serde_json = { workspace = true } -codspeed = { path = "../codspeed", version = "=3.0.4" } +codspeed = { path = "../codspeed", version = "=3.0.5" } [dev-dependencies] assert_cmd = "2.0.15" diff --git a/crates/codspeed/Cargo.toml b/crates/codspeed/Cargo.toml index e76bacf1..70232db8 100644 --- a/crates/codspeed/Cargo.toml +++ b/crates/codspeed/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "codspeed" -version = "3.0.4" +version = "3.0.5" rust-version = "1.74" # MSRV edition = "2021" description = "Core instrumentation library for CodSpeed" diff --git a/crates/criterion_compat/Cargo.toml b/crates/criterion_compat/Cargo.toml index 375527a5..227d2352 100644 --- a/crates/criterion_compat/Cargo.toml +++ b/crates/criterion_compat/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "codspeed-criterion-compat" -version = "3.0.4" +version = "3.0.5" rust-version = "1.74" # MSRV edition = "2021" description = "Criterion.rs compatibility layer for CodSpeed" @@ -17,8 +17,8 @@ categories = [ ] keywords = ["codspeed", "benchmark", "criterion"] [dependencies] -criterion = { package = "codspeed-criterion-compat-walltime", path = "./criterion_fork", version = "=3.0.4", default-features = false } -codspeed = { path = "../codspeed", version = "=3.0.4" } +criterion = { package = "codspeed-criterion-compat-walltime", path = "./criterion_fork", version = "=3.0.5", default-features = false } +codspeed = { path = "../codspeed", version = "=3.0.5" } colored = "2.1.0" futures = { version = "0.3", default-features = false, optional = true } diff --git a/crates/criterion_compat/criterion_fork/Cargo.toml b/crates/criterion_compat/criterion_fork/Cargo.toml index c3424ab9..debf1c24 100644 --- a/crates/criterion_compat/criterion_fork/Cargo.toml +++ b/crates/criterion_compat/criterion_fork/Cargo.toml @@ -4,7 +4,7 @@ authors = [ "Brook Heisler ", ] name = "codspeed-criterion-compat-walltime" -version = "3.0.4" +version = "3.0.5" edition = "2018" description = "Statistics-driven micro-benchmarking library" @@ -17,7 +17,7 @@ license = "Apache-2.0 OR MIT" exclude = ["book/*"] [dependencies] -codspeed = { path = "../../codspeed", version = "=3.0.4" } +codspeed = { path = "../../codspeed", version = "=3.0.5" } anes = "0.1.4" once_cell = "1.14" criterion-plot = { version = "0.5.0" } diff --git a/crates/divan_compat/Cargo.toml b/crates/divan_compat/Cargo.toml index 969e1044..dfcb3a00 100644 --- a/crates/divan_compat/Cargo.toml +++ b/crates/divan_compat/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "codspeed-divan-compat" -version = "3.0.4" +version = "3.0.5" rust-version = "1.80" edition = "2021" description = "Divan compatibility layer for CodSpeed" @@ -18,9 +18,9 @@ categories = [ keywords = ["codspeed", "benchmark", "divan"] [dependencies] -codspeed = { path = "../codspeed", version = "=3.0.4" } -divan = { package = "codspeed-divan-compat-walltime", path = "./divan_fork", version = "=3.0.4" } -codspeed-divan-compat-macros = { version = "=3.0.4", path = './macros' } +codspeed = { path = "../codspeed", version = "=3.0.5" } +divan = { package = "codspeed-divan-compat-walltime", path = "./divan_fork", version = "=3.0.5" } +codspeed-divan-compat-macros = { version = "=3.0.5", path = './macros' } [[bench]] name = "basic_example" diff --git a/crates/divan_compat/divan_fork/Cargo.toml b/crates/divan_compat/divan_fork/Cargo.toml index a7b3c3e6..61f2e6ca 100644 --- a/crates/divan_compat/divan_fork/Cargo.toml +++ b/crates/divan_compat/divan_fork/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "codspeed-divan-compat-walltime" -version = "3.0.4" +version = "3.0.5" rust-version = "1.80.0" edition = "2021" authors = ["Nikolai Vazquez"] @@ -23,7 +23,7 @@ regex = { package = "regex-lite", version = "0.1", default-features = false, fea "std", "string", ] } -codspeed = { path = "../../codspeed", version = "=3.0.4" } +codspeed = { path = "../../codspeed", version = "=3.0.5" } [target.'cfg(unix)'.dependencies] libc = "0.2.148" diff --git a/crates/divan_compat/macros/Cargo.toml b/crates/divan_compat/macros/Cargo.toml index fa083c5a..fc5214c1 100644 --- a/crates/divan_compat/macros/Cargo.toml +++ b/crates/divan_compat/macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "codspeed-divan-compat-macros" -version = "3.0.4" +version = "3.0.5" rust-version = "1.80" edition = "2021" description = "Macros for the Divan compatibility layer for CodSpeed"