Skip to content

Commit e733e02

Browse files
annejanclaude
andauthored
chore: bump the nightly pin 2026-04-26 → 2026-07-30 (+ fork §11) (#25)
The 3-month-old pin was due; done deliberately + fully re-verified per the rust-toolchain.toml policy, well before the Evoke deadline. Two things the newer nightly forced, both small: - rust-lang/rust#158758 RENAMED the `lazy_type_alias` feature gate to `checked_type_aliases`, so bevy_gaussian_splatting's `nightly_generic_alias` feature failed E0557 on any post-rename nightly. Fixed in the fork (martin-tightcut §11, one word in lib.rs); the git rev pin moves 608c7d1 → f94855a. Upstream will need the same fix. - New clippy lint `chunks_exact_to_as_chunks`: 4 sites (stereo→mono averaging in audio/analyze.rs, triangle-index walks in mesh.rs + scene/gl_dissolve.rs) now use `as_chunks::<N>()` — same shape, and the compiler gets constant-size chunks. Docs: DESIGN.md / Cargo.toml fork comments §1–10 → §1–11, OPTIMIZATION-BACKLOG.md pinned-rev note. Verified on nightly-2026-07-30: build --release (sh0 AND sh3), fmt --check, clippy -D warnings, 176 tests, reuse lint, `martin --validate`. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent fe69d0e commit e733e02

8 files changed

Lines changed: 22 additions & 13 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,14 +110,14 @@ strip = false
110110

111111
# Fork of the splat renderer so we can inject the explosion displacement into its WGSL
112112
# (shaders load via hardcoded-UUID internal assets — no app-side hook). Tracked as the
113-
# `martin-tightcut` branch of annejan/bevy_gaussian_splatting (= upstream 8.0.0 + our §1–10
113+
# `martin-tightcut` branch of annejan/bevy_gaussian_splatting (= upstream 8.0.0 + our §1–11
114114
# edits, documented in that branch's CHANGES.md); Cargo.lock pins the exact commit. To hack
115115
# the shaders locally, point this at a checkout instead: `path = "../bgs-fork"`.
116116
[patch.crates-io]
117117
# Pinned to an immutable REV (not just the branch) so a force-push/rebase of the fork — or a routine
118118
# `cargo update` — can't silently repoint the engine's renderer to unreviewed commits before a deadline.
119119
# To pull new shader edits: push the fork branch, then bump this rev deliberately (+ `cargo update -p …`).
120-
bevy_gaussian_splatting = { git = "https://github.com/annejan/bevy_gaussian_splatting", rev = "608c7d17541b6cb77848d09e5f0c848075e9db30" }
120+
bevy_gaussian_splatting = { git = "https://github.com/annejan/bevy_gaussian_splatting", rev = "f94855a4d4e81938b49aa121da7a4624938e3e8e" }
121121
# quick-xml 0.39→0.40 has RUSTSEC-2026-0194/0195 (quadratic attrs, unbounded ns alloc).
122122
# Build-time only (wayland-scanner is a proc-macro), NOT runtime-exploitable in martin.
123123
# Upstream wayland-scanner needs a coordinated release with wayland-client/server;

DESIGN.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -721,10 +721,12 @@ slot itself is a fresh open item, added to §9.2 #16).
721721
## 5. The fork's shader edits — per-particle phase + friends (LANDED; this is the original blueprint)
722722

723723
> **STATUS (2026-06): this landed and then some.** What began as a single co-designed edit is now the
724-
> fork's **§1–10** on the `martin-tightcut` branch (upstream **8.0.0**): explode/ball-pulse, the `bulge`
724+
> fork's **§1–11** on the `martin-tightcut` branch (upstream **8.0.0**): explode/ball-pulse, the `bulge`
725725
> uniform, the per-particle **transition phase** (this section), persistent **deform**, **swarm**,
726726
> **shockwave** (transition mode 8), **morph_stagger** (§8), a tighter synthetic-content quad extent
727-
> (§9), and an **additive/emissive blend mode** (§10, `MARTIN_ADDITIVE`). The sort speedup (§3) went
727+
> (§9), an **additive/emissive blend mode** (§10, `MARTIN_ADDITIVE`), and the
728+
> `lazy_type_alias``checked_type_aliases` nightly-gate rename (§11, keeps the crate building on
729+
> post-2026-07 nightlies). The sort speedup (§3) went
728730
> **upstream** (merged as #229; #231/#232/#233 are further upstream fixes). The authoritative, current list is the fork's
729731
> **`CHANGES.md`**; this section is kept as the original design sketch. The deeper WGSL/Rust plumbing +
730732
> upstream-PR shape live in **`SHADER-BLUEPRINT.md`**. Each edit stays gated default-off (default ==

OPTIMIZATION-BACKLOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ props stay on the serial path (async asset load, no CPU sampling). Startup wall-
4848
predicted (record/shot builds were already inline; live windowed loads benefit). 171 tests green.
4949

5050
### Fork-shader batch (`../bgs-fork`, branch `martin-tightcut`) · the full clone→edit→A/B→push→repoint dance
51-
Confirm the local checkout matches the pinned commit (`Cargo.lock` rev `608c7d17`); then path-patch
51+
Confirm the local checkout matches the pinned commit (`Cargo.lock` rev `f94855a4`); then path-patch
5252
martin to `../bgs-fork`, edit, rebuild **sh0 AND sh3**, A/B both, push the `martin-tightcut` branch,
5353
repoint the git dep + `cargo build` (re-resolves the lock to the new rev).
5454
- **#5 — dead-discard + alpha early-out** (`gaussian.wgsl:705-707` `dist²>9` never fires; ~21 % of every

rust-toolchain.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# `nightly_generic_alias` feature, which requires nightly. PINNED to a known-good DATE (not rolling
44
# `nightly`) so a nightly regression / ICE / feature-drop can't break the build the night before the
55
# compo — the CI `dtolnay/rust-toolchain` steps inherit this file. Bump deliberately + re-verify.
6-
channel = "nightly-2026-04-26"
6+
channel = "nightly-2026-07-30"
77
# A DATED nightly doesn't ship rustfmt/clippy unless they're requested — list them so the fmt + clippy
8-
# CI gates (and any fresh checkout) install them with the toolchain. Required for nightly-2026-04-26.
8+
# CI gates (and any fresh checkout) install them with the toolchain. Required for nightly-2026-07-30.
99
components = ["rustfmt", "clippy"]

src/audio/analyze.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ const RELEASE: f32 = 0.12;
3535
/// Average interleaved-stereo `f32` (the shape `stream::produce` emits) down to mono for analysis.
3636
pub fn mix_mono(stereo: &[f32]) -> Vec<f32> {
3737
stereo
38-
.chunks_exact(2)
38+
.as_chunks::<2>()
39+
.0
40+
.iter()
3941
.map(|s| 0.5 * (s[0] + s[1]))
4042
.collect()
4143
}
@@ -219,8 +221,13 @@ impl StreamingAnalyzer {
219221
/// Feed a chunk of interleaved-stereo PCM (the shape `produce` emits); emits every row whose FFT
220222
/// window is now fully inside the accumulated signal, in order.
221223
pub fn push_stereo(&mut self, stereo: &[f32], mut emit: impl FnMut([f32; BANDS])) {
222-
self.mono
223-
.extend(stereo.chunks_exact(2).map(|s| 0.5 * (s[0] + s[1])));
224+
self.mono.extend(
225+
stereo
226+
.as_chunks::<2>()
227+
.0
228+
.iter()
229+
.map(|s| 0.5 * (s[0] + s[1])),
230+
);
224231
let half = WIN as isize / 2;
225232
while (self.center(self.next_frame) + half) as usize <= self.mono.len() {
226233
let row = self.emit_row();

src/mesh.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,7 @@ fn build_gltf_gaussians(
612612
.read_indices()
613613
.map(|i| i.into_u32().collect())
614614
.unwrap_or_else(|| (0..positions.len() as u32).collect());
615-
for t in indices.chunks_exact(3) {
615+
for t in indices.as_chunks::<3>().0 {
616616
let (a, b, c) = (t[0] as usize, t[1] as usize, t[2] as usize);
617617
let (Some(&pa), Some(&pb), Some(&pc)) =
618618
(positions.get(a), positions.get(b), positions.get(c))

src/scene/gl_dissolve.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ pub(crate) fn sample_gl_mesh(
140140
Some(Indices::U32(v)) => v.iter().map(|&i| i as usize).collect(),
141141
None => (0..pos.len()).collect(),
142142
};
143-
for t in idxs.chunks_exact(3) {
143+
for t in idxs.as_chunks::<3>().0 {
144144
let (Some(&pa), Some(&pb), Some(&pc)) =
145145
(pos.get(t[0]), pos.get(t[1]), pos.get(t[2]))
146146
else {

0 commit comments

Comments
 (0)