chore(deps): bump snafu 0.8 to 0.9, drop the obsolete rust_1_65 feature - #730
Merged
Conversation
added 3 commits
August 24, 2026 14:24
theatron and thumos are both already on snafu 0.9; harmonia was the last fleet repo on 0.8. The rust_1_65 feature is obsolete at 0.9 and goes with the bump. Two declaration sites, because there are two: the workspace dependency and periskopio's own pin in crates/theatron/desktop/Cargo.toml, which is excluded from the workspace and therefore cannot inherit. NOT VERIFIED LOCALLY, and that is deliberate rather than an omission. snafu 0.9 makes Location a type alias for core::panic::Location and changes how Whatever-wrapped errors are constructed, so the risk here is call sites rather than manifests. Static analysis found no Whatever usage and every Location site following the standard #[snafu(implicit)] derive pattern -- but static analysis is not a compiler. CI is the compiler for this. harmonia is public, its runner minutes are free, and this box is a 15 W laptop that thermally shuts down under the load a workspace check costs. Pushing to be judged is the correct verification path here, not a shortcut around one.
snafu 0.9 makes `snafu::Location` a type alias for
`&'static core::panic::Location<'static>`. std's Location exposes no public
`new`, so the eighty `snafu::Location::new(file!(), line!(), column!())` calls
across eighteen files stopped compiling:
error[E0599]: no function or associated item named `new` found
for reference `&'static Location<'static>`
`Location::caller()` returns exactly `&'static Location<'static>`, so it
type-checks against the same field. It carries #[track_caller], so inside a
closure whose enclosing function is not itself #[track_caller] it resolves to
that same site -- the substitution preserves what the old call recorded rather
than merely satisfying the compiler.
CI reported thirty sites; there are eighty. cargo stops at an error limit, so
the visible count was a floor rather than the set. The migration script asserts
found == replaced and refuses to write on a mismatch, because a partial pass
leaves a tree matching neither the before nor the after.
Verified after: no `Location::new` remains anywhere under crates/, and the
eighty new call sites are present.
The pattern was uniform -- a single spelling, no variants -- which is what made
a mechanical substitution the right tool rather than a rewrite to snafu's
context selectors. That larger refactor is worth doing separately, not inside a
dependency bump.
…ange fulfilled
`Check` passes now; clippy failed on something better than a break:
error: this lint expectation is unfulfilled
--> crates/kathodos/src/sidecar.rs:144:5
--> crates/kathodos/src/sidecar.rs:157:5
Both suppressed clippy::result_large_err, reasoning that "SidecarError is 136
bytes due to toml::de::Error". SidecarError is no longer that large. snafu 0.9
turns Location from a struct holding a &str, a line and a column into a single
&'static pointer, so every error variant carrying one shrank -- and the lint
these attributes suppress stopped firing.
An unfulfilled expectation covers nothing, and under -D warnings it is itself an
error, so the suppressions had to go rather than be kept "just in case". The
stated reason is now false as well: leaving it would tell the next reader the
type is 136 bytes when the compiler disagrees.
Removed rather than downgraded to #[allow]: allow would hide the same nothing
while never reporting when it started mattering again.
The 136-byte figure came from toml::de::Error, which is untouched here -- so the
shrink is entirely the Location change, and this is the second-order effect of
the eighty-site migration rather than an unrelated cleanup.
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.
theatron and thumos are both already on snafu 0.9; harmonia was the last fleet
repo on 0.8. The rust_1_65 feature is obsolete at 0.9 and goes with the bump.
Two declaration sites, because there are two: the workspace dependency and
periskopio's own pin in crates/theatron/desktop/Cargo.toml, which is excluded
from the workspace and therefore cannot inherit.
NOT VERIFIED LOCALLY, and that is deliberate rather than an omission. snafu 0.9
makes Location a type alias for core::panic::Location and changes how
Whatever-wrapped errors are constructed, so the risk here is call sites rather
than manifests. Static analysis found no Whatever usage and every Location site
following the standard #[snafu(implicit)] derive pattern -- but static analysis
is not a compiler.
CI is the compiler for this. harmonia is public, its runner minutes are free,
and this box is a 15 W laptop that thermally shuts down under the load a
workspace check costs. Pushing to be judged is the correct verification path
here, not a shortcut around one.