feat(diag): Stabilize cargo-lints - #17298
Conversation
|
r? @weihanglo rustbot has assigned @weihanglo. Use Why was this reviewer chosen?The reviewer was selected based on:
|
There was a problem hiding this comment.
Just thought about this: Do we dogfood this yet? Maybe before stabilization we can do it in rust-lang/cargo and rust-lang/rust and get an sense of how it looks like in real world.
Not a blocker btw
There was a problem hiding this comment.
I have tried it out a couple times on Cargo. I have not on rust-lang/rust.
There was a problem hiding this comment.
I just tried in rustc
- several
cargo::manual_readme - several
cargo::non_kebab_case_bins - A warning about
#![expect(unused_crate_dependencies)]being unfulfilled.
There was a problem hiding this comment.
Thanks for the info!
Should we configure our CI to adopt that?
e7f3786 to
424ad37
Compare
This comment has been minimized.
This comment has been minimized.
5d91e48 to
426df5f
Compare
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Could you share why we need to allow cargo::default here for many tests? Were they got lint warnings for the same reason, or case by case?
There was a problem hiding this comment.
Most test have unused dependencies. There were a smattering of others. I figured it would be easier to do this globally than resolving lints, allowing on a case-by-case basis, etc.
This comment was marked as duplicate.
This comment was marked as duplicate.
1 similar comment
|
@rfcbot fcp merge T-cargo We have discussed this during the sync weekly meeting. Ed has written a good review guide. Would be appreciated if people find a time reviewing them. |
|
@weihanglo has proposed to merge this. The next step is review by the rest of the tagged team members: Concerns:
Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! See this document for info about what commands tagged team members can give me. |
|
@rfcbot concern blanket_hint_mostly_unused Should this be behind |
|
I believe so. |
|
Since I won the race for |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
The final comment period, with a disposition to merge, as per the review above, is now complete. As the automated representative of the governance process, I would like to thank the author for their work and everyone else who contributed. |
|
This PR was rebased onto a different master commit. Here's a range-diff highlighting what actually changed. Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers. |
Update cargo submodule 7 commits in e8cb624d5701824f46a2ec5873cfd59ee3d2f66c..94ba974179df2adb3c911fadf361f03b84aa8f14 2026-08-22 00:23:45 +0000 to 2026-08-25 18:16:11 +0000 - feat(diag): Stabilize cargo-lints (rust-lang/cargo#17298) - chore(deps): Update partial_ref to v0.3.4 (rust-lang/cargo#17392) - refactor: remove ad-hoc `subslice_range` (rust-lang/cargo#17390) - docs(changelog): move build-dir new layout to Changed (rust-lang/cargo#17387) - chore(deps): update msrv (1 version) to v1.98 (rust-lang/cargo#17386) - docs: Use mdbook admonitions (rust-lang/cargo#17384) - chore(ci): exclude resolver-tests from intra doc link checks (rust-lang/cargo#17385)
Update cargo submodule 26 commits in e8cb624d5701824f46a2ec5873cfd59ee3d2f66c..b2e9d5f9db3fb1c454ab84f10c16508984a266e2 2026-08-22 00:23:45 +0000 to 2026-09-02 14:49:16 +0000 - fix(parser): Resolve theoretical use-after-free (rust-lang/cargo#17428) - fix(trim-paths)!: remove default scope from release profile (rust-lang/cargo#17424) - fix(git): Use git's 429 retry, when available (rust-lang/cargo#17422) - Avoid passing search path (-L) args when they are passed as --extern (rust-lang/cargo#17410) - chore(deps): update crate-ci/typos action to v1.50.0 (rust-lang/cargo#17417) - test: Move -Z onto its own line (rust-lang/cargo#17416) - chore(triagebot): enable `@rustbot merge/delegate` (rust-lang/cargo#17415) - Micro-optimize two package dir functions (rust-lang/cargo#17413) - perf: Do not build SBOM if user has not set build.sbom (rust-lang/cargo#17412) - feat(manifest)!: implement feature-metadata RFC3416 (rust-lang/cargo#15056) - Cargo profiling improvements (rust-lang/cargo#17411) - test(git): Remove gix override run in CI and the mode in code (rust-lang/cargo#17405) - perf(git): Reduce extra work when using git-cli (rust-lang/cargo#17406) - feat(resolver): Stabilize min-publish-age (rust-lang/cargo#17335) - fix(git): Remove ref status update when showing progress (rust-lang/cargo#17400) - revert: refactor: move sysroot lookup to GlobalContext (rust-lang/cargo#17401) - fix(run): Printing a new line to avoid overwriting error code after \r (rust-lang/cargo#17373) - fix(trim-paths): custom workspace-relative member paths remap (rust-lang/cargo#17366) - fix(home): rustdoc lint (rust-lang/cargo#17394) - feat(diag): Stabilize cargo-lints (rust-lang/cargo#17298) - chore(deps): Update partial_ref to v0.3.4 (rust-lang/cargo#17392) - refactor: remove ad-hoc `subslice_range` (rust-lang/cargo#17390) - docs(changelog): move build-dir new layout to Changed (rust-lang/cargo#17387) - chore(deps): update msrv (1 version) to v1.98 (rust-lang/cargo#17386) - docs: Use mdbook admonitions (rust-lang/cargo#17384) - chore(ci): exclude resolver-tests from intra doc link checks (rust-lang/cargo#17385)
View all comments
What does this PR try to resolve?
Fixes #12235
Unstable feature docs: https://doc.rust-lang.org/stable/cargo/reference/unstable.html#lintscargo
We are adding a linting system to workspaces and packages controlled by
[lints.cargo].As the presence of
[lints.cargo]was a hard error before 1.79, by-default warn/deny lints are ignored whenpackage.rust-versionis set below that.Workspace lints are controlled by
[workspace.lints]if present, otherwise[lints]. This was inspired byworkspace.resolver.The rust-version used for the workspace is the lowest among the workspace members.
In vetting the design, we have a fully general parse-pass that runs during build operations as well as
cargo fetxh(matching deferred warnings and errors from manifest parsing). We also have a one-off lint that runs against the completed build units.The initial batch of lints being stabilized is documented at https://doc.rust-lang.org/nightly/cargo/reference/lints.html
For more on the behavior of these lints, see https://github.com/rust-lang/cargo/tree/master/tests/testsuite/lints
Relevant docs:
How to test and review this PR?
At #t-cargo > Last items for linting system: `unused_dependencies`, I raised concern over
unused_dependenciesname in case we want to add other kinds of unused dependencies (like artifacts) as separate lints. No one expressed interest in that, so I kept it as a general lint name. I didn't addpackageto the name since our existing dept tables don't have that and the intent is likely clear.