Skip to content

Latest commit

 

History

History
274 lines (186 loc) · 12.7 KB

CHANGELOG.md

File metadata and controls

274 lines (186 loc) · 12.7 KB

Changelog

This is the changelog for cargo-msrv, a tool and cargo plugin, which can be used to find the Minimum Supported Rust Version (MSRV) of your projects. This changelog is aimed at users, and only contains user-relevant changes.

If you found an issue, have a suggestion or want to provide feedback or insights, please feel free to open an issue on the issue tracker, or open a topic in the discussions section.

Unreleased

Added

  • Subcommand cargo msrv verify now supports setting a custom Rust version via the --rust-version <VERSION> argument, which can be used to check for a crate's compatibility against a specific Rust version.
  • Added flag --write-msrv to cargo msrv (find), which upon finding the MSRV writes its value to the Cargo manifest.
  • Added option to refer to a specific crate using its Cargo manifest (with --manifest-path) instead of its path ( with --path)
  • Added a 'minimal' output option intended for machine-readable use when full json output is undesirable.
  • Added --features option, --all-features flag and --no-default-features flag, which are forwarded to the default compatibility check command
  • Added --add-component option, which can be used to add a Rust component to a toolchain.
  • cargo msrv verify now supports Cargo workspace inheritance, and will now correctly inherit the MSRV (i.e. package.rust-version) defined by a workspace

Changed

  • CLI options are now grouped.
  • Option --min <version> now also accepts two component semver major.minor versions, in addition to full three component (strict) SemVer versions, and edition specifiers like "2015", "2018" and "2021".
  • Option --max <version> now also accepts two component semver major.minor versions, in addition to full three component (strict) SemVer versions.
  • The rust-releases index is now only fetched for subcommands which depend on it.
  • Renamed --toolchain-file to --write-toolchain-file to emphasise that the toolchain-file is an output.
  • Subcommand cargo msrv set will now default to writing a regular TOML table for the metadata MSRV fallback value, instead of an inline table.
  • The rust-toolchain file will now be overwritten if a rust-toolchain file was already present.
  • Updated user output formatting to be more consistent between output formats.
  • cargo-msrv now requires paths to be UTF-8.
  • --write-msrv now writes two, instead of three component version numbers.

Infra

  • Changed release artifact name of cargo-msrv packages on Github, such that they can be installed with cargo-binstall out of the box.

Fixed

  • Subcommand cargo msrv set will now return an error when the Cargo manifest solely consists of a virtual workspace.
  • The program will no longer return an unformatted message when a command failed and the output format was set to json.
  • Fix issue where reading the fallback MSRV from a TOML inline table was not possible.
  • Fix an index out-of-bounds panic which occurred if the filtered Rust releases search space was empty.
  • Use compilation target instead of build machine target for MSRV checks.
  • Fix issue where --manifest-path Cargo.toml would yield an empty manifest path.
  • Supply provided components to verify subcommand
  • The CLI arguments --target and --add-component were previously inadvertently ignored when provided to cargo msrv verify.

Removed

  • Removed deprecated option cargo msrv --verify. Use cargo msrv verify instead.
  • Removed option to disable filtering the Rust releases search space by the Rust edition in from the Cargo manifest, --no-read-min-edition.

Known issues

  • The CLI arguments --features, --all-features, --no-default-features, --min, --max, --include-all-patch-releases and --release-source are ignored when provided to the verify subcommand. Workaround: supply these arguments directly to the top-level command, e.g. cargo msrv --all-features verify.
  • The CLI arguments --target and --add-component can be provided to both the top-level cargo msrv command, and the cargo msrv verify subcommand, however if they're provided to both, then only the arguments of the subcommand are considered. Example: cargo msrv --target x --add-component a --add-component b verify --target y --add-component c --add-component d does not reject or collect the --target x --add-component a --add-component b portion; the program will only be aware of the --target y --add-component c --add-component d arguments.
  • The CLI arguments --target and --add-component are shown to be available globally (i.e. both at the top level cargo msrv command and at the subcommand level, e.g. cargo msrv verify), even for subcommands which do not consume these arguments like cargo msrv list.

0.15.1 - 2022-02-24

In this release a license generation step was fixed, which caused the automated binary builds to fail. In addition, a Cargo feature toggle was added which adds a feature gate for the rust-dist release source of the rust-releases crate. This allows people who build from source to build cargo-msrv without the default features (i.e. without rust-dist), which reduces build time and binary size.

This release does not contain user-facing changes, hence the lack of changelog entries for this version.

0.15.0 - 2022-02-23

Added

  • Flag --no-user-output which disables user output.
  • Subcommand cargo msrv set, which can be used to write a given MSRV to the Cargo manifest.

Changed

  • ⚠️ Breaking change: Changed default cargo-msrv (find) check command from cargo check --all to cargo check.
    • To revert to the old behaviour, run cargo-msrv with the following custom check command: cargo msrv -- cargo check --all.

Removed

  • ⚠️ Breaking change: Value void was removed as a valid format for the --output-format option.

0.14.2 - 2022-02-09

  • Fixed: Unable to set a custom check command when calling the cargo-msrv verify subcommand.

0.14.1 - 2022-02-02

  • Fixed: Regression in the new bisection implementation introduced in v0.14.0, where the algorithm would stop one step too early.

0.14.0 - 2022-01-30

  • Added: Verify as a subcommand
  • Deprecated: Deprecated the cargo msrv --verify flag in favour of the cargo msrv verify subcommand.
  • Changed: Changed terminology from 'Determine MSRV' to 'Find MSRV' for top level cargo-msrv command.
  • Added: Flag --linear to the top cargo-msrv command ('find msrv') to choose explicitly for the linear search strategy.
  • Changed: The default search method is now bisect instead of linear. ⚠
  • Added: Feedback messages printed after each check, allowing users to see why certain Rust versions are not compatible.
  • Added: Flag --no-check-feedback which disables the feedback messages printed after each check.

0.13.0 - 2021-12-25

  • Fixed: Help text of the list subcommand will now be shown correctly .
  • Fixed: The json output of the list subcommand will now also report when it's done.
  • Changed: Renamed list subcommand option "type" to "variant".
  • Added: Subcommand "show" which shows the MSRV for the crate in your current working directory.
  • Added: Logging to a file (default) or the stdout for developer information; can also be disabled entirely.
  • Added: Output format option 'void', which disables user targeted output.
  • Changed: cargo-msrv now exits with a non-zero exit code on failure.
  • Changed: Clarify the reason when the program fails because of an IO error.
  • Added: Book covering cargo-msrv topics, and its subcommands.
  • Changed: Suggest package.rust-version is missing when MSRV can't be found in the Cargo manifest.
  • Fixed: Return non-zero exit code when verify command fails.

0.12.0 - 2021-11-01

  • Added subcommand list which lists the MSRV's of dependencies as specified by crate authors using the rust-version key.
  • You can now also simply run cargo-msrv standalone, i.e. cargo-msrv instead of cargo msrv.

Only list available as a subcommand. The determine-msrv and verify-msrv commands have not been ported to subcommands yet, but are planned to.

0.11.1 - 2021-10-28

This release is equal to v0.11.0, except that the automated 'release build and packaging' task was fixed.

0.11.0 - 2021-10-28

  • Added --release-source which allows users to select a rust-releases source.
  • A message is now shown to inform users when the index is being updated.
  • Verify can now also read and use the package.rust-version MSRV key in the Cargo.toml manifest.
  • When the package.edition is set, the first release supporting this edition will now be set as the minimum version. This behaviour can be disabled by providing the --no-read-min-edition flag.

0.10.0 - 2021-10-01

  • Add option to specify an edition alias instead of a minimum version.

0.9.0 - 2021-09-06

  • cargo-msrv will no longer try to install upcoming, but unreleased, Rust releases.

0.8.0 - 2021-07-30

  • Renamed --minimum to --min while keeping the former as an alias.
  • Renamed --maximum to --max while keeping the former as an alias.

0.7.0 - 2021-06-15

  • Added command (--verify) to verify the MSRV, if defined with the 'package.metadata.msrv' key in the Cargo.toml.

0.6.0 - 2021-05-27

  • Added option,--output-format, to output the status of the program in a machine-readable format to stdout.

0.5.0 - 2021-05-13

  • Added flag --ignore-lockfile which addresses an issue where newer lockfiles could not be parsed by older toolchains.

0.4.0 - 2021-04-09

  • Added option to only take the latest patch Release version into acount, and make it the default.
  • Added minimum and maximum release version options, which can be used to restrict the range of version to be checked.
  • Change default check command to cargo check -all (was cargo build --all).
  • Add option to output a rust-toolchain file.
  • Add option to use a binary search instead of a linear search to find the MSRV.

0.3.1 - 2021-03-09

  • Update deprecated dependency.
  • Add repository to Cargo.toml.

0.3.0 - 2021-03-09

  • Replace guessing Rust release version numbers with fetching an actual index.
  • Make the terminal UI friendlier by replacing the log and wall of text with a progress bar and updating state.
  • Fix bug where no output was shown to the user by default.
  • Increased own crate MSRV from 1.40.0 to 1.42.0.
  • Replace reqwest http client with a smaller http client.
  • Inform a user about sub-tasks such as installing a toolchain or running a check.
  • Replace progress bar with logging based output.
  • Increase own crate MSRV from 1.34.0 to 1.40.0.
  • Install rust targets with the minimal rustup profile.
  • Rust release channel manifest will now be re-fetched (expiry date of 1 day)
  • Added support for custom rustup run commands; defaults to cargo build --all.
  • Added support for custom toolchain targets.
  • Added a spinner to show progression.
  • This was the initial cargo-msrv release.