mirror of
https://github.com/Runnin4ik/dpi-detector.git
synced 2026-11-01 03:50:13 +00:00
The pin moves 1.98.1 -> 1.99.0, which is what the edition-2024 tree had been waiting on: `resolver = "3"` is read from `[workspace]` alone (a virtual workspace does not inherit it from the members' edition), and `rust-version = "1.99"` in `[workspace.package]`, opted in by both crates, is what gives v3's MSRV-aware pick something to filter by. `Cargo.lock` is untouched — the resolved set is the one 1.98.1 built, checked with `git diff` rather than assumed. Four rewrites the bump unlocked, each confirmed by the compiler rather than by a changelog: - `net/sysinfo/os.rs`: `chunk.len() == 16` + fallible `<&[u8; 16]>::try_from` is `chunk.as_array::<16>()` (1.93); - `screens/post_run.rs`: `strip_prefix(..).and_then(strip_suffix(..))` is `strip_circumfix(.., ..)` (1.98); - `state.rs`: the three attribute-gated `platform_dirs` wrappers are one `cfg_select!` block (1.95), the shape `classify/classifier.rs` already uses; - `net/sysinfo/mod.rs`: `from_utf8_lossy_owned` (1.99) at the one site that already owns a `Vec<u8>`. The other seven `from_utf8_lossy(..).into_owned()` sites cannot use it: the API consumes `Vec<u8>`, so a borrow would need `.to_vec()` — a copy rather than a saving. A review pass claimed six mechanical sites; the compiler refuted that in a minute, which is why the count is one. Docs that name the pin move with it (`README.md`, `docs/CI.md`, `docs/PROFILES_AND_PROVIDER.md`), and two recorded claims the pinned toolchain has outgrown are corrected rather than left to drift: §2.6's unwind-table mechanics (since 1.92 codegen emits `.eh_frame` under `panic = "abort"` on Linux by default, so `-C force-unwind-tables=no` is load-bearing — the release.yml comment said the opposite) and `.cargo/config.toml`'s `embed-metadata` note (on 1.99.0 the key is a parse error, `expected a table, but found a boolean for target.x86_64-pc-windows-msvc.embed-metadata`, where 1.98.1 called it an unused key; the lever is the nightly-only pair `cargo -Z embed-metadata` / `rustc -Z embed-metadata=val`, both listed by nightly-2026-09-17). §2.12 records what the router build flags are worth, measured on the real router targets with the workflow's own RUSTFLAGS, one tree and one difference per row: the bump itself +4 160 B (+0.1 %) and still not static-PIE; `-Z build-std` −5.2 %; `-Cpanic=immediate-abort` −11.4 % on top of that, −15.9 % against 1.99.0; `-Cjump-tables=no` −3.2 % on armv7 and −3.1 % on mipsel. The mechanism is read off the bytes: the shipped mipsel binary carries `panicked at`, `RUST_BACKTRACE`, `index out of bounds`, `capacity overflow` and source paths, while the immediate-abort armv7 binary carries none of them — one `panicked at ` fragment survives because `main.rs`'s panic hook calls `PanicHookInfo::to_string()`, which is both the residual size and the reason the strategy is not adopted: it takes the localized message, `dpi_detector_crash.log` and the terminal restore with it. None of the three lands here, and not for a size reason: the panic strategy is a product decision, and `-Cjump-tables=no` / `-Z build-std` either move a row onto a nightly toolchain or trade the row's stated priority (CPU first, then RSS, then size) for a size win whose CPU half is unmeasured. §2.12 states what a router pass of §2.6's shape would have to show for them to land. Also recorded there: the nightly pin and the cross image no longer agree for the MIPS rows. `ghcr.io/cross-rs/mipsel-unknown-linux-musl:0.2.5` ships glibc 2.27 while `nightly-2026-09-17`'s host `std` needs >= 2.30 (`gettid@GLIBC_2.30`, the thread ID 1.91 added to panic messages), so the row's build scripts cannot run inside the container — from this box and from CI alike, which mount the same toolchain into the same image. `nightly-2026-09-02` builds every mipsel row in §2.12, so the fix is the pin (four places, `docs/CI.md` §3) or the image. Verified: `cargo clippy --workspace --all-targets --locked` = 0 warnings, the `-p dpi-core --features live-network` clippy row = 0, `cargo test --workspace --locked` = 289 + 90 passed / 0 failed, `RUSTDOCFLAGS=-D warnings cargo doc` clean, a live `-t 2` run draws both columns, and `--json` parses into the same frozen shape. |
||
|---|---|---|
| .. | ||
| workflows | ||
| dependabot.yml | ||