In this release
- Spotlight: I'm giving a talk at Rust Forge!
- Performance improvements
- 1 new lint, for a total of 178
This release requires Rust 1.87+ both to install (MSRV) and at runtime. Future releases will require Rust 1.88+.
Spotlight: I'm giving a talk at Rust Forge!
Rust Forge is a creative new conference organized by Rust in Action author Tim McNamara. It's scheduled for 27-30 August 2025 in Wellington, New Zealand.
My talk is titled "The Past, Present, and Future of SemVer in Rust" and I'm extremely excited about it! Here's a short description:
At least 1-2 times per week, accidental breaking changes sneak into the new release of some popular Rust package, despite the maintainers' best efforts. Why is this still a problem 10 years after Rust 1.0? What will it take to finally stop such breakage, so we can have fearless
cargo update
?
It's not too late to grab a ticket! I hope to see you there!
Performance improvements
Supporting an exponentially-growing number of lints requires periodic maintenance in the form of mandatory performance engineering, Without it, things would quickly get out of hand, and large crates and large workspaces would be affected first. To prevent that, this release cycle focused on both internal and external improvements.
Externally-visible improvements include lint execution time improvements, courtesy of a new query profiling tool prototype developed by @CLIDragon. This allowed us to add targeted new indexes that speed up the execution of some lints by as much as 10x! After these optimizations, running the full suite of lints on Rust's largest crates needs only ~2s, down from around ~8s previously.
Internal improvements include a variety of optimizations aimed at reducing the time taken by our CI suite, from an original of ~7min for cargo test
down to around ~1min.
If you're wondering why cargo test
used to take 7min in the first place: our test suite runs ~250000 lint queries to ensure correctness and keep false-positives out! Even extremely cheap operations done 250k times add up very quickly! After the optimizations, we still run those 250k queries — we didn't sacrifice correctness at all, but merely cut out avoidable overhead.
New lints
We added only one new lint in this release, tracking an additive-only API change: enum_must_use_removed
. This lint group remains opt-in-only.
All merged PRs
- Drop support for Rust prior to 1.87. by @obi1kenobi in #1359
- Use edition 2024 now that we aren't MSRV-bound. by @obi1kenobi in #1360
- Weekly
cargo update
of dependencies by @obi1kenobi in #1361 - Refactor rustdoc generation, replacing dynamic dispatch system by @GlitchlessCode in #1354
- Weekly
cargo update
of dependencies by @obi1kenobi in #1363 - Bump trustfall_rustdoc to v0.29 to use cached schemas. by @obi1kenobi in #1365
- Weekly
cargo update
of dependencies by @obi1kenobi in #1367 - Weekly
cargo update
of dependencies by @obi1kenobi in #1370 - Add
enum_must_use_removed
lint. by @shreyans413 in #1368 - Support rustdoc v54 and use latest
cargo_metadata
. by @obi1kenobi in #1372 - Parse each query three times per query-lint pair (instead of six times) by @CLIDragon in #1371
- Weekly
cargo update
of dependencies by @obi1kenobi in #1374 - Use
run_query_with_indexed_query
by @CLIDragon in #1373 - Bump major versions of
cargo_toml, toml, tame_index, clap-cargo
. by @obi1kenobi in #1375 - Weekly
cargo update
of dependencies by @obi1kenobi in #1378 - Weekly
cargo update
of dependencies by @obi1kenobi in #1380 - Support rustdoc v55 which is currently in beta and nightly. by @obi1kenobi in #1383
- Bump actions/download-artifact from 4 to 5 by @dependabot[bot] in #1382
- Add next Rust minor to test matrix by @obi1kenobi in #1381
- Don't upload prebuilt rustdocs for Rust <1.87 by @obi1kenobi in #1384
- Weekly
cargo update
of dependencies by @obi1kenobi in #1385 - Release v0.43 with performance optimizations for large crates. by @obi1kenobi in #1386
New Contributors
- @CLIDragon made their first contribution in #1371
Full Changelog: v0.42.0...v0.43.0