deps: bump to nightly-2026-08-28 + refresh the dep tree (and pin the old trait solver) - #37
Merged
Merged
Conversation
Moves the dated toolchain pin from nightly-2026-07-30 to nightly-2026-08-28 and refreshes Cargo.lock: Bevy 0.19.0 -> 0.19.1, 146 crates updated, 12 added, 2 removed (wgpu 29.0.4, quick-xml 0.41, uuid 1.26, thiserror 2.0.20, ...). Every direct dependency was already at its latest major, so Cargo.toml's version requirements are untouched, and the bevy_gaussian_splatting fork rev is unchanged -- martin-tightcut's head still matches the pinned commit. Why the trait-solver opt-out comes with it: nightly-2026-08-28 is the first pin that carries rustc's next-generation trait solver on by default (-Znext-solver=globally, rust-lang/rust#160619). Under it, bevy_render 0.19.1 needs ~13.3 GB RSS in a single rustc and is OOM-killed; the same crate on the same toolchain peaks at ~1.9 GB with -Znext-solver=coherence. Measured both ways with only the solver as the variable. A ~7x memory regression takes out the dev box and the 16 GB CI runners alike, so .cargo/config.toml pins the old solver via the documented =coherence opt-out until it is fixed upstream. The regression is in that dependency; the bump needed no source changes here. Also drops two cargo-audit exceptions: the refresh pulls quick-xml 0.41.0, which patches RUSTSEC-2026-0194 and RUSTSEC-2026-0195, so the audit gate now passes on its own merits instead of by exemption. The ttf-parser unmaintained warning stays ignored, as before. The pinned-nightly date in README/CLAUDE/CONTRIBUTING was stale (still said 2026-04-26); all three now match rust-toolchain.toml. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AZoZvyBMSBDMH8BnaWE9ZA
The scope of the next-solver fallout is now measured rather than assumed: a full --release codegen of the martin bin with -Znext-solver=globally, deps left on the old solver, compiles clean. So the ~7x memory blowup is entirely bevy_render's -- nothing in martin's own code trips the new solver, and dropping the .cargo/config.toml opt-out should be a one-line change once upstream is fixed. Also verified on the new pin: cargo build --release --all-targets is clean, cargo test --release passes 176 tests (171 martin + 5 splatgen), and cargo fmt --check plus reuse lint are green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AZoZvyBMSBDMH8BnaWE9ZA
annejan
enabled auto-merge (squash)
August 28, 2026 12:04
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves the dated toolchain pin to
nightly-2026-08-28, refreshes the whole dependency tree, and — the part worth reading — deliberately opts back out of rustc's new trait solver, because one dependency makes it unbuildable.The trait solver
nightly-2026-08-28is the first pin that carries the next-generation trait solver on by default (-Znext-solver=globally, rust-lang/rust#160619). Verified empirically rather than assumed from the date: default rustc diagnostics are byte-identical to-Znext-solver=globallyand differ from=coherence.Under it,
bevy_render0.19.1 needs ~13.3 GB RSS in a singlerustcand is OOM-killed. The same crate, same toolchain, with-Znext-solver=coherencepeaks at ~1.9 GB. Both measured with only the solver as the variable:rustcRSS-Znext-solver=coherence(old)=globally(new)A ~7× memory regression takes out the 16 GB GitHub runners as surely as the dev box, so
.cargo/config.tomlnow setsrustflags = ["-Znext-solver=coherence"]— the documented opt-out, which keeps the new solver for coherence checking (its default since 1.84) and the old one elsewhere, i.e. exactly the pre-bump behaviour.The regression is confined to that one dependency. A full
--releasecodegen of themartinbin under-Znext-solver=globally, with deps on the old solver, compiles clean — nothing in our code trips the new solver. So dropping the opt-out once upstream is fixed should be a one-line change, not a migration.CONTRIBUTING.md § The trait solverdocuments the why, the numbers, and the re-test recipe.No upstream report seems to match this yet; it may be worth filing against rust-lang/rust.
Dependencies
Bevy 0.19.0 → 0.19.1, and 146 locked crates updated / 12 added / 2 removed (wgpu 29.0.4, quick-xml 0.41, uuid 1.26, thiserror 2.0.20, zerocopy 0.8.56; the new
arboard/wl-clipboard-rsarrive with Bevy 0.19.1).Every direct dependency was already at its latest major, so
Cargo.toml's version requirements are untouched, and thebevy_gaussian_splattingfork rev is unchanged —martin-tightcut's head still matches the pinned commit. No source changes anywhere.Two
cargo-auditexceptions deletedThe refresh pulls
quick-xml0.41.0 (viawayland-scanner), which patches RUSTSEC-2026-0194 and RUSTSEC-2026-0195. Both ignores are gone from.cargo/audit.toml, andcargo auditpasses clean over 650 crates — the gate now passes on its own merits instead of by exemption. Only thettf-parserunmaintained warning (RUSTSEC-2026-0192) remains ignored, as before.Also: the pinned-nightly date in
README.md,CLAUDE.mdandCONTRIBUTING.mdwas stale (all three still said2026-04-26while the toolchain file was on2026-07-30); all now matchrust-toolchain.toml.Verification
cargo fmt --all --checkcargo clippy --all-targets -- -D warningscargo test --releasereuse lintcargo build --release --all-targetscargo checkcargo check(intro)cargo auditmartinbin under-Znext-solver=globally--validateon all 55 shows--synth-wavw/MARTIN_SCORE_STRICT=1The container had no GPU and no software-Vulkan, so nothing in this PR actually rasterized a splat. A wgpu 29.0.4 bump is exactly the kind of change that only surfaces at draw time, and CI won't cover it either — its smoke-render is
continue-on-error: trueand typically skips on lavapipe. Please runpipeline/smoke-shows.pyon real RADV before merging.Generated by Claude Code