Skip to content

Releases: obi1kenobi/cargo-semver-checks

v0.27.0

28 Dec 17:12
94a491f
Compare
Choose a tag to compare

What's Changed

New lints:

Also added support for rustdoc's new v28 JSON format.

This brings us to 57 lints to end 2023, up from 30 at the end of last year 🎉 Writing lints is one of the easiest ways to contribute to cargo-semver-checks — there are hundreds of lints yet to be added — so check out issues labeled E-mentor A-lint and give it a shot!

All Merged PRs

New Contributors

Full Changelog: v0.26.0...v0.27.0

v0.26.0

08 Dec 17:02
0d1e24f
Compare
Choose a tag to compare

What's Changed

Four new lints related to items being removed from the public API by making them #[doc(hidden)]. All contributed by @u9g:

  • struct_now_doc_hidden
  • enum_now_doc_hidden
  • function_now_doc_hidden
  • trait_now_doc_hidden

All these are semver-major changes, as described in this post: https://predr.ag/blog/checking-semver-for-doc-hidden-items/

Plus, an update to our library API to allow suppressing cargo-semver-checks logging output, to make it more pleasant for other tools to plug in cargo-semver-checks functionality as a library. Contributed by @markhaehnel.

Semver-checking with this release requires Rust 1.71+.

All Merged PRs

New Contributors

Full Changelog: v0.25.0...v0.26.0

v0.25.0

17 Nov 21:51
0279dd1
Compare
Choose a tag to compare

What's Changed

Resolved nearly all false-positive lints that were caused by improper doc(hidden) handling — nearly 60% of all false-positives observed in the real world!

Proper doc(hidden) handling requires Rust 1.73+, due to a rustdoc bug in prior versions that causes re-exported hidden items to be inappropriately omitted from rustdoc JSON files. Therefore:

  • we drop support for Rust 1.70, and
  • we advise against using Rust 1.71-1.72 even though cargo-semver-checks will still run with them, since they happen to share a rustdoc JSON format with Rust 1.73.

All Merged PRs

  • Remove erroneous curly brace from module_missing error format string. by @obi1kenobi in #574
  • Weekly cargo update of dependencies by @obi1kenobi in #575
  • Improve error message for inherent_method_const_removed lint. by @obi1kenobi in #577
  • Do not consider #[doc(hidden)] items part of the public API. by @obi1kenobi in #576
  • Weekly cargo update of dependencies by @obi1kenobi in #580
  • Add counterexample test case for ignoring doc(hidden) items. by @obi1kenobi in #581
  • Update Trustfall, trustfall_rustdoc, and gix/tame-index dependencies. by @obi1kenobi in #582
  • Release v0.25, featuring correct #[doc(hidden)] handling. by @obi1kenobi in #583

Full Changelog: v0.24.2...v0.25.0

v0.24.2

29 Oct 17:41
62dfe78
Compare
Choose a tag to compare

What's Changed

Treat quoted empty-strings as empty-string in CLI feature selection code, contributed by @HadrienG2 in #569.

All Merged PRs

  • Treat quoted empty string as an empty string by @HadrienG2 in #569
  • Update dependencies before publishing new release. by @obi1kenobi in #571
  • Release v0.24.2 with CLI tweak to ignore empty-string features. by @obi1kenobi in #572

Full Changelog: v0.24.1...v0.24.2

v0.24.1

23 Oct 04:26
4bce03d
Compare
Choose a tag to compare

What's Changed

A couple of minor tweaks:

  • If configured to use a git cargo index, and the index directory doesn't exist — create it and continue.
  • Treat --features="" as a no-op feature. Same for --current-features and --baseline-features.

Thanks to @Jake-Shadle for quickly pushing an update to tame-index to fix the git index issue, and to @HadrienG2 for contributing the --features="" change.

All Merged PRs

New Contributors

Full Changelog: v0.24.0...v0.24.1

v0.24.0

08 Oct 17:48
93baddc
Compare
Choose a tag to compare

What's Changed

This release drops our git2 dependency in favor of gix, which is much faster in practice. We already had a dependency on gix via tame-index, so this switch also improves compile times. Thanks to @Byron for this contribution!

New lints in this release:

Bugfixes:

  • Re-exporting items as _ no longer produces false positives: #536, fixed in #541
  • Checking a newly-added lib target of a crate that has a bin-only release on crates.io no longer crashes: #511, fixed in #548

This release has an MSRV of Rust 1.70. However, Rust 1.68-1.70 share a rustdoc JSON format, so semver-checking crates that need 1.68 or 1.69 is supported — just use our precompiled binaries or compile cargo-semver-checks itself on Rust 1.70+.

All Merged PRs

New Contributors

Full Changelog: v0.23.0...v0.24.0

v0.23.0

07 Sep 21:03
b4a9f6f
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: v0.22.1...v0.23.0

v0.22.1

29 Jun 07:52
7a0ee5d
Compare
Choose a tag to compare

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

Full Changelog: v0.22.0...v0.22.1

v0.22.0

20 Jun 02:01
cbfbad8
Compare
Choose a tag to compare

What's Changed

All Merged PRs

Full Changelog: v0.21.0...v0.22.0

v0.21.0

06 Jun 17:42
81890e5
Compare
Choose a tag to compare

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

Full Changelog: v0.20.1...v0.21.0