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

✨ 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_kindtrait_changed_kindunion_changed_kindunion_changed_to_incompatible_structunion_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_unwindexported_function_abi_now_unwindexported_function_parameter_count_changedexported_function_return_value_addedexported_function_now_returns_unitexported_function_target_feature_addedexported_function_requires_more_target_features
Method ABI/unwind/symbol changes (inherent + trait)
inherent_method_changed_abiinherent_method_no_longer_unwindinherent_method_now_unwindtrait_method_changed_abitrait_method_no_longer_unwindtrait_method_now_unwindmethod_export_name_changed
Inherent method receiver changes
method_no_longer_has_receivermethod_receiver_mut_ref_became_ownedmethod_receiver_ref_became_mutmethod_receiver_ref_became_ownedmethod_receiver_type_changed
Trait method receiver changes
trait_method_no_longer_has_receivertrait_method_receiver_addedtrait_method_receiver_mut_ref_became_ownedtrait_method_receiver_mut_ref_became_reftrait_method_receiver_owned_became_mut_reftrait_method_receiver_owned_became_reftrait_method_receiver_ref_became_muttrait_method_receiver_ref_became_ownedtrait_method_receiver_type_changed
SemVer-major, warn-by-default
Sealed trait method receiver changes
pub_api_sealed_trait_method_receiver_addedpub_api_sealed_trait_method_receiver_mut_ref_became_ref
Allow-by-default lints for additive-only changes
Public struct additions / exhaustiveness
exhaustive_struct_addedexhaustive_struct_with_private_fields_addedexhaustive_struct_with_doc_hidden_fields_addednon_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_removedtrait_must_use_removed
All merged PRs
- Keep the GitHub credentials configuration, just override token. by @obi1kenobi in #1487
- Drop support for Rust 1.89. New MSRV is 1.90. by @obi1kenobi in #1489
- Weekly
cargo updateof dependencies by @obi1kenobi in #1490 - new lint:
method_receiver_ref_became_ownedby @lovelindhoni in #1263 - Add
method_receiver_ref_became_mutlint. by @obi1kenobi in #1492 - Add
method_receiver_mut_ref_became_ownedlint. by @obi1kenobi in #1493 - Add
method_receiver_type_changedlint. by @obi1kenobi in #1494 - Add
method_no_longer_has_receiverlint; bugfix in param count lint. by @obi1kenobi in #1496 - Replace deprecated cargo_bin usage in tests by @obi1kenobi in #1495
- Checkout with token to make tags and releases. by @obi1kenobi in #1488
- Fix false-positive in
trait_method_parameter_count_changedlint. by @obi1kenobi in #1498 - Add lints for breaking changes to general-case trait method receivers. by @obi1kenobi in #1499
- Add
trait_method_no_longer_has_receiverlint. by @obi1kenobi in #1500 - Add remaining trait receiver lints. by @obi1kenobi in #1501
- Remove expression from
instaoutput in tests. by @CLIDragon in #1497 - Match up receivers in param-count-changed lints to avoid false-positives by @obi1kenobi in #1502
- Weekly
cargo updateof dependencies by @obi1kenobi in #1503 - Add lints for adding receivers to trait methods. by @obi1kenobi in #1504
- Clean up ABI-related lints to make them use latest schema abilities. by @obi1kenobi in #1505
- Add
method_export_name_changedlint. by @obi1kenobi in #1506 - Add new lints for ABI-exported functions. by @obi1kenobi in #1507
- Add ABI change lints for inherent methods and trait methods. by @obi1kenobi in #1508
- Weekly
cargo updateof dependencies by @obi1kenobi in #1510 - Bump actions/checkout from 5 to 6 by @dependabot[bot] in #1511
- Add support for rustdoc v57 via trustfall_rustdoc v0.37.0. by @obi1kenobi in #1512
- Update to ron v0.12.0. by @obi1kenobi in #1513
- Add lint trait_must_use_removed by @Nalin-khanna in #1515
- Inherent method must_use removed by @Nalin-khanna in #1516
- Add next Rust minor to test matrix by @obi1kenobi in #1518
- Bump actions/cache from 4 to 5 by @dependabot[bot] in #1521
- Bump actions/download-artifact from 6 to 7 by @dependabot[bot] in #1520
- Bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in #1519
- Weekly
cargo updateof dependencies by @obi1kenobi in #1514 - Weekly
cargo updateof dependencies by @obi1kenobi in #1522 - Upgrade
gixandtame-indexto new majors. by @obi1kenobi in #1525 - Weekly
cargo updateof dependencies by @obi1kenobi in #1524 - Add
exported_function_return_value_addedlint. by @obi1kenobi in #1527 - Explain that negative tests w/ identical code are pointless. by @obi1kenobi in #1528
- Weekly
cargo updateof dependencies by @obi1kenobi in #1529 - Separate out "enum became struct/union/trait" from "enum missing" lint. by @obi1kenobi in #1530
- Add
trait_changed_kindlint separate fromtrait_missing. by @obi1kenobi in #1531 - Add new lints for unions changing to other kinds of types. by @obi1kenobi in #1533
- Revert trait_missing trait public_api suppression gate by @obi1kenobi in #1532
- Improve
src/lints/AGENTS.mdbased on latest lint-writing experience. by @obi1kenobi in #1534 - Add
copy_impl_addedlint. by @obi1kenobi in #1536 - Implement
feature_no_longer_implies_featurelint. by @obi1kenobi in #1535 - Implement
feature_newly_implies_featurelint. by @obi1kenobi in #1537 - Exhaustive struct added by @Nalin-khanna in #1538
- Weekly
cargo updateof dependencies by @obi1kenobi in #1539 - Use
enablesinstead ofimpliesterminology for features. by @obi1kenobi in #1540 - Weekly
cargo updateof dependencies by @obi1kenobi in #1542 - Non exhaustive struct added by @Nalin-khanna in #1541
- Weekly
cargo updateof dependencies by @obi1kenobi in #1544 - Weekly
cargo updateof dependencies by @obi1kenobi in #1545 - Add two new lints regarding additions of structs. by @Nalin-khanna in #1543
- Weekly
cargo updateof dependencies by @obi1kenobi in #1552 - fix feature escaping in bugreport snapshot by @GrigorenkoPV in #1548
- docs: mention running checks per target triple with --target by @dharmvr1 in #1547
- Add next Rust minor to test matrix by @obi1kenobi in #1554
- Add new minor lint for adding an inherent associated
constto public API by @connor15mcc in #1551 - Weekly
cargo updateof dependencies by @obi1kenobi in #1556 - Release v0.46.0. by @obi1kenobi in #1557
- Add a manual release trigger. by @obi1kenobi in #1558
New Contributors
- @Nalin-khanna made their first contribution in #1515
- @GrigorenkoPV made their first contribution in #1548
- @dharmvr1 made their first contribution in #1547
- @connor15mcc made their first contribution in #1551
Full Changelog: v0.45.0...v0.46.0