Releases: obi1kenobi/cargo-semver-checks
v0.23.0
What's Changed
This release enables sparse index support, which you'll notice in the form of much faster semver-checking time. Thanks to @Jake-Shadle for this huge contribution!
New lints in this release:
This is the last version to support Rust 1.67.
Due to many of our dependencies raising MSRV to 1.70, our future releases will also have an MSRV of 1.70 or higher. However, Rust 1.68-1.70 share a rustdoc JSON format, so the next planned release will be able to test crates that need 1.68 or 1.69 — just compile cargo-semver-checks
itself on Rust 1.70 or higher before using it with 1.68-1.69.
All Merged PRs
- Automatically keep
Cargo.lock
up to date. by @obi1kenobi in #483 - Fix dependency updater variable references. by @obi1kenobi in #484
- Weekly
cargo update
of dependencies by @obi1kenobi in #486 - Weekly
cargo update
of dependencies by @obi1kenobi in #489 - Add Rust 1.70 to test grid since stable is 1.71 now. by @obi1kenobi in #492
- Avoid lint by rewriting macro. by @obi1kenobi in #493
- Prettier test diff output via
similar-asserts
. by @obi1kenobi in #494 - Add lint for missing pub module-level const by @gliu20 in #491
- Ensure missing span_filename and span_begin_line shows user friendly error by @gliu20 in #490
- New lint: Pub module level static missing by @gliu20 in #496
- Weekly
cargo update
of dependencies by @obi1kenobi in #497 - Weekly
cargo update
of dependencies by @obi1kenobi in #498 - Make CI hash Rust files not toml files by @u9g in #501
- Weekly
cargo update
of dependencies by @obi1kenobi in #504 - Weekly
cargo update
of dependencies by @obi1kenobi in #505 - Update to Trustfall v0.6. by @obi1kenobi in #508
- Fix the rustc min version check to require Rust 1.67, not 1.65. by @obi1kenobi in #507
- Add Trait removed associated type lint by @u9g in #500
- Upgrade dependency major versions. by @obi1kenobi in #509
- Replace
crates-index
withtame-index
by @Jake-Shadle in #506 - Weekly
cargo update
of dependencies by @obi1kenobi in #510 - Weekly
cargo update
of dependencies by @obi1kenobi in #512 - Don't clippy dependencies. Lint rustdoc of hidden items. by @obi1kenobi in #514
- Rewrite code to avoid triggering new clippy lint. by @obi1kenobi in #515
- Point to the new repo name. by @obi1kenobi in #516
- Weekly
cargo update
of dependencies by @obi1kenobi in #517 - Weekly
cargo update
of dependencies by @obi1kenobi in #520 - Use serde 1.0.185, skipping past the version with a precompiled binary. by @obi1kenobi in #521
- Ensure we test on both Rust 1.71 and 1.72 stable. by @obi1kenobi in #522
- Fix error in link by @c-git in #526
- Weekly
cargo update
of dependencies by @obi1kenobi in #523 - Support rustdoc v27 for latest nightly. by @obi1kenobi in #529
- Release v0.23.0 with new lints and sparse index support. by @obi1kenobi in #528
New Contributors
- @gliu20 made their first contribution in #491
- @u9g made their first contribution in #501
- @Jake-Shadle made their first contribution in #506
- @c-git made their first contribution in #526
Full Changelog: v0.22.1...v0.23.0
v0.22.1
What's Changed
- Fix crash when checking crate without a lib target, or a workspace with such a crate.
- Such crates are now skipped by default. The tool exits with an error if there are no lib crates to check.
All Merged PRs
- Remove outdated O(n^2) section. by @obi1kenobi in #475
- Skip crates without lib targets; exit non-zero if nothing to check. by @obi1kenobi in #477
- Update dependencies. by @obi1kenobi in #478
- Release v0.22.1. by @obi1kenobi in #479
Full Changelog: v0.22.0...v0.22.1
v0.22.0
What's Changed
- New lint:
trait_removed_supertrait
All Merged PRs
- New lint: trait removed supertrait by @era in #470
- Update dependencies. by @obi1kenobi in #472
- Release v0.22 with new lint: trait removed supertrait. by @obi1kenobi in #474
Full Changelog: v0.21.0...v0.22.0
v0.21.0
What's Changed
- Better defaults and fine-grained control over which crate features are semver-checked
- Includes CLI flags for overriding feature groups and including features to be checked.
- New heuristic for choosing features to semver-check while avoiding unstable, nightly, and private-only features.
- This heuristic replaces the prior default behavior of checking all features even if they were clearly marked as unstable or private.
- New lint:
trait_method_missing
- Many improvements to various error messages.
This release only supports semver-checking rustdoc generated by Rust 1.67+, dropping support for rustdoc formats v21 and v22 part of Rust 1.65 and 1.66 respectively. This was previously announced in the release notes of the v0.20 release.
All Merged PRs
- Minimum rustc version error by @arnaudgolfouse in #449
- Add ability to specify features in CLI by @staniewzki in #426
- Upgrade dependency versions. by @obi1kenobi in #455
- feat: Add lint for missing trait methods by @zurawiki in #427
- Improved error message when no baseline version found on crates.io by @era in #456
- Replace rustdoc v25 with v26 support. by @obi1kenobi in #457
- Update to git2 0.17 and accompanying new crates-index version. by @obi1kenobi in #460
- Update features heuristic to include more unstable and private feature name patterns by @era in #463
- Running cargo semver-checks with no other arguments should default to checking by @era in #459
- Add Rust 1.69 to test list. by @obi1kenobi in #464
- Update README with feature flags examples by @staniewzki in #458
- Release v0.21. by @obi1kenobi in #466
New Contributors
- @arnaudgolfouse made their first contribution in #449
- @zurawiki made their first contribution in #427
- @era made their first contribution in #456
Full Changelog: v0.20.1...v0.21.0
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