Releases: obi1kenobi/cargo-semver-checks
v0.45.0
In this release
- Respect
.cargo/config.tomlbuild configuration,RUSTFLAGS, andRUSTDOCFLAGS - Spotlight: Ghosts in the Compilation

✨ This adorable animation was made by @dekirisu ✨
This release requires Rust 1.89+ both to install (MSRV) and at runtime. Future releases will require Rust 1.90+.
Spotlight: Ghosts in the Compilation
Celebrating Halloween, Ghosts in the Compilation is the debugging story of how the functionality for respecting .cargo/config.toml configuration came to be.
We found a crate where:
cargo-semver-checkssaid the code didn't compile.cargo checksaid it was fine.
As a result, we learned a fair bit about the edge cases of cargo, rustc, rustdoc, and compilation flags. Check it out here!
All merged PRs
- Releases now use Trusted Publishing, not a crates.io token. by @obi1kenobi in #1445
- Separate the tag and release-creation job from the publish job. by @obi1kenobi in #1446
- Remove unused atty dependency by @tottoto in #1448
- Update clap deprecated api by @tottoto in #1449
- Drop support for Rust 1.88. by @obi1kenobi in #1447
- docs: document test crate authoring practices by @obi1kenobi in #1450
- Add
AGENTS.mdforsrc/lintsdirectory. by @obi1kenobi in #1451 - Add tests for test crate manifest consistency by @obi1kenobi in #1452
- Add unit test validating lint file metadata by @obi1kenobi in #1453
- Weekly
cargo updateof dependencies by @obi1kenobi in #1454 - Add top-level AGENTS.md file. by @obi1kenobi in #1455
- Add CI check for Cargo.lock files in test crates by @obi1kenobi in #1457
- Trim unchanged code from test crate pairs by @obi1kenobi in #1458
- Add workflow to auto-apply lint fixes by @obi1kenobi in #1459
- Add test to verify lint file naming consistency by @obi1kenobi in #1456
- Fix crash when passing
--manifest-path Cargo.tomlin cwd. by @obi1kenobi in #1462 - Weekly
cargo updateof dependencies by @obi1kenobi in #1465 - Weekly
cargo updateof dependencies by @obi1kenobi in #1468 - Ignore stale directories in manifest consistency check test. by @obi1kenobi in #1469
- Leniently accept
--baseline-rootas a manifest path. by @obi1kenobi in #1464 - Load rustflags/rustdocflags from cargo config, then augment them. by @obi1kenobi in #1471
- chore: updating snapshots for branch codex/remove-identical-code-in-test-crates by @obi1kenobi in #1460
- Weekly
cargo updateof dependencies by @obi1kenobi in #1474 - Weekly
cargo updateof dependencies by @obi1kenobi in #1479 - Add
--buildcargo flag to build failure repro message. by @obi1kenobi in #1480 - Bump actions/download-artifact from 5 to 6 by @dependabot[bot] in #1477
- Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in #1476
- Fix broken rustdoc link. by @obi1kenobi in #1483
- Streamlined error message wording. by @obi1kenobi in #1482
- Add next Rust minor to test matrix by @obi1kenobi in #1481
- Update
tame-indexandgixdependencies together. by @obi1kenobi in #1484 - Bump cargo_metadata version and chained dependencies. by @obi1kenobi in #1485
- Release v0.45. by @obi1kenobi in #1486
New Contributors
Full Changelog: v0.44.0...v0.45.0
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
v0.43.0
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 updateof dependencies by @obi1kenobi in #1361 - Refactor rustdoc generation, replacing dynamic dispatch system by @GlitchlessCode in #1354
- Weekly
cargo updateof dependencies by @obi1kenobi in #1363 - Bump trustfall_rustdoc to v0.29 to use cached schemas. by @obi1kenobi in #1365
- Weekly
cargo updateof dependencies by @obi1kenobi in #1367 - Weekly
cargo updateof dependencies by @obi1kenobi in #1370 - Add
enum_must_use_removedlint. 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 updateof dependencies by @obi1kenobi in #1374 - Use
run_query_with_indexed_queryby @CLIDragon in #1373 - Bump major versions of
cargo_toml, toml, tame_index, clap-cargo. by @obi1kenobi in #1375 - Weekly
cargo updateof dependencies by @obi1kenobi in #1378 - Weekly
cargo updateof 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 updateof 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
v0.42.0
In this release
- 13 new lints, for a total of 177
- Spotlight:
#[target_feature]lints - Bugfix: false-positive sealed trait lints
This release requires Rust 1.85+ both to install (MSRV) and at runtime. Future releases will require Rust 1.87+.
Spotlight: #[target_feature] lints
Check out this in-depth look at the SemVer and soundness surprises behind this attribute:
Unsoundness and accidental features in the #[target_feature] attribute
New lints
We added new 13 lints across several categories, including 12 lints around #[target_feature] and one lint about an additive-only change. Some of the new lints are error-by-default, while others are warnings meant to flag changes deserving closer review, or even opt-in only and disabled by default while we do more work to improve their user experience.
API breakage:
safe_function_requires_more_target_featuressafe_function_target_feature_addedsafe_inherent_method_requires_more_target_featuressafe_inherent_method_target_feature_addedtrait_method_target_feature_removedunsafe_function_requires_more_target_featuresunsafe_function_target_feature_addedunsafe_inherent_method_requires_more_target_featuresunsafe_inherent_method_target_feature_addedunsafe_trait_method_requires_more_target_featuresunsafe_trait_method_target_feature_addedpub_api_sealed_trait_method_target_feature_removed(warn-by-default)
Additive-only API changes (opt-in only; more work required):
exhaustive_enum_added
All merged PRs
- Update FAQ section on MSRV policy. by @obi1kenobi in #1258
- Weekly
cargo updateof dependencies by @obi1kenobi in #1259 - feat: check for minimum possible semver bump by @Frank-III in #1237
- Weekly
cargo updateof dependencies by @obi1kenobi in #1261 - Drop support for Rust 1.84. New MSRV is 1.85. by @obi1kenobi in #1257
- Weekly
cargo updateof dependencies by @obi1kenobi in #1264 - Add next Rust minor to test matrix by @obi1kenobi in #1266
- Weekly
cargo updateof dependencies by @obi1kenobi in #1270 - Weekly
cargo updateof dependencies by @obi1kenobi in #1273 - Weekly
cargo updateof dependencies by @obi1kenobi in #1277 - Fix error message when registry version is not found. by @obi1kenobi in #1280
- [Witness Generation] Add unstable witness program flag by @GlitchlessCode in #1276
- Add support for rustdoc JSON format v46. by @obi1kenobi in #1282
- Weekly
cargo updateof dependencies by @obi1kenobi in #1284 - Upgrade tame-index and gix by @kornelski in #1287
- Don't change current_dir when running cargo by @kornelski in #1290
- Collect crates before running reports by @kornelski in #1289
- Weekly
cargo updateof dependencies by @obi1kenobi in #1294 - Update to
trustfall_rustdocversion w/#[target_feature]data. by @obi1kenobi in #1295 - Enable environment variable overrides for git repo discovery by @PigeonF in #1269
- Touch up the README. by @obi1kenobi in #1296
- Fix doc comment formatting by @obi1kenobi in #1298
- Fix color choice for stderr by @obi1kenobi in #1299
- Fix typo in CONTRIBUTING by @obi1kenobi in #1300
- Add
exhaustive_enum_addedlint. by @shreyans413 in #1189 - Add conflict checks for current_rustdoc by @obi1kenobi in #1301
- Add
unsafe_function_target_feature_addedlint by @obi1kenobi in #1302 - Add scripts and CI job for prebuilt test rustdocs by @obi1kenobi in #1305
- Add
unsafe_trait_method_target_feature_addedlint by @obi1kenobi in #1304 - Update CI matrix updater by @obi1kenobi in #1308
- Fix artifact retrieval by @obi1kenobi in #1310
- Add workflow to automate snapshot updates by @obi1kenobi in #1309
- Add lint for inherent methods gaining target features by @obi1kenobi in #1311
- Fix the
download_prebuilt_test_rustdocs.shscript download logic. by @obi1kenobi in #1312 - Remove stray
set -xin the downloader script. by @obi1kenobi in #1313 - Weekly
cargo updateof dependencies by @obi1kenobi in #1314 - Add
function_requires_more_target_featureslint by @obi1kenobi in #1316 - Add
trait_method_requires_more_target_featureslint by @obi1kenobi in #1315 - Fix Handlebars repeat helper context cleanup by @obi1kenobi in #1317
- Fix typo in test rustdocs downloader. by @obi1kenobi in #1318
- Fix cache settings None case by @obi1kenobi in #1319
- Save downloaded rustdoc JSONs artifact to disk. by @obi1kenobi in #1320
- Use artifacts for CI binaries by @obi1kenobi in #1321
- Rename lint and test crate with unsafe prefix by @obi1kenobi in #1323
- Rename trait_method_requires_more_target_features lint by @obi1kenobi in #1325
- Rename function target feature lint to unsafe variant by @obi1kenobi in #1324
- Add lint rename helper by @obi1kenobi in #1326
- Fixes for
unsafe_function_requires_more_target_featuresby @obi1kenobi in #1328 - Fix edge cases in
unsafe_inherent_method_requires_more_target_featuresby @obi1kenobi in #1327 - Fixes for "unsafe became safe" for remaining feature-related lints. by @obi1kenobi in #1329
- Add
safe_function_target_feature_addedlint by @obi1kenobi in #1303 - Add
safe_inherent_method_target_feature_addedlint by @obi1kenobi in #1306 - Add
unsafe_inherent_method_target_feature_addedlint by @obi1kenobi in #1307 - [Witness Generation] Add
InheritedValueinheritance by @GlitchlessCode in #1330 - Update
trustfall_rustdocto support rustdoc v48 and drop v46. by @obi1kenobi in #1331 - Add safe_inherent_method_requires_more_target_features lint by @obi1kenobi in #1333
- Add safe_function_requires_more_target_features lint by @obi1kenobi in #1332
- Reset mtimes and output user-facing messages in rustdoc downloader. by @obi1kenobi in #1335
- Parallelize rustdoc regeneration script by @obi1kenobi in #1322
- Add user-agent string to
curlofcrates.ioAPI. by @obi1kenobi in #1336 - Add trait_method_target_feature_removed lint by @obi1kenobi in #1337
- Parallelize metadata generation by @obi1kenobi in #1338
- Add
pub_api_sealed_trait_method_target_feature_removedlint. by @obi1kenobi in #1339 - Weekly
cargo updateof dependencies by @obi1kenobi in #1340 - Use
trustfall_rustdoc v0.27supporting the latest beta's rustdoc. by @obi1kenobi in #1343 - Fix lint to latest stable Rust's standard. by @obi1kenobi in #1347
- Fix mor...
v0.41.0
In this release
- 16 new lints, for a total of 164
- Spotlight: Google Summer of Code
- Bugfix: false-positive sealed trait lints
This release requires Rust 1.84+ both to install (MSRV) and at runtime. Future releases will require Rust 1.85+.
Spotlight: Google Summer of Code
cargo-semver-checks is participating in Google Summer of Code, a program aimed at bringing new contributors into open source software development.
This is our second year participating in the program under the Rust umbrella. Last summer, @suaviloquence joined us to design and build the ability for users to configure which lints run on their projects, on which SemVer changes, and with what effect such as raising an error vs warning. This is a foundational capability for our project! For example, it allows users to temporarily disable a lint that exhibits buggy behavior in their project, such as a false-positive.
The application process for this year's Google Summer of Code concluded two weeks ago, and we're currently in the evaluation process. The selected projects will be announced in early May. We thank everyone who applied for their hard work on their proposals, and wish everyone the best of luck!
New lints
We added new 16 lints across several categories. Some of the new lints are error-by-default, while others are warnings meant to flag changes deserving closer review, or even opt-in only and disabled by default while we do more work to improve their user experience.
API breakage:
enum_struct_variant_changed_kindenum_non_exhaustive_tuple_variant_changed_kind
Item deprecations, which cause lints in downstream use:
enum_struct_variant_field_marked_deprecatedenum_tuple_variant_field_marked_deprecatedenum_variant_marked_deprecated
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:
enum_no_longer_non_exhaustiveenum_variant_no_longer_non_exhaustiveenum_repr_int_addedfunction_no_longer_unsafefunction_now_const
Additive-only API changes (opt-in only; more work required):
enum_non_exhaustive_struct_variant_field_addedenum_non_exhaustive_tuple_variant_field_addednon_exhaustive_enum_addedpub_const_addedpub_static_addedunion_added
Thanks to @shreyans413, @GlitchlessCode, @Frank-III, @qstommyshu, and @sandptel for contributing to this release!
Bugfix: false-positive sealed trait lints
In rare circumstances, cargo-semver-checks had the tendency to mis-classify traits as sealed even though that wasn't actually the case. This manifested as false-positive lints stating that traits have newly become sealed (a breaking change) or that a previously-sealed trait is no longer sealed (a future-compatibility warning).
After quite a bit of work, we were able to diagnose the issue as a logic error in the cycle-tracking code of our sealed trait analysis. #1200 has more information.
This portion of cargo-semver-checks has 2000+ lines of test code specifically dedicated to covering its edge cases. This bug made it through all of that without getting caught — that's how complex this space is.
We're grateful to the folks who contributed high-quality bug reproductions to help us diagnose the problem in #1200. We're also grateful to the generosity of our GitHub Sponsors who make it possible for cargo-semver-checks to continue powering through this very complex space.
All merged PRs
- Weekly
cargo updateof dependencies by @obi1kenobi in #1176 - Drop support for Rust 1.83. by @obi1kenobi in #1178
- new lint:
enum_variant_marked_deprecatedby @Frank-III in #1179 - Weekly
cargo updateof dependencies by @obi1kenobi in #1195 - new lint:
enum_struct_variant_field_marked_deprecatedby @Frank-III in #1180 - Redact out skipped checks from integration snapshots. by @obi1kenobi in #1201
- Chore: Add witness hint for
function_unsafe_addedlint by @qstommyshu in #1198 - Add
enum_no_longer_non_exhaustivelint. by @shreyans413 in #1181 - new lint:
enum_tuple_variant_field_marked_deprecatedby @Frank-III in #1202 - Chore: Add witness hint for
enum_struct_variant_field_missinglint by @GlitchlessCode in #1205 - feat: add a witness hint for
function_parameter_count_changedlint by @sandptel in #1194 - Chore: Add witness hint for
enum_struct_variant_field_marked_deprecatedlint by @GlitchlessCode in #1209 - Add
pub_const_addedlint. by @shreyans413 in #1192 - Add
function_now_constlint. by @shreyans413 in #1184 - Chore: Add witness hint for
enum_struct_variant_field_addedlint by @GlitchlessCode in #1208 - Add
union_addedlint. by @shreyans413 in #1188 - Weekly
cargo updateof dependencies by @obi1kenobi in #1217 - Chore: Add witness hint for
enum_tuple_variant_changed_kindlint by @GlitchlessCode in #1211 - Chore: Add witness hint for
enum_variant_addedlint by @GlitchlessCode in #1218 - Remove no-longer-necessary feature activation in test code. by @obi1kenobi in #1210
- Add
enum_variant_no_longer_non_exhaustivelint. by @shreyans413 in #1182 - Feat: Add custom
repeathandlebars helper by @GlitchlessCode in #1219 - Chore: Add witness hint for
trait_unsafe_addedlint by @qstommyshu in #1204 - Weekly
cargo updateof dependencies by @obi1kenobi in #1221 - Feat: Add custom
to_stringhandlebars helper by @GlitchlessCode in #1236 - Chore: Add witness hint for
enum_tuple_variant_field_addedlint by @GlitchlessCode in #1212 - Chore: Add witness hint for
enum_tuple_variant_field_marked_deprecatedlint by @GlitchlessCode in #1216 - Chore: Add witness hint for
enum_tuple_variant_field_missinglint by @GlitchlessCode in #1214 - Chore: Add witness hint for
module_missinglint by @qstommyshu in #1203 - feat: add witness hint for
function_marked_deprecatedlint by @sandptel in #1213 - Support rustdoc JSON format v43. by @obi1kenobi in #1238
- Add
function_no_longer_unsafelint. by @shreyans413 in #1185 - Add
enum_non_exhaustive_struct_variant_field_addedlint. by @shreyans413 in #1187 - Add
enum_repr_int_addedlint. by @shreyans413 in #1193 - Add
enum_struct_variant_changed_kindlint. by @shreyans413 in #1199 - Add
enum_non_exhaustive_tuple_variant_changed_kindlint. by @shreyans413 in #1215 - Bump mozilla-actions/sccache-action from 0.0.8 to 0.0.9 by @dependabot in #1239
- Weekly
cargo updateof dependencies by @obi1kenobi in #1240 - Suppress new lint since we're explicitly being more cautious. by @obi1kenobi in #1248
- Weekly
cargo updateof dependencies by @obi1kenobi in #1247 - Add next Rust minor to test matrix by @obi1kenobi in #1245
- Add
enum_non_exhaustive_tuple_variant_field_addedlint. by @shreyans413 in #1186 - Add
pub_static_addedlint. by @shreyans413 in #1191 - Support rustdoc v45 and upgrade dependencies. by @obi1kenobi in #1253
- Weekly
cargo updateof dependencies by @obi1kenobi in #1255 - Add
non_exhaustive_enum_addedlint. by @shreyans413 in #1190 - Release v0.41.0. by @obi1kenobi in #1256
New Contributors
- @shreyans413 made their first contribution in #1181
- @GlitchlessCode made their first contribution in https://github.com/obi1k...
v0.40.0
In this release
- 21 new lints, for a total of 148!
- Spotlight:
#[doc(hidden)]and sealed lints
This release requires Rust 1.83+ both to install (MSRV) and at runtime. Future releases will require Rust 1.84+.
Spotlight: #[doc(hidden)] and sealed lints
When is "this trait can be implemented" part of the trait's public API?
At a high level, the answer is: when writing an impl of that trait for our own type doesn't require using any #[doc(hidden)] items. But you've been following cargo-semver-checks long enough to know the full answer is much more complex. And getting the right answer here affects the correctness of a ton of lints!
Good news! This cargo-semver-checks release ships with a much more sophisticated system for analyzing whether traits can be implemented or are instead "sealed." The new system is more thorough, more nuanced, and faster to boot!
Read more about it here: https://predr.ag/blog/when-is-trait-can-be-implemented-public-api/
New lints
We added new 21 lints across several categories. Some of the new lints are error-by-default, while others are merely warnings meant to flag changes deserving closer review.
API breakage:
static_became_unsafe
ABI and FFI breakage due to changed repr(C) type layout:
repr_c_enum_struct_variant_fields_reorderedrepr_c_plain_struct_fields_reordered
Item deprecations, which cause lints in downstream use:
function_marked_deprecatedglobal_value_marked_deprecatedmacro_marked_deprecatedproc_macro_marked_deprecatedstruct_field_marked_deprecatedtrait_associated_const_marked_deprecatedtrait_associated_type_marked_deprecatedtrait_marked_deprecatedtrait_method_marked_deprecatedtype_associated_const_marked_deprecatedtype_method_marked_deprecated
Code behavior changes, such as changes to sort order of existing types:
partial_ord_enum_struct_variant_fields_reorderedpartial_ord_enum_variants_reorderedpartial_ord_struct_fields_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_became_unconditionally_sealedunconditionally_sealed_trait_became_pub_api_sealedunconditionally_sealed_trait_became_unsealedpub_api_sealed_trait_became_unsealed
Thanks to @Frank-III, @geetanshjuneja, and @lovelindhoni for contributing lints to this release!
All merged PRs
- Require Rust 1.83+ going forward. by @obi1kenobi in #1086
- Use newer trustfall_rustdoc with only supported rustdoc versions. by @obi1kenobi in #1087
- Update CI and release profile settings for speed and efficiency. by @obi1kenobi in #1088
- Eliminate clippy lint. by @obi1kenobi in #1089
- feat: static became unsafe lint by @Frank-III in #1090
- new lint:
trait_marked_deprecatedby @Frank-III in #1092 - Weekly
cargo updateof dependencies by @obi1kenobi in #1097 - new lint:
function_marked_deprecatedby @Frank-III in #1093 - new lint:
trait_method_marked_deprecatedby @Frank-III in #1098 - new lint
trait_associated_type_marked_deprecatedby @Frank-III in #1099 - new lint:
trait_associated_const_marked_deprecatedby @Frank-III in #1100 - new lint:
global_value_marked_deprecatedby @Frank-III in #1101 - new lint:
macro_marked_deprecatedby @Frank-III in #1102 - Avoid stack overflow when checking sealing on cyclic trait bounds. by @obi1kenobi in #1103
- Replace deprecated
sealedproperty with newunconditionally_sealed. by @obi1kenobi in #1104 - Remove outdated TODOs related to trait sealing. by @obi1kenobi in #1106
- new lint:
proc_macro_marked_deprecatedby @Frank-III in #1118 - new lint:
struct_field_marked_deprecatedby @Frank-III in #1125 - fix: check if trait is deprecated or not by @Frank-III in #1127
- Add
span_end_lineto lints with spans by @suaviloquence in #1126 - new lint:
type_method_marked_deprecatedby @Frank-III in #1130 - new lint:
type_associated_const_deprecatedby @Frank-III in #1131 - Weekly
cargo updateof dependencies by @obi1kenobi in #1136 - Add a test that fails when generated rustdocs are older than test crate data by @suaviloquence in #1128
- add actionlint workflow by @Frank-III in #1137
- Add zero-tolerance policy for AI slop "contributions". by @obi1kenobi in #1139
- Weekly
cargo updateof dependencies by @obi1kenobi in #1140 - Add next Rust minor to test matrix by @obi1kenobi in #1142
- Mention turbofish use as breakage example in function generics change. by @obi1kenobi in #1143
- Eliminate compilation errors from test crates that rustdoc can't catch. by @obi1kenobi in #1144
- Suppress expected lint in test crate. by @obi1kenobi in #1146
- Require test crates to pass
cargo check. by @obi1kenobi in #1145 - new lint:
repr_c_plain_struct_fields_reorderedby @Frank-III in #1138 - Weekly
cargo updateof dependencies by @obi1kenobi in #1147 - Added public api sealed to trait_added_supertrait lint by @geetanshjuneja in #1148
- Added public api sealed in trait_const_added lint by @geetanshjuneja in #1149
- Added public sealed api in trait_associated_type_added by @geetanshjuneja in #1151
- new lint:
repr_c_enum_struct_variant_fields_reorderedby @Frank-III in #1152 - Added public API sealed in trait_method_default_impl removed by @geetanshjuneja in #1156
- Added public API sealed in trait_unsafe_removed lint by @geetanshjuneja in #1157
- Added public API sealed in trait_unsafe_added lint by @geetanshjuneja in #1158
- Added public API sealed in trait_associated_type_default_removed lint by @geetanshjuneja in #1154
- Added public API sealed in trait_method_added lint by @geetanshjuneja in #1155
- Added public api sealed in trait_associated_const_default_removed by @geetanshjuneja in #1150
- Added public API sealed in trait_method_unsafe_removed by @geetanshjuneja in #1159
- Added public API sealed in trait_newly_sealed by @geetanshjuneja in #1160
- new lint
partial_ord_struct_field_reorderedby @Frank-III in #1161 - new lint:
partial_ord_enum_variants_reorderedby @Frank-III in #1163 - new lint
partial_ord_enum_struct_variant_fields_reorderedby @Frank-III in #1165 - new lint:
pub_api_sealed_trait_became_unsealedby @lovelindhoni in #1162 - new lint:
unconditionally_sealed_trait_became_unsealedby @lovelindhoni in #1164 - new lint:
pub_api_sealed_trait_became_unconditionally_sealedby @lovelindhoni in #1166 - new lint:
unconditionally_sealed_trait_became_pub_api_sealedby @lovelindhoni in #1167 - Weekly
cargo updateof dependencies by @obi1kenobi in #1168 - Build release binaries using Ubuntu 22.04 to avoid too-new glibc dep. by @obi1kenobi in #1170
- Use
#![no_std]in test crates to speed up tests. by @obi1kenobi in #1171 - Bump mozilla-actions/sccache-action from 0.0.7 to 0.0.8 by @depend...
v0.39.0
In this release
- 20 new lints, for a total of 127!
- Spotlight: Merging into
cargo
This release requires Rust 1.81+ both to install (MSRV) and at runtime. Future releases will require Rust 1.83+.
Spotlight: Merging into cargo
While cargo-semver-checks is currently a standalone tool, Rust's cargo team plans to eventually make it a built-in part of cargo itself. Here's how that would work.
When users run cargo publish today, cargo first runs a series of checks to make sure everything is in order. For example, it ensures that the code repository doesn't include any uncommitted changes, so as not to accidentally publish uncommitted code to crates.io:
$ cargo publish
Updating crates.io index
error: 1 files in the working directory contain changes that were not yet committed into git:
src/lib.rs
to proceed despite this and include the uncommitted changes, pass the `--allow-dirty` flag
cargo-semver-checks is planned to become another such pre-publish check, equivalent to running cargo semver-checks && cargo publish today. Of course, there are situations where maintainers may prefer to intentionally publish breaking changes in a non-major version, such as for a sufficiently critical security fix. The automatic semver-check will be overridable by passing a flag analogous to the --allow-dirty flag for uncommitted changes.
While we're excited to merge cargo-semver-checks into cargo, we are proceeding with caution before enabling it by default. We want to ensure "merge day" is a day of celebration for the entire Rust community, instead of causing frustration and further breakage! Good news: you can help us do that! Consider:
- Reporting any issues you find, including any suspected false-positives with our lints.
- Contributing lints to make
cargo-semver-checkssmarter - Funding the project via GitHub Sponsors
New lints
Preventing breakage caused by changes in generic parameters (lifetimes, const generics, and generic types), changes in package features, union field changes, and more:
feature_not_enabled_by_defaultfunction_abi_now_unwindfunction_requires_different_const_generic_paramsfunction_requires_different_generic_type_paramsmethod_requires_different_const_generic_paramsmethod_requires_different_generic_type_paramsproc_macro_now_doc_hiddentrait_allows_fewer_const_generic_paramstrait_allows_fewer_generic_type_paramstrait_method_parameter_count_changedtrait_method_requires_different_const_generic_paramstrait_method_requires_different_generic_type_paramstrait_requires_more_const_generic_paramstrait_requires_more_generic_type_paramstype_allows_fewer_const_generic_paramstype_allows_fewer_generic_type_paramstype_requires_more_const_generic_paramstype_requires_more_generic_type_paramsunion_field_added_with_all_pub_fieldsunion_field_added_with_non_pub_fields
Additionally, we've renamed one lint to align with the shift in preferred Rust terminology:
trait_no_longer_object_safe->trait_no_longer_dyn_compatible
Thanks to @Frank-III for contributing lints to this release!
All merged PRs
- Bump mozilla-actions/sccache-action from 0.0.6 to 0.0.7 by @dependabot in #1044
- Fix false-positive "macro no longer exported" report. by @obi1kenobi in #1043
- Weekly
cargo updateof dependencies by @obi1kenobi in #1045 - Use the new
importable_pathedge to clean up declarative macro lints. by @obi1kenobi in #1046 - Use
importable_pathdata in proc macro lints. by @obi1kenobi in #1047 - Add two lints looking for new fields in
repr(C)unions. by @obi1kenobi in #1049 - Add
proc_macro_now_doc_hiddenlint. by @obi1kenobi in #1050 - Add
feature_not_enabled_by_defaultlint. by @obi1kenobi in #1051 - Add the
type_requires_more_const_generic_paramslint. by @obi1kenobi in #1052 - Add the
type_allows_fewer_const_generic_paramslint. by @obi1kenobi in #1054 - Rename test crate to match lint name. by @obi1kenobi in #1053
- Add
function_requires_different_const_generic_paramslint. by @obi1kenobi in #1056 - Remove unnecessary snapshot file. by @obi1kenobi in #1057
- Add
method_requires_different_const_generic_paramslint. by @obi1kenobi in #1058 - Add matching lints for const-generics breakage in traits. by @obi1kenobi in #1055
- Add
trait_method_requires_different_const_generic_paramslint. by @obi1kenobi in #1060 - Add
trait_method_parameter_count_changedlint. by @obi1kenobi in #1059 - Add
function_abi_now_unwindlint and fixfunction_abi_no_longer_unwind. by @obi1kenobi in #1061 - Weekly
cargo updateof dependencies by @obi1kenobi in #1062 - Weekly
cargo updateof dependencies by @obi1kenobi in #1064 - Update to the latest
trustfall_rustdocversion. by @obi1kenobi in #1065 - Update funding info for 2025. by @obi1kenobi in #1066
- Small tweaks to funding manifest to make it valid. by @obi1kenobi in #1067
- Add next Rust minor to test matrix by @obi1kenobi in #1072
- Weekly
cargo updateof dependencies by @obi1kenobi in #1069 - Weekly
cargo updateof dependencies by @obi1kenobi in #1074 - Update
trustfallto avoid missed optimization perf regression. by @obi1kenobi in #1075 - Weekly
cargo updateof dependencies by @obi1kenobi in #1077 - Bump to latest (including major) versions of all dependencies. by @obi1kenobi in #1078
- Add two lints over types' use of generic type arguments. by @obi1kenobi in #1079
- Add lints over changes in generic types in traits. by @obi1kenobi in #1080
- Add lints for type generics in functions, methods, and trait methods. by @obi1kenobi in #1081
- Weekly
cargo updateof dependencies by @obi1kenobi in #1082 - Add support for rustdoc JSON format v39. by @obi1kenobi in #1084
- replace
object_safewithdyn_compatibleby @Frank-III in #1083 - Release v0.39.0 with 20 new lints. by @obi1kenobi in #1085
New Contributors
- @Frank-III made their first contribution in #1083
Full Changelog: v0.38.0...v0.39.0
v0.38.0
In this release
- 12 new lints, for a total of 107!
- Bugfix for packages using the "SemVer trick"
- Spotlight: Performance via parallelism
This release requires Rust 1.81+ both to install (MSRV) and at runtime.
Spotlight: Performance via parallelism
cargo-semver-checks is on a trajectory of doubling its number of lints every year. But more lints mean more code scanning work to be done! And nobody likes slow tools, so we had to parallelize!
We began taking a serious look at performance in early 2023. Compared to that point ~almost two years ago:
- Lint checking time has reduced by 20%, in wall-clock terms & measured on the exact same hardware.
- Yet, we run over 2.5x as many lints in that time!
We've aimed to parallelize as much of the execution of the tool as possible, with help from the rayon library. Today, both the lint execution and the rustdoc indexing steps use rayon to distribute the work across all available cores on your system. In practice, this ~halved linting time on the default GitHub Actions runners (which have only 2 cores), and it has an even bigger impact on more powerful hardware.
Parallelism is one of many tricks we employ to keep cargo-semver-checks fast while it's gaining ever more lints. More on this in future Spotlights!
New lints
Preventing breakage caused by macros, enum discriminants, mutable statics, and generic lifetime parameters:
function_like_proc_macro_missingattribute_proc_macro_missingderive_proc_macro_missingderive_helper_attr_removedmacro_now_doc_hiddenmacro_no_longer_exportedenum_repr_variant_discriminant_changedenum_discriminants_undefined_non_exhaustive_variantenum_discriminants_undefined_non_unit_variantpub_static_now_mutabletype_mismatched_generic_lifetimestrait_mismatched_generic_lifetimes
Thanks to @malenaohl and @orhun for contributing lints to this release!
Bugfix for self-referential crates
Crates that are about to release a new major version often use the "SemVer trick" to make the upgrade process more ergonomic for their users. This involves making the crate list a "future" version of itself as a dependency, which is quite unusual otherwise!
Unfortunately, this leads to having two packages by the same name in the dependency tree, which confused the new feature-scanning code shipped in cargo-semver-checks v0.37. The resulting crash was reported by @jonathanpallant, and is now fixed! Enjoy!
All merged PRs
- Drop support for Rust 1.80. by @obi1kenobi in #1018
- Test that externally-defined functions going safe -> unsafe are caught. by @obi1kenobi in #1003
- Update to latest major versions of dependencies. by @obi1kenobi in #1014
- Suggest generating test rustdocs while reading the guide. by @obi1kenobi in #1019
- feat: add pub_static_now_mutable lint by @orhun in #1020
- Ignore .DS_Store files. by @obi1kenobi in #1022
- The macOS
headbinary doesn't support-1so switch tosed. by @obi1kenobi in #1023 - Make
sedinvocation truly portable across macOS and Linux. by @obi1kenobi in #1024 - Remove more kinds of
cargooutput related to blocking on file locks. by @obi1kenobi in #1025 - Add function_like_proc_macro_missing lint by @malenaohl in #1021
- Add lint attribute_proc_macro_missing by @malenaohl in #1026
- Add lint derive_proc_macro_missing by @malenaohl in #1027
- Add lint derive_helper_attr_removed by @malenaohl in #1028
- Add lint macro_now_doc_hidden by @malenaohl in #1029
- Fix typo in
declarative_macro_missinglint. by @obi1kenobi in #1030 - Add new lint macro_no_longer_exported by @malenaohl in #1031
- Weekly
cargo updateof dependencies by @obi1kenobi in #1033 - Report the root cause of non-fatal errors. by @obi1kenobi in #1034
- Ensure metadata of self-referential crates can be read. by @obi1kenobi in #1035
- Add the
enum_repr_variant_discriminant_changedlint. by @obi1kenobi in #1036 - Add two lints for cases where enum discriminants are no longer defined. by @obi1kenobi in #1037
- Add
compile_failto ensure doctests pass in the new test crate. by @obi1kenobi in #1038 - Add
type_mismatched_generic_lifetimeslint. by @obi1kenobi in #1039 - Add
trait_mismatched_generic_lifetimeslint. by @obi1kenobi in #1040 - Release v0.38 with a dozen new lints and a fix for metadata linting. by @obi1kenobi in #1041
New Contributors
- @orhun made their first contribution in #1020
- @malenaohl made their first contribution in #1021
Full Changelog: v0.37.0...v0.38.0
v0.37.0
What's Changed
We shipped support for linting Cargo.toml files for breakage — learn more in the accompanying blog post!
This release requires Rust 1.80+ both to install (MSRV) and at runtime. Future releases will require Rust 1.81+.
All Merged PRs
- Require Rust 1.80+ going forward. by @obi1kenobi in #983
- Weekly
cargo updateof dependencies by @obi1kenobi in #984 - Weekly
cargo updateof dependencies by @obi1kenobi in #988 - Weekly
cargo updateof dependencies by @obi1kenobi in #989 - Make hash optional in bugreport integration test by @suaviloquence in #986
- Upgrade to Trustfall v0.8 and trustfall_rustdoc v0.17. by @obi1kenobi in #992
- Weekly
cargo updateof dependencies by @obi1kenobi in #994 - Avoid dependency on cmake by switching
gixfeatures. by @obi1kenobi in #995 - Weekly
cargo updateof dependencies by @obi1kenobi in #996 - Refactor data generation to be cleaner and more principled. by @obi1kenobi in #1001
- Weekly
cargo updateof dependencies by @obi1kenobi in #1002 - Delint for new clippy lints. by @obi1kenobi in #1006
- Add next Rust minor to test matrix by @obi1kenobi in #1004
- Support linting breaking changes in manifests & add
feature_missinglint by @obi1kenobi in #1007 - Share built indexes across all test runs to speed up tests. by @obi1kenobi in #1009
- Build test indexes in parallel using
rayon. by @obi1kenobi in #1010 - Weekly
cargo updateof dependencies by @obi1kenobi in #1011 - Ensure we catch optional dependencies whose implicit features go missing by @obi1kenobi in #1015
- Preserve
RUSTDOCFLAGSso that custom--cfgsettings can be applied. by @obi1kenobi in #1016 - Release v0.37 with support for linting
Cargo.tomlmanifests. by @obi1kenobi in #1017
Full Changelog: v0.36.0...v0.37.0
v0.36.0
What's changed
We're debuting a new "Spotlight" section in the release notes! We'll use it to shine a spotlight at aspects of cargo-semver-checks that don't usually get flashy headlines, even though they play a critical role.
In this release:
- Spotlight: Supporting many Rust versions at once
- 5 new lints (94 total, who will add lint number 💯?)
- Performance upgrades
- Support for comma-separated feature lists
This release requires Rust 1.77+ both to install (MSRV) and at runtime. Future releases will require Rust 1.80+.
Spotlight: Supporting many Rust versions at once
cargo-semver-checks uses the JSON output of Rust's rustdoc tool to analyze your APIs. This JSON format is not stable: between the release of Rust 1.77 on March 21, 2024 and today, we've had 9 mutually-incompatible format versions. That's more than one per month!
Most tools that rely on rustdoc JSON support only a single rustdoc format at a time. The user is required to install the version of the tool that matches the rustdoc format their Rust version provides. This works, but at the cost of pushing extra complexity onto the users.
Instead, we wanted to offer a seamless experience: use reasonably new Rust and newer cargo-semver-checks, and everything just works! Pulling this off required declarative queries, cutting-edge database technology, and the Trustfall query engine, and were described in depth in UA Rust 2024 and RustConf 2024 talks. The talk videos aren't online yet, so please follow along on social media (bsky, Mastodon, Twitter) or by subscribing to blog posts to make sure you don't miss them when they come out ✨
Today's cargo-semver-checks supports all stable Rust versions 1.77-1.82, as well as 1.83 beta and the most recent nightly. Today we set a new record in how many rustdoc formats we support at once! All the maintenance required to make this work is a challenge, and we are grateful to our GitHub Sponsors for supporting this work 💖
New lints
enum_no_repr_variant_discriminant_changedby @dmatos2012 in #912struct_with_no_pub_fields_changedby @CommanderStorm in #962struct_marked_non_exhaustive_changed_typeby @CommanderStorm in #963declarative_macro_missingby @miikka in #966trait_added_supertraitby @mrnossiom in #892
We're now at 94 lints! Who is going to add lint number 💯?
Performance upgrades
In any reasonably well-optimized system, ongoing performance wins usually come in the form of "5% here, 10% there" rather than "10x with this one weird trick." This is now true for cargo-semver-checks as well.
In coordination with the Rust project's T-rustdoc team, and with the tireless efforts of @jalil-salame, cargo-semver-checks users now benefit from:
- ~6-7% smaller rustdoc JSON files, which consume less disk space to cache and are ~28% faster to load
- more compact indexes which are ~12% faster to build
This translates to up to ~0.8s time savings for our largest projects, and even more speedup on resource-constrained CI hardware where disk and network I/O are usually much slower than on a desktop machine.
Support for comma-separated feature lists
Previously, our CLI did not support specifying multiple features as a comma-separated list — the following did not work:
cargo semver-checks --features foo,bar
Instead, users had to specify each feature separately, which was quite tedious:
cargo semver-checks --features foo --features bar
Thanks to @dmatos2012, the --features, --baseline-features, and --curent-features CLI options now all support comma-separated lists. What a lovely user experience win!
All Merged PRs
- Filter versions in lint reference links in snapshots by @suaviloquence in #913
- Functionality for unstable feature flags and options by @suaviloquence in #896
- Add next Rust minor to test matrix by @obi1kenobi in #917
- Add support for specifying features with commas
feat1,feat2by @dmatos2012 in #918 - Encapsulate query deserializing logic by @suaviloquence in #919
- Weekly
cargo updateof dependencies by @obi1kenobi in #920 - Weekly
cargo updateof dependencies by @obi1kenobi in #921 - Enable the
rayonandrustc-hashoptimization features. by @obi1kenobi in #924 - Weekly
cargo updateof dependencies by @obi1kenobi in #925 - Weekly
cargo updateof dependencies by @obi1kenobi in #929 cargo upgrade --incompatibleacross all versions. by @obi1kenobi in #931- Handle
priorityin the lints table by @suaviloquence in #932 - add witness template to lints by @suaviloquence in #893
- change
function_missingwitness hint by @suaviloquence in #934 - Add enum variant discriminant changed lint by @dmatos2012 in #912
- use
instafor witness tests by @suaviloquence in #935 - Document contributor process for adding witness hint templates by @suaviloquence in #933
- Reduce size of uploaded crate by @DaniPopes in #936
- change log callbacks to
FnOnceby @suaviloquence in #938 - feat: add
trait_added_supertraitby @mrnossiom in #892 - Weekly
cargo updateof dependencies by @obi1kenobi in #942 - Add LSP setup information to CONTRIBUTING.md file by @obi1kenobi in #941
- Weekly
cargo updateof dependencies by @obi1kenobi in #947 - Improve
union_field_missingquery formatting. by @obi1kenobi in #948 - Weekly
cargo updateof dependencies by @obi1kenobi in #958 - docs: add
<details>to theCONTRIBUTING.mdto make some content visually shorter by @CommanderStorm in #952 - Bump mozilla-actions/sccache-action from 0.0.5 to 0.0.6 by @dependabot in #955
- Reword doc comment that had too long of a first paragraph. by @obi1kenobi in #959
- test: migrate the remaining snapshot-test to
instaby @CommanderStorm in #951 - feat: add lint
struct_with_no_pub_fields_changedby @CommanderStorm in #962 - Weekly
cargo updateof dependencies by @obi1kenobi in #964 - fixed a typo in
NoneExhaustiveFieldlessUnitby @CommanderStorm in #965 - Weekly
cargo updateof dependencies by @obi1kenobi in #967 - Weekly
cargo updateof dependencies by @obi1kenobi in #969 - Weekly
cargo updateof dependencies by @obi1kenobi in #970 - Add lint
declarative_macro_missingby @miikka in #966 cargo clippy --fixfor the latest lints. by @obi1kenobi in #972- feat: add lint
struct_marked_non_exhaustive_changed_typeby @CommanderStorm in #963 - Add next Rust minor to test matrix by @obi1kenobi in #974
- feat: add witnesses for
function_const_removedby @CommanderStorm in #977 - Add support for rustdoc JSON format v36. by @obi1kenobi in #979
- Update
tame-indexto v0.14. by @obi1kenobi in #980 - chore: add a witness for
enum_variant_missingby @CommanderStorm in #978 - Weekly
cargo updateof dependencies by @obi1kenobi in #981 - Release v0.36 with 5 new lints, perf boosts, and new rustdoc formats. by @obi1kenobi in #982
New Contributors
- @DaniPopes made their first contribution in https://github.com/obi1kenobi/cargo-semv...