From a844eb226bb814e6a4e8b35b3b91c74f22ad535b Mon Sep 17 00:00:00 2001 From: Nicolas Barrios Date: Sun, 2 Apr 2023 04:59:46 -0400 Subject: [PATCH] Bump MSRV to 1.60 for csv dependency (#665) --- .github/workflows/ci.yaml | 2 +- CHANGELOG.md | 2 +- Cargo.toml | 2 +- appveyor.yml | 9 +++++---- src/html/mod.rs | 4 ++-- src/lib.rs | 6 +++--- src/plot/gnuplot_backend/summary.rs | 13 +++++-------- src/plot/plotters_backend/pdf.rs | 6 +++--- src/plot/plotters_backend/summary.rs | 4 ++-- src/report.rs | 12 ++++++------ tests/criterion_tests.rs | 17 +++++------------ 11 files changed, 34 insertions(+), 43 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b54c23c6..515c78e5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -18,7 +18,7 @@ jobs: matrix: rust: - stable - - 1.59 # MSRV + - 1.60.0 # MSRV - nightly steps: diff --git a/CHANGELOG.md b/CHANGELOG.md index 939bc4ea..2f1eadd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - HTML report hidden behind non-default feature flag: 'html_reports' - Standalone support (ie without cargo-criterion) feature flag: 'cargo_bench_support' -- MSRV bumped to 1.57 +- MSRV bumped to 1.60 - `rayon` and `plotters` are optional (and default) dependencies. - Status messages ('warming up', 'analyzing', etc) are printed to stderr, benchmark results are printed to stdout. - Accept subsecond durations for `--warm-up-time`, `--measurement-time` and `--profile-time`. diff --git a/Cargo.toml b/Cargo.toml index 8feac1d9..001a9c81 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,7 +51,7 @@ default-features = false features = ["svg_backend", "area_series", "line_series"] [dev-dependencies] -tempfile = "3.2.0" +tempfile = "~3.2.0" approx = "0.5.0" quickcheck = { version = "1.0", default-features = false } rand = "0.8" diff --git a/appveyor.yml b/appveyor.yml index f883c864..2412672b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -20,13 +20,14 @@ install: build: false +# Disabled in favor of github actions test_script: - - cargo build --release - - cargo test --all --release - - cargo build --benches --all --release +# - cargo build --release +# - cargo test --all --release +# - cargo build --benches --all --release # Disable benchmarking until performance can be improved. # - cargo bench - - cargo doc --release --all --no-deps +# - cargo doc --release --all --no-deps branches: only: diff --git a/src/html/mod.rs b/src/html/mod.rs index 0809aae3..eb31a816 100644 --- a/src/html/mod.rs +++ b/src/html/mod.rs @@ -537,8 +537,8 @@ impl Report for Html { } let mut groups = id_groups - .into_iter() - .map(|(_, group)| BenchmarkGroup::new(output_directory, &group)) + .into_values() + .map(|group| BenchmarkGroup::new(output_directory, &group)) .collect::>>(); groups.sort_unstable_by_key(|g| g.group_report.name); diff --git a/src/lib.rs b/src/lib.rs index 4bd772ca..dcabae03 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -287,9 +287,9 @@ pub enum PlottingBackend { impl PlottingBackend { fn create_plotter(&self) -> Option> { match self { - PlottingBackend::Gnuplot => Some(Box::new(Gnuplot::default())), + PlottingBackend::Gnuplot => Some(Box::::default()), #[cfg(feature = "plotters")] - PlottingBackend::Plotters => Some(Box::new(PlottersBackend::default())), + PlottingBackend::Plotters => Some(Box::::default()), #[cfg(not(feature = "plotters"))] PlottingBackend::Plotters => panic!("Criterion was built without plotters support."), PlottingBackend::None => None, @@ -1432,7 +1432,7 @@ impl ActualSamplingMode { } } - (1..(n + 1) as u64).map(|a| a * d).collect::>() + (1..(n + 1)).map(|a| a * d).collect::>() } ActualSamplingMode::Flat => { let n = sample_count; diff --git a/src/plot/gnuplot_backend/summary.rs b/src/plot/gnuplot_backend/summary.rs index 529463b2..e5d2ab6b 100644 --- a/src/plot/gnuplot_backend/summary.rs +++ b/src/plot/gnuplot_backend/summary.rs @@ -67,7 +67,7 @@ pub fn line_comparison( let max = all_curves .iter() - .map(|&&(_, ref data)| Sample::new(data).mean()) + .map(|&(_, data)| Sample::new(data).mean()) .fold(::std::f64::NAN, f64::max); let mut dummy = [1.0]; @@ -134,7 +134,7 @@ pub fn violin( let kdes = all_curves .iter() - .map(|&&(_, ref sample)| { + .map(|&(_, sample)| { let (x, mut y) = kde::sweep(Sample::new(sample), KDE_POINTS, None); let y_max = Sample::new(&y).max(); for y in y.iter_mut() { @@ -144,10 +144,7 @@ pub fn violin( (x, y) }) .collect::>(); - let mut xs = kdes - .iter() - .flat_map(|&(ref x, _)| x.iter()) - .filter(|&&x| x > 0.); + let mut xs = kdes.iter().flat_map(|(x, _)| x.iter()).filter(|&&x| x > 0.); let (mut min, mut max) = { let &first = xs.next().unwrap(); (first, first) @@ -174,7 +171,7 @@ pub fn violin( .configure(Axis::BottomX, |a| { a.configure(Grid::Major, |g| g.show()) .configure(Grid::Minor, |g| g.hide()) - .set(Range::Limits(0., max as f64 * one[0])) + .set(Range::Limits(0., max * one[0])) .set(Label(format!("Average time ({})", unit))) .set(axis_scale.to_gnuplot()) }) @@ -190,7 +187,7 @@ pub fn violin( }); let mut is_first = true; - for (i, &(ref x, ref y)) in kdes.iter().enumerate() { + for (i, (x, y)) in kdes.iter().enumerate() { let i = i as f64 + 0.5; let y1: Vec<_> = y.iter().map(|&y| i + y * 0.45).collect(); let y2: Vec<_> = y.iter().map(|&y| i - y * 0.45).collect(); diff --git a/src/plot/plotters_backend/pdf.rs b/src/plot/plotters_backend/pdf.rs index 957bb442..e55de4e6 100644 --- a/src/plot/plotters_backend/pdf.rs +++ b/src/plot/plotters_backend/pdf.rs @@ -38,7 +38,7 @@ pub(crate) fn pdf_comparison_figure( let y_range = data::fitting_range(base_ys.iter().chain(ys.iter())); let size = size.unwrap_or(SIZE); - let root_area = SVGBackend::new(&path, (size.0 as u32, size.1 as u32)).into_drawing_area(); + let root_area = SVGBackend::new(&path, (size.0, size.1)).into_drawing_area(); let mut cb = ChartBuilder::on(&root_area); @@ -132,7 +132,7 @@ pub(crate) fn pdf_small( let path = context.report_path(id, "pdf_small.svg"); let size = size.unwrap_or(SIZE); - let root_area = SVGBackend::new(&path, (size.0 as u32, size.1 as u32)).into_drawing_area(); + let root_area = SVGBackend::new(&path, (size.0, size.1)).into_drawing_area(); let mut chart = ChartBuilder::on(&root_area) .margin((5).percent()) @@ -208,7 +208,7 @@ pub(crate) fn pdf( let xs_ = Sample::new(&xs); let size = size.unwrap_or(SIZE); - let root_area = SVGBackend::new(&path, (size.0 as u32, size.1 as u32)).into_drawing_area(); + let root_area = SVGBackend::new(&path, (size.0, size.1)).into_drawing_area(); let range = data::fitting_range(ys.iter()); diff --git a/src/plot/plotters_backend/summary.rs b/src/plot/plotters_backend/summary.rs index 23f4053d..0ebb851e 100644 --- a/src/plot/plotters_backend/summary.rs +++ b/src/plot/plotters_backend/summary.rs @@ -120,7 +120,7 @@ fn line_comparison_series_data<'a>( ) -> (&'static str, Vec<(Option<&'a String>, Vec, Vec)>) { let max = all_curves .iter() - .map(|&&(_, ref data)| Sample::new(data).mean()) + .map(|&(_, data)| Sample::new(data).mean()) .fold(::std::f64::NAN, f64::max); let mut dummy = [1.0]; @@ -176,7 +176,7 @@ pub fn violin( let mut xs = kdes .iter() - .flat_map(|&(_, ref x, _)| x.iter()) + .flat_map(|(_, x, _)| x.iter()) .filter(|&&x| x > 0.); let (mut min, mut max) = { let &first = xs.next().unwrap(); diff --git a/src/report.rs b/src/report.rs index 9374c3e5..c5448fdb 100644 --- a/src/report.rs +++ b/src/report.rs @@ -116,9 +116,9 @@ impl BenchmarkId { throughput: Option, ) -> BenchmarkId { let full_id = match (&function_id, &value_str) { - (&Some(ref func), &Some(ref val)) => format!("{}/{}/{}", group_id, func, val), - (&Some(ref func), &None) => format!("{}/{}", group_id, func), - (&None, &Some(ref val)) => format!("{}/{}", group_id, val), + (Some(func), Some(val)) => format!("{}/{}/{}", group_id, func, val), + (Some(func), &None) => format!("{}/{}", group_id, func), + (&None, Some(val)) => format!("{}/{}", group_id, val), (&None, &None) => group_id.clone(), }; @@ -129,18 +129,18 @@ impl BenchmarkId { } let directory_name = match (&function_id, &value_str) { - (&Some(ref func), &Some(ref val)) => format!( + (Some(func), Some(val)) => format!( "{}/{}/{}", make_filename_safe(&group_id), make_filename_safe(func), make_filename_safe(val) ), - (&Some(ref func), &None) => format!( + (Some(func), &None) => format!( "{}/{}", make_filename_safe(&group_id), make_filename_safe(func) ), - (&None, &Some(ref val)) => format!( + (&None, Some(val)) => format!( "{}/{}", make_filename_safe(&group_id), make_filename_safe(val) diff --git a/tests/criterion_tests.rs b/tests/criterion_tests.rs index 8c3c81a5..7b608214 100644 --- a/tests/criterion_tests.rs +++ b/tests/criterion_tests.rs @@ -1,6 +1,3 @@ -use criterion; -use serde_json; - #[cfg(feature = "plotters")] use criterion::SamplingMode; use criterion::{ @@ -84,10 +81,10 @@ fn verify_html(dir: &PathBuf, path: &str) { } fn verify_stats(dir: &PathBuf, baseline: &str) { - verify_json(&dir, &format!("{}/estimates.json", baseline)); - verify_json(&dir, &format!("{}/sample.json", baseline)); - verify_json(&dir, &format!("{}/tukey.json", baseline)); - verify_json(&dir, &format!("{}/benchmark.json", baseline)); + verify_json(dir, &format!("{}/estimates.json", baseline)); + verify_json(dir, &format!("{}/sample.json", baseline)); + verify_json(dir, &format!("{}/tukey.json", baseline)); + verify_json(dir, &format!("{}/benchmark.json", baseline)); #[cfg(feature = "csv_output")] verify_file(&dir, &format!("{}/raw.csv", baseline)); } @@ -469,7 +466,7 @@ fn test_criterion_doesnt_panic_if_measured_time_is_zero() { } mod macros { - use super::{criterion, criterion_group, criterion_main}; + use super::{criterion_group, criterion_main, Criterion}; #[test] #[should_panic(expected = "group executed")] @@ -504,8 +501,6 @@ mod macros { #[test] #[should_panic(expected = "group executed")] fn criterion_group() { - use self::criterion::Criterion; - fn group(_crit: &mut Criterion) {} fn group2(_crit: &mut Criterion) { panic!("group executed"); @@ -519,8 +514,6 @@ mod macros { #[test] #[should_panic(expected = "group executed")] fn criterion_group_trailing_comma() { - use self::criterion::Criterion; - fn group(_crit: &mut Criterion) {} fn group2(_crit: &mut Criterion) { panic!("group executed");