Releases: obi1kenobi/cargo-semver-checks
v0.20.1
What's Changed
- Add support for rustdoc v25 on nightly Rust.
The v0.20.x series of releases will be the last one to support rustdoc formats v21 and v22, which are part of Rust 1.65 and 1.66, respectively. Versions v0.21+ will only support semver-checking rustdoc generated by Rust 1.67+.
All Merged PRs
- Link to the semver non-exhaustive section in the cargo reference. by @obi1kenobi in #445
- Refer to v2 of the action in README by @mgr0dzicki in #446
- library: return required update for each crate by @MarcoIeni in #398
- Release v0.20.1 with support for rustdoc v25 on nightly Rust. by @obi1kenobi in #452
Full Changelog: v0.20.0...v0.20.1
v0.20.0
What's Changed
- Massive performance boost, especially on large crates: up to 2354x faster than before thanks to the new optimizations API in Trustfall v0.4
- Bugfix: the
--release-type
CLI argument was not being properly applied. - Bugfix: checking no longer fails for crates whose lib targets had a different name than the crate.
The v0.20.x series of releases will be the last one to support rustdoc formats v21 and v22, which are part of Rust 1.65 and 1.66, respectively. Versions v0.21+ will only support semver-checking rustdoc generated by Rust 1.67+.
All Merged PRs
- Switch to dtolnay/rust-toolchain action for setting up Rust. by @obi1kenobi in #420
- Eliminate the last actions-rs Action dependencies. by @obi1kenobi in #421
- Upgrade to Trustfall v0.3.4 and matching trustfall-rustdoc version. by @obi1kenobi in #419
- Update dependency versions. by @obi1kenobi in #422
- Fix the ref-slice job on Linux, make it actually check stuff on Windows by @obi1kenobi in #425
- Upgrade trustfall_rustdoc and trustfall dependencies. by @obi1kenobi in #428
- Make ref_slice jobs use refs to commits by @mgr0dzicki in #429
- The
clap::ArgEnum
trait is no longer false-positively shown missing. by @obi1kenobi in #435 - Explicitly add Rust 1.68 to the test suite. by @obi1kenobi in #436
- Load lib target name from
cargo metadata
. by @obi1kenobi in #433 - Better placeholder name when the crate name can't be inferred. by @obi1kenobi in #437
- Fix option
--release-type
by @mgr0dzicki in #439 - Release v0.20.0 with Trustfall v0.4.0 and optimized adapters. by @obi1kenobi in #440
Full Changelog: v0.19.0...v0.20.0
v0.19.0
What's Changed
- New lints:
enum_tuple_variant_field_added
andenum_tuple_variant_field_missing
, requiring major bumps when enums' exhaustive tuple variants gain or lose fields - Bugfix: cached rustdoc with an older format version will now be detected & overwritten, instead of causing a crash (#415)
- Lots of under-the-hood improvements that will help us ship faster and more confidently in the future!
All Merged PRs
- Don't get dependency information when fetching crate version. by @obi1kenobi in #385
- Cache baseline rustdoc JSONs across runs. by @obi1kenobi in #387
- Make integration test runs pass
--verbose
. by @obi1kenobi in #391 - Cache test rustdocs instead of always regenerating. by @obi1kenobi in #388
- Use prebuilt cargo-semver-checks binary for integration tests. by @obi1kenobi in #386
- Use shorter job names so they are visible in more of GitHub's UI. by @obi1kenobi in #394
- Use a separate build cache for building the binary. by @obi1kenobi in #397
- Cache subject target directory w/ rustdoc build components. by @obi1kenobi in #393
- Split up the expensive tokio job into two smaller jobs. by @obi1kenobi in #400
- Fix CI cache path typo. by @obi1kenobi in #404
- Pin baseline version for failing CI check. by @obi1kenobi in #406
- Add test for precompiled binary failing on Windows to CI by @mgr0dzicki in #389
- Add comment explaining why build-binary-windows is separate by @mgr0dzicki in #407
- Fail the
ci-everything
job if any of its dependent jobs have failed. by @obi1kenobi in #405 - Clean up the "CI everything" required job. by @obi1kenobi in #408
- Add concurrency groups to GitHub workflows. by @obi1kenobi in #409
- Use new GitHub Actions output mechanism. by @obi1kenobi in #410
- Surface clippy/cargo errors inline in PR using Problem Matchers. by @obi1kenobi in #411
- Resilience for cached older rustdoc JSON version. by @obi1kenobi in #416
- New lints: Enum tuple variant field removed/added by @staniewzki in #259
- Ensure the new CI job is required. by @obi1kenobi in #417
- Release v0.19.0. by @obi1kenobi in #418
Full Changelog: v0.18.3...v0.19.0
v0.18.3
What's Changed
In prior v0.18.x versions, CLI argument parsing bugs could lead to false-negatives or incorrect crates being selected for checking in a workspace. The false-negatives were caused by an incorrect baseline selection used as a default: "current directory" instead of "largest prior version on crates.io."
Due to the severity of these issues, all prior v0.18.x versions are yanked. Per our usual policy, we've added the reproducers for these issues to our integration test suite, so they can never happen again. Apologies for the inconvenience!
More information in #380, #378, #382, and #381.
All Merged PRs
- Better error reporting when manifests fail to parse. by @obi1kenobi in #379
- Remove Ed from CODEOWNERS. by @obi1kenobi in #383
- Fix workspace handling CLI bugs. by @obi1kenobi in #381
- Release v0.18.3. by @obi1kenobi in #384
Full Changelog: v0.18.2...v0.18.3
v0.18.2
What's Changed
- Add a lib target so that other crates can use
cargo-semver-checks
as a library - Bugfix: target-specific optional features no longer produce false-positives (#369)
- Bugfix: display color output from rustdoc on error (#326)
All Merged PRs
- bump cargo-toml to 0.15.2 and remove workarounds by @skyzh in #374
- Fix false-positives from target-specific optional features by @tonowak in #375
- Use
--color=always
in rustdoc command when stderr is tty by @tonowak in #360 - extract library by @MarcoIeni in #314
- Release v0.18.2 with a new lib target. by @obi1kenobi in #377
New Contributors
- @MarcoIeni made their first contribution in #314
Full Changelog: v0.18.1...v0.18.2
v0.18.1
What's Changed
- Bugfix: support workspace-specified crate versions
All Merged PRs
- support workspace version by @skyzh in #371
- Release v0.18.1. by @obi1kenobi in #373
New Contributors
Full Changelog: v0.18.0...v0.18.1
v0.18.0
What's Changed
- Baseline rustdoc JSON is cached, since it rarely changes. This cuts project build times in half.
- New
--release-type <major/minor/patch>
flag. Use it to opt out of semver-minor lints, or to override the automatic release categorization logic based on version numbers. - New lint:
type_marked_deprecated
, requiring minor bump on deprecations of structs and enums - Bugfixes:
- Avoid false-positives on crates that expose 3rd party types in APIs but the local lockfile doesn't use the latest version of the 3rd party crate (#167), fixed by changing the rustdoc generation approach in #341
- Ignore rustdoc lint errors, so that semver-checking linty crates is allowed (obi1kenobi/cargo-semver-checks-action#17), implemented in #357
Four new contributors this week: welcome @thomaseizinger, @Finomnis, @Emilgardis, @Daaiid! Almost all of the items above are things they built — well done 🎉🚀
All Merged PRs
- Cache generated rustdoc for registry baselines by @thomaseizinger in #339
- Refactor of baseline.rs for easier next additive changes by @tonowak in #340
- Update dependency versions. by @obi1kenobi in #345
- Changed all baseline rustdoc generations to use placeholder manifest by @tonowak in #341
- Add a test case for non-breaking item renaming. by @obi1kenobi in #349
- Added
cargo doc
in lint job by @tonowak in #352 - Changed some load_rustdoc arguments to a struct by @tonowak in #347
- Renamed baseline.rs and dump.rs files by @tonowak in #348
- Baseline variable renames by @tonowak in #350
- Using placeholder rustdoc generation for current crate by @tonowak in #351
- Fixed link in check_release.rs by @tonowak in #358
- Fix syntax highlighting in README.md by @Finomnis in #363
cap-lints
when building rustdoc JSON by @Emilgardis in #357- Add
--release-type
flag by @Finomnis in #361 - Add lint for "deprecated" attribute on structs and enums by @Daaiid in #365
- Release v0.18.0. by @obi1kenobi in #367
New Contributors
- @thomaseizinger made their first contribution in #339
- @Finomnis made their first contribution in #363
- @Emilgardis made their first contribution in #357
- @Daaiid made their first contribution in #365
Full Changelog: v0.17.1...v0.18.0
v0.17.1
What's Changed
- Bugfix: do not crash on typedefs that omit generics with default values.
All Merged PRs
- Add script for quickly making a new test crate. by @obi1kenobi in #334
- Do not crash on typedefs that omit generics with default values. by @obi1kenobi in #333
- Ensure the test crate creation script is executable. by @obi1kenobi in #335
- Release v0.17.1. by @obi1kenobi in #336
Full Changelog: v0.17.0...v0.17.1
v0.17.0
What's Changed
- Requires Rust 1.65+ when generating rustdoc.
- Support for re-exports, renames,
pub type
, and globs. Eliminated many false-positive bugs related to these. #288 - Bugfix for a path handling bug on Windows: #276
All Merged PRs
- Echo the toolchain version while generating rustdoc. by @obi1kenobi in #328
- Add vendored-openssl feature by @tonowak in #324
- Use trustfall_rustdoc v0.8.2, drop rustdoc v16 support. by @obi1kenobi in #327
- Add a test case with infinite importable paths. by @obi1kenobi in #287
- Speed up tests by 10x by compiling dependencies with optimizations. by @obi1kenobi in #329
- Detect and don't report non-breaking renaming re-exports. by @obi1kenobi in #330
- Update crates-index to v0.19.2. by @obi1kenobi in #331
- Release v0.17.0. by @obi1kenobi in #332
Full Changelog: v0.16.2...v0.17.0
v0.16.2
What's Changed
- Bump crates-index to 0.19.0 since 0.18.12 is yanked due to semver break. by @obi1kenobi in #322
- Release v0.16.2. by @obi1kenobi in #323
Full Changelog: v0.16.1...v0.16.2