Skip to content

rerun in original typing mode if we meet any opaques in post analysis - #158993

Merged
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
adwinwhite:rigid-opaque-in-codegen
Jul 15, 2026
Merged

rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
adwinwhite:rigid-opaque-in-codegen

Conversation

@adwinwhite

@adwinwhite adwinwhite commented Jul 9, 2026 •

Copy link
Copy Markdown
Contributor

When the rerun condition is OpaqueInStorage and typing mode is PostAnalysis/Codegen, we do rerun the evaluation in original typing mode.
It's strange that we don't do the same when the rerun condition is OpaqueInStorageOrAnyOpaqueHasInferAsHidden.

This fixes an ICE when building cargo with the next solver.

r? @jdonszelmann
cc @lcnr

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Jul 9, 2026
@adwinwhite

Copy link
Copy Markdown
Contributor Author

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jul 9, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Jul 9, 2026
rerun in original typing mode if we meet any opaques in post analysis
@rust-bors

rust-bors Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: 82f26fd (82f26fd08b92a1294f398b6e087af155ac598ad0)
Base parent: 14cae68 (14cae681329a63c622a6e1fbe1d30f9374bc51d8)

@rust-timer

This comment has been minimized.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (82f26fd): comparison URL.

Overall result: ❌ regressions - no action needed

Benchmarking means the PR may be perf-sensitive. Consider adding rollup=never if this change is not fit for rolling up.

@rustbot label: -S-waiting-on-perf -perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.5% [0.2%, 0.8%] 4
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary -2.8%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-2.8% [-2.8%, -2.8%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -2.8% [-2.8%, -2.8%] 1

Cycles

Results (secondary 1.3%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
2.8% [2.5%, 3.3%] 3
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.4% [-3.4%, -3.4%] 1
All ❌✅ (primary) - - 0

Binary size

Results (primary 0.1%, secondary 0.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
0.1% [0.0%, 0.1%] 50
Regressions ❌
(secondary)
0.1% [0.0%, 0.1%] 23
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.1% [0.0%, 0.1%] 50

Bootstrap: 488.761s -> 488.757s (-0.00%)
Artifact size: 388.78 MiB -> 388.85 MiB (0.02%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jul 9, 2026
@adwinwhite
adwinwhite force-pushed the rigid-opaque-in-codegen branch from 46cf47b to b4bc03c Compare July 9, 2026 08:25
@rustbot

rustbot commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

jdonszelmann is currently at their maximum review capacity.
They may take a while to respond.

@adwinwhite
adwinwhite marked this pull request as ready for review July 9, 2026 08:32
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jul 9, 2026
@rust-log-analyzer

This comment has been minimized.

@jdonszelmann jdonszelmann left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

}

fn main() {
// In `codegen_select_candidate`, we try to find impl for `FlatMap::into_iter`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// In `codegen_select_candidate`, we try to find impl for `FlatMap::into_iter`
// In `codegen_select_candidate`, we try to find an impl for `FlatMap::into_iter`

// Then we evaluate the normalized goal:
// `Projection(Fn::Output<parse_feature, (&str,)>, iter::Once`.
// The alias term is normalized to rigid alias `impl Iterator<Item = &str>` as
// we're in erased typing mode.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// we're in erased typing mode.
// we're in TypingMode::ErasedNotCoherence.

// we're in erased typing mode.
// But the expected term is revealed `iter::Once` thus relating failed.
// The goal fails with rerun condition `OpaqueInStorage(parse_feature::opaque)`.
// I expect this goal to be rerun in `Codegen` typing mode but

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// I expect this goal to be rerun in `Codegen` typing mode but
// This goal should be rerun in `TypingMode::Codegen` mode, but

@jdonszelmann

Copy link
Copy Markdown
Contributor

@rustbot author

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jul 13, 2026
@rustbot

rustbot commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

Reminder, once the PR becomes ready for a review, use @rustbot ready.

@adwinwhite
adwinwhite force-pushed the rigid-opaque-in-codegen branch from b4bc03c to a8019c5 Compare July 14, 2026 09:17
@adwinwhite

Copy link
Copy Markdown
Contributor Author

@bors r=jdonszelmann

@rust-bors

rust-bors Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

📌 Commit a8019c5 has been approved by jdonszelmann

It is now in the queue for this repository.

@rust-bors rust-bors Bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jul 14, 2026
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jul 14, 2026
…, r=jdonszelmann

rerun in original typing mode if we meet any opaques in post analysis

When the rerun condition is `OpaqueInStorage` and typing mode is `PostAnalysis/Codegen`, we do rerun the evaluation in original typing mode.
It's strange that we don't do the same when the rerun condition is `OpaqueInStorageOrAnyOpaqueHasInferAsHidden`.

This fixes an ICE when building `cargo` with the next solver.

r? @jdonszelmann
cc @lcnr
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jul 14, 2026
…, r=jdonszelmann

rerun in original typing mode if we meet any opaques in post analysis

When the rerun condition is `OpaqueInStorage` and typing mode is `PostAnalysis/Codegen`, we do rerun the evaluation in original typing mode.
It's strange that we don't do the same when the rerun condition is `OpaqueInStorageOrAnyOpaqueHasInferAsHidden`.

This fixes an ICE when building `cargo` with the next solver.

r? @jdonszelmann
cc @lcnr
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jul 14, 2026
…, r=jdonszelmann

rerun in original typing mode if we meet any opaques in post analysis

When the rerun condition is `OpaqueInStorage` and typing mode is `PostAnalysis/Codegen`, we do rerun the evaluation in original typing mode.
It's strange that we don't do the same when the rerun condition is `OpaqueInStorageOrAnyOpaqueHasInferAsHidden`.

This fixes an ICE when building `cargo` with the next solver.

r? @jdonszelmann
cc @lcnr
rust-bors Bot pushed a commit that referenced this pull request Jul 14, 2026
…uwer

Rollup of 22 pull requests

Successful merges:

 - #156047 (Fix trait method resolution on an adjusted never type)
 - #157824 (Comptime inherent impls)
 - #158235 (Store `DefId` instead of `EiiDecl` in `EiiImplResolution::Known`)
 - #158723 (Support EII on Windows MSVC)
 - #158993 (rerun in original typing mode if we meet any opaques in post analysis)
 - #159160 (Make `HasTokens` a sub-trait of `HasAttrs`.)
 - #159183 (Introduce InstanceKind::LlvmIntrinsic)
 - #159251 (Bump rustc-perf submodule)
 - #155013 (Suggest the `[const] Destruct` bound for type parameters in const functions when missing)
 - #159155 (unstable book: Document `diagnostic_on_unknown` feature)
 - #159235 (Add regression test for #95719)
 - #159243 (inline Once wait and wait_force)
 - #159255 (Replace shortened type with `_` instead of `...` as placeholder)
 - #159259 (Add regression test for #144033)
 - #159265 (bootstrap: skip intrinsic-test when rustfmt is unavailable)
 - #159269 (disable range-len-try-from.rs on s390x)
 - #159272 (slice: make swap delegate to swap_unchecked)
 - #159274 (bootstrap: Rename `std_crates_for_run_make` to `std_crates_for_make_run`)
 - #159275 (remove obsolete comment)
 - #159277 (Construct `tokens` for attrs made by `mk_attr_word` and other variants)
 - #159283 (Remove obsolete verbose flag from deref/ref suggestions)
 - #159290 (rustc-dev-guide subtree update)
rust-bors Bot pushed a commit that referenced this pull request Jul 15, 2026
…uwer

Rollup of 22 pull requests

Successful merges:

 - #156047 (Fix trait method resolution on an adjusted never type)
 - #157824 (Comptime inherent impls)
 - #158235 (Store `DefId` instead of `EiiDecl` in `EiiImplResolution::Known`)
 - #158723 (Support EII on Windows MSVC)
 - #158993 (rerun in original typing mode if we meet any opaques in post analysis)
 - #159160 (Make `HasTokens` a sub-trait of `HasAttrs`.)
 - #159183 (Introduce InstanceKind::LlvmIntrinsic)
 - #159251 (Bump rustc-perf submodule)
 - #155013 (Suggest the `[const] Destruct` bound for type parameters in const functions when missing)
 - #159155 (unstable book: Document `diagnostic_on_unknown` feature)
 - #159235 (Add regression test for #95719)
 - #159243 (inline Once wait and wait_force)
 - #159255 (Replace shortened type with `_` instead of `...` as placeholder)
 - #159259 (Add regression test for #144033)
 - #159265 (bootstrap: skip intrinsic-test when rustfmt is unavailable)
 - #159269 (disable range-len-try-from.rs on s390x)
 - #159272 (slice: make swap delegate to swap_unchecked)
 - #159274 (bootstrap: Rename `std_crates_for_run_make` to `std_crates_for_make_run`)
 - #159275 (remove obsolete comment)
 - #159277 (Construct `tokens` for attrs made by `mk_attr_word` and other variants)
 - #159283 (Remove obsolete verbose flag from deref/ref suggestions)
 - #159290 (rustc-dev-guide subtree update)
@rust-bors
rust-bors Bot merged commit d7ff9eb into rust-lang:main Jul 15, 2026
13 checks passed
@rustbot rustbot added this to the 1.99.0 milestone Jul 15, 2026
rust-timer added a commit that referenced this pull request Jul 15, 2026
Rollup merge of #158993 - adwinwhite:rigid-opaque-in-codegen, r=jdonszelmann

rerun in original typing mode if we meet any opaques in post analysis

When the rerun condition is `OpaqueInStorage` and typing mode is `PostAnalysis/Codegen`, we do rerun the evaluation in original typing mode.
It's strange that we don't do the same when the rerun condition is `OpaqueInStorageOrAnyOpaqueHasInferAsHidden`.

This fixes an ICE when building `cargo` with the next solver.

r? @jdonszelmann
cc @lcnr
RalfJung pushed a commit to RalfJung/miri that referenced this pull request Jul 15, 2026
…uwer

Rollup of 22 pull requests

Successful merges:

 - rust-lang/rust#156047 (Fix trait method resolution on an adjusted never type)
 - rust-lang/rust#157824 (Comptime inherent impls)
 - rust-lang/rust#158235 (Store `DefId` instead of `EiiDecl` in `EiiImplResolution::Known`)
 - rust-lang/rust#158723 (Support EII on Windows MSVC)
 - rust-lang/rust#158993 (rerun in original typing mode if we meet any opaques in post analysis)
 - rust-lang/rust#159160 (Make `HasTokens` a sub-trait of `HasAttrs`.)
 - rust-lang/rust#159183 (Introduce InstanceKind::LlvmIntrinsic)
 - rust-lang/rust#159251 (Bump rustc-perf submodule)
 - rust-lang/rust#155013 (Suggest the `[const] Destruct` bound for type parameters in const functions when missing)
 - rust-lang/rust#159155 (unstable book: Document `diagnostic_on_unknown` feature)
 - rust-lang/rust#159235 (Add regression test for rust-lang/rust#95719)
 - rust-lang/rust#159243 (inline Once wait and wait_force)
 - rust-lang/rust#159255 (Replace shortened type with `_` instead of `...` as placeholder)
 - rust-lang/rust#159259 (Add regression test for rust-lang/rust#144033)
 - rust-lang/rust#159265 (bootstrap: skip intrinsic-test when rustfmt is unavailable)
 - rust-lang/rust#159269 (disable range-len-try-from.rs on s390x)
 - rust-lang/rust#159272 (slice: make swap delegate to swap_unchecked)
 - rust-lang/rust#159274 (bootstrap: Rename `std_crates_for_run_make` to `std_crates_for_make_run`)
 - rust-lang/rust#159275 (remove obsolete comment)
 - rust-lang/rust#159277 (Construct `tokens` for attrs made by `mk_attr_word` and other variants)
 - rust-lang/rust#159283 (Remove obsolete verbose flag from deref/ref suggestions)
 - rust-lang/rust#159290 (rustc-dev-guide subtree update)
github-actions Bot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request Jul 20, 2026
…uwer

Rollup of 22 pull requests

Successful merges:

 - rust-lang/rust#156047 (Fix trait method resolution on an adjusted never type)
 - rust-lang/rust#157824 (Comptime inherent impls)
 - rust-lang/rust#158235 (Store `DefId` instead of `EiiDecl` in `EiiImplResolution::Known`)
 - rust-lang/rust#158723 (Support EII on Windows MSVC)
 - rust-lang/rust#158993 (rerun in original typing mode if we meet any opaques in post analysis)
 - rust-lang/rust#159160 (Make `HasTokens` a sub-trait of `HasAttrs`.)
 - rust-lang/rust#159183 (Introduce InstanceKind::LlvmIntrinsic)
 - rust-lang/rust#159251 (Bump rustc-perf submodule)
 - rust-lang/rust#155013 (Suggest the `[const] Destruct` bound for type parameters in const functions when missing)
 - rust-lang/rust#159155 (unstable book: Document `diagnostic_on_unknown` feature)
 - rust-lang/rust#159235 (Add regression test for rust-lang/rust#95719)
 - rust-lang/rust#159243 (inline Once wait and wait_force)
 - rust-lang/rust#159255 (Replace shortened type with `_` instead of `...` as placeholder)
 - rust-lang/rust#159259 (Add regression test for rust-lang/rust#144033)
 - rust-lang/rust#159265 (bootstrap: skip intrinsic-test when rustfmt is unavailable)
 - rust-lang/rust#159269 (disable range-len-try-from.rs on s390x)
 - rust-lang/rust#159272 (slice: make swap delegate to swap_unchecked)
 - rust-lang/rust#159274 (bootstrap: Rename `std_crates_for_run_make` to `std_crates_for_make_run`)
 - rust-lang/rust#159275 (remove obsolete comment)
 - rust-lang/rust#159277 (Construct `tokens` for attrs made by `mk_attr_word` and other variants)
 - rust-lang/rust#159283 (Remove obsolete verbose flag from deref/ref suggestions)
 - rust-lang/rust#159290 (rustc-dev-guide subtree update)
Kobzol pushed a commit to Kobzol/rustc_codegen_cranelift that referenced this pull request Jul 23, 2026
…uwer

Rollup of 22 pull requests

Successful merges:

 - rust-lang/rust#156047 (Fix trait method resolution on an adjusted never type)
 - rust-lang/rust#157824 (Comptime inherent impls)
 - rust-lang/rust#158235 (Store `DefId` instead of `EiiDecl` in `EiiImplResolution::Known`)
 - rust-lang/rust#158723 (Support EII on Windows MSVC)
 - rust-lang/rust#158993 (rerun in original typing mode if we meet any opaques in post analysis)
 - rust-lang/rust#159160 (Make `HasTokens` a sub-trait of `HasAttrs`.)
 - rust-lang/rust#159183 (Introduce InstanceKind::LlvmIntrinsic)
 - rust-lang/rust#159251 (Bump rustc-perf submodule)
 - rust-lang/rust#155013 (Suggest the `[const] Destruct` bound for type parameters in const functions when missing)
 - rust-lang/rust#159155 (unstable book: Document `diagnostic_on_unknown` feature)
 - rust-lang/rust#159235 (Add regression test for rust-lang/rust#95719)
 - rust-lang/rust#159243 (inline Once wait and wait_force)
 - rust-lang/rust#159255 (Replace shortened type with `_` instead of `...` as placeholder)
 - rust-lang/rust#159259 (Add regression test for rust-lang/rust#144033)
 - rust-lang/rust#159265 (bootstrap: skip intrinsic-test when rustfmt is unavailable)
 - rust-lang/rust#159269 (disable range-len-try-from.rs on s390x)
 - rust-lang/rust#159272 (slice: make swap delegate to swap_unchecked)
 - rust-lang/rust#159274 (bootstrap: Rename `std_crates_for_run_make` to `std_crates_for_make_run`)
 - rust-lang/rust#159275 (remove obsolete comment)
 - rust-lang/rust#159277 (Construct `tokens` for attrs made by `mk_attr_word` and other variants)
 - rust-lang/rust#159283 (Remove obsolete verbose flag from deref/ref suggestions)
 - rust-lang/rust#159290 (rustc-dev-guide subtree update)
@lcnr lcnr mentioned this pull request Aug 22, 2026
rust-bors Bot pushed a commit that referenced this pull request Aug 31, 2026
[stable] 1.98.1 release

Backport of "rerun in original typing mode if we meet any opaques in post analysis" #158993 to stable, fixes #161441

We didn't notice that a beta cutoff happened between #156742 and #158993 and it's easy to forget that we need to be careful with next-solver bugs as they can affect stable via coherence and `impossible_predicates`.
rust-bors Bot pushed a commit that referenced this pull request Aug 31, 2026
[stable] 1.98.1 release

Backport of "rerun in original typing mode if we meet any opaques in post analysis" #158993 to stable, fixes #161441

We didn't notice that a beta cutoff happened between #156742 and #158993 and it's easy to forget that we need to be careful with next-solver bugs as they can affect stable via coherence and `impossible_predicates`.
rust-bors Bot pushed a commit that referenced this pull request Aug 31, 2026
[stable] 1.98.1 release



Backport of "rerun in original typing mode if we meet any opaques in post analysis" #158993 to stable, fixes #161441

We didn't notice that a beta cutoff happened between #156742 and #158993 and it's easy to forget that we need to be careful with next-solver bugs as they can affect stable via coherence and `impossible_predicates`.
rust-bors Bot pushed a commit that referenced this pull request Aug 31, 2026
[stable] 1.98.1 release



Backport of "rerun in original typing mode if we meet any opaques in post analysis" #158993 to stable, fixes #161441

We didn't notice that a beta cutoff happened between #156742 and #158993 and it's easy to forget that we need to be careful with next-solver bugs as they can affect stable via coherence and `impossible_predicates`.
rust-bors Bot pushed a commit that referenced this pull request Sep 1, 2026
[stable] 1.98.1 release



Backport of "rerun in original typing mode if we meet any opaques in post analysis" #158993 to stable, fixes #161441

We didn't notice that a beta cutoff happened between #156742 and #158993 and it's easy to forget that we need to be careful with next-solver bugs as they can affect stable via coherence and `impossible_predicates`.
rust-bors Bot pushed a commit that referenced this pull request Sep 1, 2026
[stable] 1.98.1 release



Backport of "rerun in original typing mode if we meet any opaques in post analysis" #158993 to stable, fixes #161441

We didn't notice that a beta cutoff happened between #156742 and #158993 and it's easy to forget that we need to be careful with next-solver bugs as they can affect stable via coherence and `impossible_predicates`.
kskalski added a commit to kskalski/agave that referenced this pull request Sep 8, 2026
Problem

The pinned nightly 2026-07-07 predates the vtable miscompilation fix that
stable picked up in 1.98.1, so CI would lint and check against a compiler
carrying the very bug the stable bump exists to avoid.

Summary of Changes

- move nightly to 2026-07-16, the first one containing rust-lang/rust#158993
pull Bot pushed a commit to Dustin4444/agave that referenced this pull request Sep 9, 2026
* chore(toolchain): bump rust toolchain to 1.98.1 and nightly=2026-07-07

Problem

The pinned toolchain is 1.98.0; the 1.98.1 patch release is out.

Raising the workspace `rust-version` to 1.98.1 alone breaks the nightly CI
check, since nightly never reports a patch component: nightly-2026-07-03
identifies as 1.98.0-nightly, so cargo rejects the workspace as requiring a
newer rustc.

Summary of Changes

- bump `rust-toolchain.toml` channel and workspace `rust-version` to 1.98.1
- move nightly to 2026-07-07, the first nightly reporting 1.99.0 and hence the
  closest one clearing the new `rust-version`

* chore(toolchain): move nightly to 2026-07-16

Problem

The pinned nightly 2026-07-07 predates the vtable miscompilation fix that
stable picked up in 1.98.1, so CI would lint and check against a compiler
carrying the very bug the stable bump exists to avoid.

Summary of Changes

- move nightly to 2026-07-16, the first one containing rust-lang/rust#158993
antiguru added a commit to MaterializeInc/materialize that referenced this pull request Sep 17, 2026
CI derives its stable toolchain from the `rust-version` field in the
root `Cargo.toml`, so that field is what decides which warnings CI can
see. Holding it at 1.97.1 meant the lints Rust 1.98 introduced only
showed up when someone built locally, which is how the warnings fixed in
#38619 went unnoticed. Raising it closes that gap. Cargo.lock needs no
change, which matters because the doc test job resolves with `--locked`.

The pin is 1.98.1 rather than 1.98.0. 1.98.0 shipped an open
`P-critical` miscompilation, rust-lang/rust#161441: rustc could wrongly
decide an impl's predicates were impossible when they involved
associated-type projections plus an opaque type, emit a vacant vtable
entry, and leave a zero in the method slot, so safe code dispatched
through a null pointer. That was silent at compile time, and
`rust-version` selects the toolchain in the `stable` ci-builder flavor
that builds the shipped images, so it would have reached release
artifacts. rust-lang/rust#158993 fixed it after the 1.98 beta cutoff and
rust-lang/rust#161555 backported it for 1.98.1, which is now the current
stable release.

Rust 1.98.1 uses LLVM 22.1.8, matching the `clang-22`, `lld-22`, and
`llvm-22` packages the CI builder image already installs, so the
Dockerfile needs no accompanying change. The comment on that apt stanza
asks for the two to move together, and they still agree. Bumping
`rust-version` does change the builder image tag, because the tag hashes
the build arguments and `RUST_VERSION` is one of them.
`ci/mkpipeline.sh` detects the missing tag and inserts bootstrap steps
that build and push the stable, min, and console flavors for both
architectures, so the first build on this branch will be slow but needs
no manual intervention.

The nightly pin moves to 2026-09-02. The note that pinned it to
2026-08-02 pointed at rust-lang/rust#160439, a rustdoc hang that broke
the Doctests job, and that issue was closed as completed on 2026-08-06.
The note is removed rather than reworded, because the constraint it
described no longer exists.

Advancing the nightly does make rustdoc's `redundant_explicit_links`
lint fire, and `bin/doc` runs with `RUSTDOCFLAGS=-D warnings`, so those
become errors. Eight doc comments in `mz-avro` and `mz-pgtest` spell an
intra-doc link as a label plus an explicit legacy HTML path that
resolves to the same destination. Dropping the explicit target is the
rewrite rustdoc itself suggests, and every referenced item is in scope
at the link site. The `flush` links in the Avro writer keep their
explicit targets, because a fragment path is not redundant with its
label and rustdoc does not flag them.

### Outstanding before merge

`bin/lint-versions` records the Rust version that has been checked for
compilation time regressions, and it is updated here so `bin/lint`
passes. **That validation has not been performed.** Team Testing should
confirm 1.98.1 before this merges.

Two further caveats for reviewers. The `cargo test --doc` job could not
be exercised locally because that machine has no `protoc`, so it is
covered only by CI. Building the nightly builder image also runs `cargo
miri setup` and installs `cargo-fuzz`, neither of which can be checked
outside an image build; both fail loudly in the bootstrap step rather
than silently. Finally, a toolchain bump surfaces latent problems
anywhere in the tree, not only in the diff, so a failure on this branch
may point at code it does not touch.

### Release notes

No user-visible changes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants