cargo cargo-semver-checks 0.46.0
v0.46.0

latest releases: 0.50.0, 0.49.0, 0.48.0...
7 months ago

In this release

  • 45 new lints — our biggest release ever!
  • Spotlight: Exponential growth continued — 2025 Year in Review

semver-animation
This adorable animation was made by @dekirisu

This release requires Rust 1.90+ both to install (MSRV) and at runtime. Future releases will require Rust 1.91+.

This is the last release to support git-based package indexes. Future releases will require the use of a sparse index for linting against package versions published to a registry.

Spotlight: Exponential growth continued — 2025 Year in Review

Please check out our year in review post for a look at what we accomplished in 2025, and what lies ahead.

One of the highlights: in 2025 we more than doubled the number of lints, from 120 on January 1 to 242 lints on December 31!

New lints

This release ships with 245 lints in total. We added 35 new SemVer-major deny-by-default lints, 2 major warn-by-default lints, and 8 new allow-by-default lints for additive-only changes.

SemVer-major, deny-by-default

New trait impls

  • copy_impl_added

Type kind changes (enum became struct etc.)

  • enum_changed_kind
  • trait_changed_kind
  • union_changed_kind
  • union_changed_to_incompatible_struct
  • union_with_multiple_pub_fields_changed_to_struct

Cargo feature graph removal

  • feature_no_longer_enables_feature

Exported functions (FFI) signature/ABI/target features

  • exported_function_abi_no_longer_unwind
  • exported_function_abi_now_unwind
  • exported_function_parameter_count_changed
  • exported_function_return_value_added
  • exported_function_now_returns_unit
  • exported_function_target_feature_added
  • exported_function_requires_more_target_features

Method ABI/unwind/symbol changes (inherent + trait)

  • inherent_method_changed_abi
  • inherent_method_no_longer_unwind
  • inherent_method_now_unwind
  • trait_method_changed_abi
  • trait_method_no_longer_unwind
  • trait_method_now_unwind
  • method_export_name_changed

Inherent method receiver changes

  • method_no_longer_has_receiver
  • method_receiver_mut_ref_became_owned
  • method_receiver_ref_became_mut
  • method_receiver_ref_became_owned
  • method_receiver_type_changed

Trait method receiver changes

  • trait_method_no_longer_has_receiver
  • trait_method_receiver_added
  • trait_method_receiver_mut_ref_became_owned
  • trait_method_receiver_mut_ref_became_ref
  • trait_method_receiver_owned_became_mut_ref
  • trait_method_receiver_owned_became_ref
  • trait_method_receiver_ref_became_mut
  • trait_method_receiver_ref_became_owned
  • trait_method_receiver_type_changed

SemVer-major, warn-by-default

Sealed trait method receiver changes

  • pub_api_sealed_trait_method_receiver_added
  • pub_api_sealed_trait_method_receiver_mut_ref_became_ref

Allow-by-default lints for additive-only changes

Public struct additions / exhaustiveness

  • exhaustive_struct_added
  • exhaustive_struct_with_private_fields_added
  • exhaustive_struct_with_doc_hidden_fields_added
  • non_exhaustive_struct_added

Cargo feature graph expansion

  • feature_newly_enables_feature

Associated items added on inherent impls

  • inherent_associated_pub_const_added

#[must_use] removals

  • inherent_method_must_use_removed
  • trait_must_use_removed

All merged PRs

New Contributors

Full Changelog: v0.45.0...v0.46.0

Don't miss a new cargo-semver-checks release

NewReleases is sending notifications on new releases.