From bd987d373ee4dbce2e23a0fbf21633372c5c803e Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Thu, 13 Aug 2026 14:14:25 +0200 Subject: [PATCH] chore(deps): criterion 0.5 -> 0.8 (dev-only, benches) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dev-dependency of punktfunk-core only — it ships in nothing. `default-features = false, features = ["cargo_bench_support"]` carries over unchanged; that feature still exists in 0.8 and still keeps plotters/rayon out of a headless CI run. One source change, and it is a lint issue rather than an API one. `criterion::black_box` survives in 0.8 but is `#[deprecated]` — it now just forwards to `std::hint::black_box` — and benches ARE compiled by `cargo clippy --workspace --all-targets -- -D warnings`, so keeping the criterion import would have turned a deprecation warning into a failed lint gate. The bench imports the std one directly. What CI actually consumes from criterion is the on-disk result layout, so that was checked rather than assumed: 0.8 still writes `target/criterion///new/estimates.json`, and the key scripts/bench/compare.py reads — `median.point_estimate` — is still there: $ cargo bench -p punktfunk-core --bench pipeline -- --warm-up-time 1 --measurement-time 3 ... 12/12 benchmarks reported, e.g. pipeline/gf16/1048576 thrpt: [537 MiB/s 540 MiB/s 542 MiB/s] $ find target/criterion -name estimates.json | wc -l 24 $ python3 -c 'import json; print(json.load(open(".../crypto/seal/new/estimates.json"))["median"]["point_estimate"])' 817.96 Verified on CachyOS (rustc 1.96.0): cargo clippy -p punktfunk-core --all-targets --locked -- -D warnings OK (this is what compiles the bench) cargo clippy --workspace --all-targets --locked -- -D warnings OK cargo bench -p punktfunk-core --bench pipeline --locked -- --test 12/12 Success cargo bench -p punktfunk-core --bench pipeline --locked -- --warm-up-time 1 --measurement-time 3 OK (CI's exact line) cargo test -p punktfunk-core --locked 210 + 8 + 1 passed, 0 failed cargo fmt --all --check clean --- Cargo.lock | 58 +++++++++++------------ crates/punktfunk-core/Cargo.toml | 2 +- crates/punktfunk-core/benches/pipeline.rs | 6 ++- 3 files changed, 34 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 98406863..97018ff2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -52,6 +52,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "alloca" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7d05ea6aea7e9e64d25b9156ba2fee3fdd659e34e41063cd2fc7cd020d7f4" +dependencies = [ + "cc", +] + [[package]] name = "android_log-sys" version = "0.3.2" @@ -505,7 +514,7 @@ dependencies = [ "bitflags 2.13.1", "cexpr", "clang-sys", - "itertools 0.13.0", + "itertools", "log", "prettyplease", "proc-macro2", @@ -950,23 +959,22 @@ dependencies = [ [[package]] name = "criterion" -version = "0.5.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +checksum = "950046b2aa2492f9a536f5f4f9a3de7b9e2476e575e05bd6c333371add4d98f3" dependencies = [ + "alloca", "anes", "cast", "ciborium", "clap", "criterion-plot", - "is-terminal", - "itertools 0.10.5", + "itertools", "num-traits", - "once_cell", "oorandom", + "page_size", "regex", "serde", - "serde_derive", "serde_json", "tinytemplate", "walkdir", @@ -974,12 +982,12 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.5.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +checksum = "d8d80a2f4f5b554395e47b5d8305bc3d27813bacb73493eb1001e8f76dae29ea" dependencies = [ "cast", - "itertools 0.10.5", + "itertools", ] [[package]] @@ -2144,32 +2152,12 @@ dependencies = [ "generic-array", ] -[[package]] -name = "is-terminal" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.61.2", -] - [[package]] name = "is_terminal_polyfill" version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" @@ -2886,6 +2874,16 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "page_size" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "pango" version = "0.22.8" diff --git a/crates/punktfunk-core/Cargo.toml b/crates/punktfunk-core/Cargo.toml index 4b5bb996..0e56af4e 100644 --- a/crates/punktfunk-core/Cargo.toml +++ b/crates/punktfunk-core/Cargo.toml @@ -126,7 +126,7 @@ windows-sys = { version = "0.59", features = [ proptest = "1" # Tier-1 microbenchmarks (benches/pipeline.rs). default-features off → no plotters/HTML (headless # CI just needs the measurement + target/criterion/**/estimates.json for the regression compare). -criterion = { version = "0.5", default-features = false, features = ["cargo_bench_support"] } +criterion = { version = "0.8", default-features = false, features = ["cargo_bench_support"] } [[bench]] name = "pipeline" diff --git a/crates/punktfunk-core/benches/pipeline.rs b/crates/punktfunk-core/benches/pipeline.rs index f875f61b..e4276fa7 100644 --- a/crates/punktfunk-core/benches/pipeline.rs +++ b/crates/punktfunk-core/benches/pipeline.rs @@ -10,11 +10,15 @@ //! The GPU capture/NVENC encode path is deliberately out of scope here (no GPU in CI) — that's the //! Tier-3 stream benchmark on a self-hosted GPU runner. Run locally with `cargo bench -p punktfunk-core`. -use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion, Throughput}; +use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, Throughput}; use punktfunk_core::config::{Config, FecConfig, FecScheme, ProtocolPhase, Role}; use punktfunk_core::crypto::{SessionCrypto, SessionKey}; use punktfunk_core::session::Session; use punktfunk_core::transport::loopback_pair; +// NOT `criterion::black_box`: it still exists in 0.8 but is deprecated, and now just forwards to +// this one. Benches compile under `--all-targets -D warnings`, so importing criterion's would fail +// the lint gate rather than merely warn. +use std::hint::black_box; const TAG_LEN: usize = 16; // AEAD authentication tag (GCM and Poly1305 share the size) const SHARD: usize = punktfunk_core::config::mtu1500_shard_payload(); // one MTU-safe data shard