Skip to content

Conversation

GuillaumeGomez
Copy link
Member

@GuillaumeGomez GuillaumeGomez commented Mar 24, 2025

Implementation of rust-lang/rfcs#3631.

This implementation actually resulted in a lot of simplifications:

  • All cfg computation is now done in one place: propagate_doc_cfg.rs. Because (trait) impls are not retrieved at the same time as the other items, we cannot perform this computation in the clean process, it needs to be after.
  • Because there is cfg inheritance, we can keep track of them in one place (in propagate_doc_cfg.rs), meaning we don't need to copy an item's attributes to its children anymore. Only exception: impl items. For them we clone only cfg attributes.
  • propagate_doc_cfg.rs is also now much simpler, much less need to keep track of parents, since everything we need is handled by the new CfgInfo type.
  • I also suspect that Cfg::simplify_with could either be removed or at least used directly into propagate_doc_cfg.rs when we compute cfgs. Considering how big the PR already is, I'll do it in a follow-up.

I didn't remove the doc_cfg* features in this PR because some dependencies used in rustc (like stdarch) are using it, so we need to have a nightly released with this PR before I can switch to the new feature.

r? ghost

@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Mar 24, 2025
@rust-log-analyzer

This comment has been minimized.

@petrochenkov
Copy link
Contributor

What remains to be done:

I'd also want to block the stabilization on landing #138844 to avoid a stable rustdoc feature relying on externally observable hacks in rustc.
The crater run in #138844 returned mostly clean, so I expect it to land soon.

@GuillaumeGomez
Copy link
Member Author

Noted! And that will be a nice improvement, thanks!

Just one thing left for the cfg expansion missing: #[cfg_attr(blabla, derive(Debug))]. In this case, the cfg is not kept in the generated derive items. It's been in my TODO list for a long time now. ^^'

@petrochenkov
Copy link
Contributor

Just one thing left for the cfg expansion missing: #[cfg_attr(blabla, derive(Debug))]

Do you mean like in #138515? :)

@GuillaumeGomez
Copy link
Member Author

You're my hero! Gonna need to handle this new attribute then. :)

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Collaborator

bors commented Mar 25, 2025

☔ The latest upstream changes (presumably #138923) made this pull request unmergeable. Please resolve the merge conflicts.

@GuillaumeGomez GuillaumeGomez force-pushed the rfc-3631 branch 2 times, most recently from d88598f to db25eea Compare March 27, 2025 10:18
@rustbot rustbot added the A-run-make Area: port run-make Makefiles to rmake.rs label Mar 27, 2025
@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Collaborator

bors commented Mar 27, 2025

☔ The latest upstream changes (presumably #138927) made this pull request unmergeable. Please resolve the merge conflicts.

@GuillaumeGomez GuillaumeGomez force-pushed the rfc-3631 branch 2 times, most recently from b8cb424 to b581ce1 Compare March 28, 2025 23:54
@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@GuillaumeGomez GuillaumeGomez force-pushed the rfc-3631 branch 4 times, most recently from 71369a1 to fbee8a9 Compare April 1, 2025 15:52
@rust-log-analyzer

This comment has been minimized.

zydou pushed a commit to zydou/arti that referenced this pull request Sep 30, 2025
Now that rust nightly has merged doc_auto_cfg into doc_cfg,
and completed rust-lang/rust#138907,
it is no longer necessary.

Closes #1514.
alamb pushed a commit to apache/arrow-rs that referenced this pull request Sep 30, 2025
# Which issue does this PR close?

None.

# Rationale for this change

Removed in rust-lang/rust#138907, included in
`doc_cfg`

# What changes are included in this PR?

Use `doc_cfg` instead of removed `doc_auto_cfg`.

# Are these changes tested?

Test locally with:
`cargo +nightly docs-rs`

# Are there any user-facing changes?

No
kpreid added a commit to kpreid/bevy that referenced this pull request Sep 30, 2025
As of <rust-lang/rust#138907>, the former
feature has been removed and the latter feature has the same effect.
kpreid added a commit to kpreid/bevy that referenced this pull request Sep 30, 2025
As of <rust-lang/rust#138907>, the former
feature has been removed and the latter feature has the same effect.
kpreid added a commit to kpreid/bevy that referenced this pull request Sep 30, 2025
As of <rust-lang/rust#138907>, the former
feature has been removed and the latter feature has the same effect.
josephlr pushed a commit to rust-random/rand that referenced this pull request Oct 1, 2025
- [ ] Added a `CHANGELOG.md` entry

# Summary

Replace the removed `doc_auto_cfg` feature with the `doc_cfg` feature.

# Motivation

Avoid compilation errors when building documentation.

# Details

`doc_auto_cfg` was merged into `doc_cfg` in rust-lang/rust#138907.

When `docsrs` is enabled, the old `doc_auto_cfg` results in the
following errors on the latest nightlies:

```
error[E0557]: feature has been removed
  --> src/lib.rs:56:29
   |
56 | #![cfg_attr(docsrs, feature(doc_auto_cfg))]
   |                             ^^^^^^^^^^^^ feature has been removed
   |
   = note: removed in CURRENT_RUSTC_VERSION; see <rust-lang/rust#138907> for more information
   = note: merged into `doc_cfg`
```

```
error[E0557]: feature has been removed
  --> rand_core/src/lib.rs:36:29
   |
36 | #![cfg_attr(docsrs, feature(doc_auto_cfg))]
   |                             ^^^^^^^^^^^^ feature has been removed
   |
   = note: removed in CURRENT_RUSTC_VERSION; see <rust-lang/rust#138907> for more information
   = note: merged into `doc_cfg`
```

The new `doc_cfg` retains the automatic `cfg` generation that
`doc_auto_cfg` used to provide.
github-merge-queue bot pushed a commit to veecle/freertos-integration that referenced this pull request Oct 1, 2025
`doc_auto_cfg` has been merged into `doc_cfg` in
rust-lang/rust#138907.

Signed-off-by: Julian Schindel <[email protected]>
arctic-alpaca added a commit to veecle/veecle-os that referenced this pull request Oct 1, 2025
`doc_auto_cfg` has been merged into `doc_cfg` in rust-lang/rust#138907.

Signed-off-by: Julian Schindel <[email protected]>
github-merge-queue bot pushed a commit to veecle/veecle-os that referenced this pull request Oct 1, 2025
`doc_auto_cfg` has been merged into `doc_cfg` in
rust-lang/rust#138907.

Also bumps the Rust nightly version to actually capture the `doc_cfg`
change.

Fixes: [DEV-1000](https://linear.app/veecle/issue/DEV-1000)

---------

Signed-off-by: Julian Schindel <[email protected]>
Boshen added a commit to oxc-project/oxc-resolver that referenced this pull request Oct 1, 2025
https://docs.rs/crate/oxc_resolver/11.8.4/builds/2542617

```
[INFO] [stderr] error[E0557]: feature has been removed
[INFO] [stderr]   --> src/lib.rs:42:29
[INFO] [stderr]    |
[INFO] [stderr] 42 | #![cfg_attr(docsrs, feature(doc_auto_cfg))]
[INFO] [stderr]    |                             ^^^^^^^^^^^^ feature has been removed
[INFO] [stderr]    |
[INFO] [stderr]    = note: removed in 1.58.0; see <rust-lang/rust#138907> for more information
[INFO] [stderr]    = note: merged into `doc_cfg`
[INFO] [stderr]
[INFO] [stderr] error: Compilation failed, aborting rustdoc
```
madsmtm added a commit to madsmtm/objc2 that referenced this pull request Oct 1, 2025
Code changes are:
- Use the `doc_cfg` feature instead of `doc_auto_cfg`:
  rust-lang/rust#138907
- Fix a few unused macro imports in the same file that defines the macro.

UI test changes are:
- Message for variadic args being unsupported has been updated.
- Inference error location has changed slightly.

Assembly test changes are:
- None.
ystreet added a commit to ystreet/turn-proto that referenced this pull request Oct 2, 2025
ystreet added a commit to ystreet/stun-proto that referenced this pull request Oct 2, 2025
ystreet added a commit to ystreet/stun-proto that referenced this pull request Oct 2, 2025
ystreet added a commit to ystreet/turn-proto that referenced this pull request Oct 2, 2025
Dr-Emann added a commit to Dr-Emann/croaring-rs that referenced this pull request Oct 2, 2025
doc_auto_cfg has been merged into doc_cfg in rust-lang/rust#138907
Dr-Emann added a commit to RoaringBitmap/croaring-rs that referenced this pull request Oct 2, 2025
doc_auto_cfg has been merged into doc_cfg in rust-lang/rust#138907
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-attributes Area: Attributes (`#[…]`, `#![…]`) A-run-make Area: port run-make Makefiles to rmake.rs merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. perf-regression-triaged The performance regression has been triaged. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.
Projects
None yet
Development

Successfully merging this pull request may close these issues.