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.
- 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.
- CLI options are now grouped.
- Option
--min <version>
now also accepts two component semvermajor.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 semvermajor.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.
- 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
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
- 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.
⚠️ Breaking change: Changed default cargo-msrv (find) check command fromcargo check --all
tocargo check
.- Revert to the old behaviour by running cargo-msrv with a custom check command:
cargo msrv -- cargo check --all
.
- Revert to the old behaviour by running cargo-msrv with a custom check command:
⚠️ Breaking change: Valuevoid
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 thecargo 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 thelinear
search strategy. - Changed: The default search method is now
bisect
instead oflinear
. ⚠ - 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 ofcargo 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 theCargo.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 theCargo.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
(wascargo 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
to1.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
to1.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.