v0.44.0
In this release
- 22 new lints, for a total of 200 π
- Spotlight: The Road to 200 lints

β¨ This adorable animation was made by @dekirisu β¨
This release requires Rust 1.88+ both to install (MSRV) and at runtime. Future releases will require Rust 1.89+.
Spotlight: The Moore's Law of Lints
We have a kind of "Moore's Law" for lints: every year we run twice as many lints in the same total time.
- 30 lints at the end of 2022
- 57 lints at the end of 2023
- 120 lints at the end of 2024
- We'd need 240 lints at the end of 2025 to keep up the pace; with ~3.3 months to go, we're at 200 lints.
- Meanwhile, as of the optimizations shipped 2.5 years ago, running lints on crates.io's largest library required only 8s or less.
This is rare and remarkable, and requires overcoming many complex socio-technical challenges! Here are a few examples from conference talks related to cargo-semver-checks:
- Advanced testing techniques that allow us to ship quickly β EuroRust 2024
- Designing powerful optimization APIs so our linting time doesn't explode β P99 CONF 2023
- Forging closer integrations with the rest of the Rust project, so we can solve problems together β RustWeek 2025
- "SemVer linting is an undecidable problem" and yet we've found ways to solve it anyway β Rust Forge 2025
We're also fortunate to have two extraordinary students working on cargo-semver-checks this year as part of Google Summer of Code! Their work is key to continuing this positive exponential trend, and we look forward to showcasing their impact more closely later this year.
New lints
The 22 new lints are grouped in several categories.
API or ABI breakage
function_const_generic_reorderedfunction_generic_type_reorderedfunction_now_returns_unitinherent_method_const_generic_reorderedinherent_method_generic_type_reorderedinherent_method_now_returns_unitrepr_align_addedrepr_align_changedrepr_align_removedrepr_packed_changedtrait_const_generic_reorderedtrait_generic_type_reorderedtrait_method_const_generic_reorderedtrait_method_generic_type_reorderedtrait_method_now_returns_unittrait_method_return_value_addedtype_const_generic_reorderedtype_generic_type_reordered
Compatibility risks, such as changes that may require a SemVer major bump to revert, or may otherwise represent unintended API changes without being SemVer-major themselves:
pub_api_sealed_trait_method_return_value_added
Additive-only API changes (opt-in only; more work required):
function_must_use_removedstruct_must_use_removedunion_must_use_removed
All merged PRs
- Minimum supported Rust version is now 1.88. by @obi1kenobi in #1387
- Weekly
cargo updateof dependencies by @obi1kenobi in #1388 - Bump actions/checkout from 4 to 5 by @dependabot[bot] in #1389
- Weekly
cargo updateof dependencies by @obi1kenobi in #1391 - Add
struct_must_use_removedby @nk9 in #1392 - Weekly
cargo updateof dependencies by @obi1kenobi in #1395 - Weekly
cargo updateof dependencies by @obi1kenobi in #1398 - Add info about build prerequisites to the CONTRIBUTING doc. by @nk9 in #1402
- Add
function_must_use_removedby @nk9 in #1400 - Add
union_must_use_removedby @nk9 in #1399 - Sort the list of lints. by @obi1kenobi in #1403
- Replace tuple with a LintResult struct by @kornelski in #1396
- Bump trustfall_rustdoc to v0.33.0 by @obi1kenobi in #1405
- Ensure rustdoc generation script doesn't overflow shell arg buffer. by @obi1kenobi in #1406
- Add
function_const_generic_reorderedandfunction_generic_type_reorderedlints. by @obi1kenobi in #1407 - lint: detect trait method generic reordering by @obi1kenobi in #1409
- lint: detect generic reorder in inherent methods by @obi1kenobi in #1408
- Add lints for generic reorder on impl owners by @obi1kenobi in #1410
- Add lints for trait generic const/type reordering by @obi1kenobi in #1411
- run_check_release tweaks by @kornelski in #1412
- Add repr_packed_changed lint by @obi1kenobi in #1415
- Add repr_align_changed lint by @obi1kenobi in #1418
- Better diagnostic in
repr_packed_changedlint. by @obi1kenobi in #1420 - Add repr align added and removed lints by @obi1kenobi in #1419
- Don't create a vec for skipped queries by @kornelski in #1413
- Separate report printing from generation by @kornelski in #1422
- Weekly
cargo updateof dependencies by @obi1kenobi in #1425 - Enable the rustdoc JSON v56 support feature. by @obi1kenobi in #1426
- [Witness Generation] Add empty witness crate generation by @GlitchlessCode in #1414
- Weekly
cargo updateof dependencies by @obi1kenobi in #1427 - Update
trustfall_rustdocandcargo_metadataversions. by @obi1kenobi in #1428 - Bump
ron,clap-cargo,gix, andtame-indexmajor versions. by @obi1kenobi in #1429 - Add .gitignore in the
test_cratesdirectory to ignore lockfiles. by @obi1kenobi in #1431 - Add lint for functions now returning unit by @obi1kenobi in #1432
- Use edition 2024 for the template crate. by @obi1kenobi in #1434
- feat: check inherent method returning unit by @obi1kenobi in #1433
- Add
TODOnotes to function about returning unit. by @obi1kenobi in #1435 - Add lint for trait methods that start returning unit by @obi1kenobi in #1436
- Weekly
cargo updateof dependencies by @obi1kenobi in #1437 - Add next Rust minor to test matrix by @obi1kenobi in #1438
- Add lint for trait method return value added by @obi1kenobi in #1439
- Handle async methods in sealed trait return value lint by @obi1kenobi in #1440
- Enable Trusted Publishing for release workflow by @obi1kenobi in #1442
- Weekly
cargo updateof dependencies by @obi1kenobi in #1441 - Allow write permission for ID token for trusted publishing. by @obi1kenobi in #1444
New Contributors
Full Changelog: v0.43.0...v0.44.0