chore(deps): update the dependency graph; hold egui at 0.35 (upstream wasm break) - #397
Conversation
… wasm break) Consolidates the five open Dependabot PRs. Two are adopted, one is a CI action pin, and three are declined on evidence rather than deferred. ADOPTED. `cargo update` across the whole graph — roughly 80 crates, all semver-compatible, no source changes required: `anyhow` 1.0.103 -> 1.0.104, `cc` 1.4.0 -> 1.4.3, `cpal` 0.18.1 -> 0.18.2, the `futures-*` family 0.3.33 -> 0.3.34, the `icu_*` family 2.2 -> 2.3, `http` 1.4.2 -> 1.5.0, `bstr`, `camino`, `clang-sys`, `darling`, `either` and the rest. Plus `taiki-e/install-action` v2.85.10 -> v2.85.13 at both call sites in `security.yml` (#387). DECLINED, with the reason established by experiment: egui / egui-wgpu / egui-winit 0.35 -> 0.36.1 (#389, #390, #391). `egui-winit` 0.36.1 does not compile for `wasm32-unknown-unknown`, and RustyNES ships a wasm demo. error[E0407]: method `bytes` is not a member of trait `egui::DroppedFile` --> egui-winit-0.36.1/src/dropped_file.rs:19:5 The mechanism, since "blocked upstream" is not a diagnosis. egui 0.36 made `DroppedFile` a trait and split it by target: `bytes_async` on wasm (files can only be read asynchronously in a browser), `bytes` on native. Upstream issue #8354, now closed, is the change that introduced it. `egui-winit`'s `NativeFile` impl provides `path` + `bytes` with NO cfg gate, on a type that holds a `PathBuf` and calls `std::fs::read` — inherently native. On wasm it therefore implements a method the trait does not declare and omits the one it does. Nothing on our side can route around it. `mod dropped_file;` is unconditional in egui-winit's `lib.rs` — not feature-gated, not target-gated — so the module compiles on wasm whatever we do, and the fix belongs upstream (a one-line cfg on the module and its `use`). No release carries it: 0.36.1 is still the newest `egui-winit` on crates.io. `wgpu` is held at 29 for the same reason: `egui-wgpu` 0.35 pins it, so 29 -> 30 cannot land ahead of the egui tier. This confirms rather than assumes the note in `AGENTS.md` (added when the migration was first attempted and parked on `chore/egui-0.36-wgpu-30-blocked`). I re-ran the build instead of trusting it, because a "blocked" note is exactly the kind of claim that silently goes stale — and the useful output of re-checking is the specific method name a future attempt needs, `bytes_async`, rather than a bare verdict. Verified: workspace clippy, all four native feature combinations plus `full`, BOTH wasm32 targets, rustdoc with warnings denied, the `no_std` cross-build, 124 workspace test binaries, and `cargo deny check` (advisories ok, bans ok, licenses ok, sources ok).
|
Important Review available on request
Reviews should be triggered manually for repositories with fewer than 10 stars. Select Trigger review above or comment ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
This PR consolidates several Dependabot updates into a single dependency-graph refresh, updating the workspace lockfile while explicitly keeping the egui stack pinned at 0.35 due to an upstream wasm build break in egui-winit 0.36.x. It also bumps the taiki-e/install-action GitHub Action used by the security workflow.
Changes:
- Refreshes the Rust dependency graph via lockfile updates while keeping
egui,egui-winit, andegui-wgpuat0.35.0andwgpuat29.0.4. - Updates
.github/workflows/security.ymlto usetaiki-e/install-action@v2.85.13in both the audit and cargo-deny jobs.
Reviewed changes
Copilot reviewed 1 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
.github/workflows/security.yml |
Bumps taiki-e/install-action to v2.85.13 for the security audit/deny jobs. |
Cargo.lock |
Updates the resolved dependency graph while keeping the egui/wgpu versions pinned (egui 0.35 / wgpu 29). |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Review suggestion, taken. The reason egui / egui-wgpu / egui-winit are held at 0.35 was in the commit body and the PR — neither of which anyone reads while editing `Cargo.toml`, which is exactly where the next person (or the next `cargo update --aggressive`) will decide to move them. The comment carries the failing error verbatim, the mechanism (egui 0.36 split `DroppedFile` by target — `bytes_async` on wasm, `bytes` on native — and `egui-winit`'s `NativeFile` impl provides `path` + `bytes` with no cfg gate, so on wasm it implements a method the trait does not declare and omits the one it does), why nothing on our side can route around it (`mod dropped_file;` is unconditional in egui-winit's `lib.rs`), and how to re-check: bump it and run both wasm clippy invocations. `wgpu`'s 29 pin gets a line saying it is a consequence of the egui tier rather than anything wgpu did. No dependency change; comments only.
|
Antigravity review addressed. Suggestion — document the egui 0.35 hold in The comment now carries the failing error verbatim, the mechanism (egui 0.36 Blocking issues — none found. Agreed. |
Review made the point that matters: a comment in `Cargo.toml` explains why the pin exists, and Dependabot cannot read it. It would keep re-opening the same three PRs every Monday. The risk is not the noise. It is that the twentieth identical `bump egui from 0.35.0 to 0.36.x` gets merged on the assumption it is routine -- which is exactly how a pin with a real reason behind it gets undone. `ignore` entries for egui, egui-wgpu, egui-winit (`>=0.36`) and wgpu (`>=30`), carrying the failing error and the mechanism, and saying plainly that this is a HOLD and not a policy: remove all four once upstream ships the one-line cfg, and re-check by bumping and running both wasm clippy invocations. Also raised: whether the `ureq` update pulling in `base64` 0.23.1 alongside the existing 0.22.1 would trip `cargo deny`'s duplicate-version check. Verified rather than assumed -- `cargo deny check` reports `advisories ok, bans ok, licenses ok, sources ok`.
|
Both suggestions addressed. Dependabot
|
Antigravity review (Gemini via Ultra)Updates the dependency graph while pinning Blocking issuesNone found. Suggestions
Nitpicks
Automated first-pass review by |
Summary
Consolidates the five open Dependabot PRs into one graph update. Two are
adopted, one is a CI action pin, and three are declined on evidence rather
than deferred.
Supersedes #387, #388, #389, #390, #391 — all five to be closed on merge.
Adopted
cargo updateacross the whole graph: roughly 80 crates, all semver-compatible,no source changes required.
anyhow1.0.103 → 1.0.104,cc1.4.0 → 1.4.3,cpal0.18.1 → 0.18.2, thefutures-*family 0.3.33 → 0.3.34, theicu_*family 2.2 → 2.3,
http1.4.2 → 1.5.0, plusbstr,camino,clang-sys,darling,either,inotifyand the rest.Plus #387:
taiki-e/install-actionv2.85.10 → v2.85.13 at both call sites insecurity.yml.Cargo.tomlitself is unchanged apart from nothing — every adopted bump is alockfile move within the existing ranges.
Declined, with the reason established by experiment
#389 / #390 / #391 — egui, egui-wgpu, egui-winit 0.35 → 0.36.1.
egui-winit0.36.1 does not compile forwasm32-unknown-unknown, and RustyNESships a wasm demo:
The mechanism, since "blocked upstream" is not a diagnosis. egui 0.36 turned
DroppedFileinto a trait and split it by target:bytes_asyncon wasm(a browser can only read a dropped file asynchronously),
byteson native.egui-winit'sNativeFileimpl providespath+byteswith no cfg gate,on a type that holds a
PathBufand callsstd::fs::read— inherently native.On wasm it therefore implements a method the trait does not declare and omits
the one it does.
Nothing on our side can route around it:
mod dropped_file;is unconditional inegui-winit's
lib.rs, so the module compiles on wasm whatever we do. The fix isa one-line cfg upstream. No release carries it — 0.36.1 is still the newest
egui-winiton crates.io.wgpuis held at 29 for the same reason:egui-wgpu0.35 pins it, so 29 → 30cannot land ahead of the egui tier.
This confirms rather than assumes the note in
AGENTS.md(added when themigration was first attempted and parked on
chore/egui-0.36-wgpu-30-blocked).I re-ran the build instead of trusting it, because a "blocked" note is exactly
the kind of claim that goes stale silently — and the useful output of
re-checking is the specific method name a future attempt needs,
bytes_async,rather than a bare verdict.
Verification
cargo clippy --workspace --all-targets -- -D warningsscripting/scripting,hd-pack/retroachievements/fullwasm32-unknown-unknown(default andwasm-canvas)RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-depscargo build -p rustynes-core --target thumbv7em-none-eabihf --no-default-featurescargo deny checkNo emulation-core source changed, so the accuracy contract is unaffected by
construction; the full suite ran regardless.