From 57da168efa3251844beb3f420cc046d3fe133575 Mon Sep 17 00:00:00 2001 From: Martin Geisler Date: Mon, 30 Mar 2020 14:23:21 +0200 Subject: [PATCH] Drop Rust 2018 compatibility I've been trying to keep the crate compatible with Rust 2018, which corresponds to Rust version 1.31.0. However, this has proven impossible because of how our dependencies keep releasing new patch versions that push up the minimum required Rust version. Because of this, the current code no longer compiles with Rust 1.31.0 because `cargo sync` will pull in too new versions of the direct and transitive dependencies. This happens even if there are no changes in `version-sync`. The failure to compile shows up as spurious and unexpected build failures in our CI, which in turn makes it hard to trust CI. I'm concluding that it's infeasible to keep `version-sync` compatible with any particular version of Rust. While not perfect, we'll track the latest stable version of Rust from now on. This is not perfect since even stable Rust sometimes decides to turn warnings into hard errors: https://github.com/rust-lang/rust/pull/64221/ --- Cargo.toml | 5 ----- README.md | 17 ++++++++++++++++- tests/version-numbers.rs | 7 ------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 663afcb..84ce9fb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,11 +21,6 @@ appveyor = { repository = "mgeisler/version-sync" } codecov = { repository = "mgeisler/version-sync" } [dependencies] -# This crate is compatible with Rust 2018, i.e., Rustc version 1.31.0. -# Version requirements of dependencies can be bumped as long as the -# dependencies compile with that compiler version. Some versions -# requirements below an upper limit to indicate when the dependency -# stops compiling with a Rust 2018 compatible compiler. pulldown-cmark = { version = "0.4, <0.5", default-features = false } semver-parser = "0.9" syn = { version = "1.0", features = ["full"] } diff --git a/README.md b/README.md index b25c2a6..9b31e57 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ [![](https://img.shields.io/crates/v/version-sync.svg)][crates-io] [![](https://docs.rs/version-sync/badge.svg)][api-docs] -[![](https://img.shields.io/badge/rustc-1.31.0-4d76ae.svg)][rust-2018] [![](https://travis-ci.org/mgeisler/version-sync.svg?branch=master)][travis-ci] [![](https://ci.appveyor.com/api/projects/status/github/mgeisler/version-sync?branch=master&svg=true)][appveyor] [![](https://codecov.io/gh/mgeisler/version-sync/branch/master/graph/badge.svg)][codecov] @@ -109,6 +108,22 @@ your_crate = "0.1.2" This is a changelog describing the most important changes per release. +### Version 0.9.0 — March 30th, 2020 + +Drop support for Rust 1.31.0 since our dependencies keep releasing new +patch versions that push up the minimum required Rust version. These +updates mean that `version-sync` 0.8.1 no longer compiles with Rust +1.31.0 because `cargo sync` will pull in too new versions of the +direct and transitive dependencies. This happens even if there are no +changes in `version-sync`. + +The constant build failures in our CI makes it infeasible to keep +`version-sync` compatible with any particular version of Rust. We will +therefore track the latest stable version of Rust from now on. + +At the time of writing, the code compiles with Rust 1.36, but this +will likely become outdated soon. + ### Version 0.8.1 — April 3rd, 2019 Dependencies were relaxed to make it easier to upgrade `version-sync`. diff --git a/tests/version-numbers.rs b/tests/version-numbers.rs index e39270d..01e6421 100644 --- a/tests/version-numbers.rs +++ b/tests/version-numbers.rs @@ -11,13 +11,6 @@ fn test_readme_changelog() { ); } -#[test] -fn test_minimum_rustc_version() { - let version = r"1\.31\.0"; - version_sync::assert_contains_regex!(".travis.yml", &format!(r"^ - {}", version)); - version_sync::assert_contains_regex!("README.md", &format!("badge/rustc-{}", version)); -} - #[test] fn test_html_root_url() { version_sync::assert_html_root_url_updated!("src/lib.rs");