build: bump nightly to 2026-07-06 and migrate chunks_exact to as_chunks#537
Merged
Conversation
…rop dead index suppressions Migrate all 35 `chunks_exact(2)` call sites in the NTFS parser to `as_chunks::<2>()`, ahead of the upcoming-nightly `chunks_exact`-with- constant-size clippy lint (nightly-canary #492, item 2). Verified on the pinned toolchain, not blind: the floating nightly can't build locally (ring 0.17.14 aarch64-apple const-eval, #492 item 1), but `as_chunks` is stable on our pin and clears the lint by construction. This is a net reduction in unsafe-shaped code, not just lint churn: each `&[u8]` chunk becomes a `&[u8; 2]` array, so the mapping closures drop their fallible `try_into().ok()` / `map_or(0, ..)` paths and their `[c[0], c[1]]` reindexing in favour of `u16::from_le_bytes(*c)`. As a result 7 lint suppressions become unnecessary and are removed: * 2× `#[expect(missing_asserts_for_indexing)]` whose reason cited `chunks_exact(2)` (attribute_helpers) * 5× now-unfulfilled `missing_asserts_for_indexing` expectations (module-level in direct_index/direct_index_extension; trimmed from the combined `indexing_slicing` attrs in io/parser index/ index_extension/fragment, keeping the still-live indexing_slicing). Verified: native clippy + xwin (windows-msvc) clippy clean with zero unfulfilled expectations, `cargo nextest run -p uffs-mft` 264 pass, rustdoc -D warnings clean. Addresses the lint half of #492. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…udited) Two dependency bumps, each with a proper cargo-vet delta audit anchored on the previously-trusted version (no blanket exemption bump). * rustc-hash 2.1.2 -> 2.1.3: pure-safe Default-impl refactor (macro -> derive(Default)/derive_const(Default), upstream #77); the rand 0.8 -> 0.9 change is confined to the optional random_state feature, which this workspace does not enable, so it never enters the build. Zero unsafe delta. * crossbeam-channel 0.5.15 -> 0.5.16: constify never()/Channel::new() (#1250), a select! matcher tweak for rust-analyzer completion (#1240, semantically equivalent), and an internal std::sync::Mutex -> crate::utils::Mutex swap. Zero unsafe delta, no dependency or build script changes. Both audits recorded in supply-chain/audits.toml as safe-to-deploy; `cargo vet` passes. Vet-Reviewed-Diff: rustc-hash@2.1.2->2.1.3 Vet-Reviewed-Diff: crossbeam-channel@0.5.15->0.5.16 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The install examples still said `= "0.5"`, a caret range (>=0.5.0,<0.6.0) that resolves to the old 0.5.120 — not the 0.6.x we're about to publish. Copy-pasting off crates.io would pull a stale version. Bump both to "0.6".
The crates.io OIDC publish job was wired to release-plz's own release
detection (`needs: release-plz-release` + `releases_created`), and
release-plz.yml only ran on workflow_dispatch. But releases here are cut
by the ship pipeline (`just ship` → `just release-tag` pushes a signed
`v*` tag), which release-plz never claims — so the publish job was never
reached, leaving crates.io stuck at 0.5.120 while the workspace shipped
0.6.x.
Re-wire so the publish carries along with every ship release:
* add a `push: tags: ['v*']` trigger (the same tags release.yml builds
binaries for; `just release-tag` pushes them with a real credential,
so the trigger fires — GITHUB_TOKEN anti-loop doesn't apply);
* gate the crates-io-publish job on the tag ref + ENABLE_CRATES_IO_PUBLISH,
dropping the release-plz `releases_created` dependency (its checkout
resolves to the tag, so cargo publishes the released version);
* keep release-pr / release jobs workflow_dispatch-only so a tag push
runs only the publish job.
The job stays in release-plz.yml with the `crates.io-publish` environment,
so the existing crates.io trusted-publisher registration is unchanged.
Verified: actionlint clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Both blockers tracked in #492 are cleared on this nightly: * ring 0.17.14 const-eval assertion no longer fires — verified: ring compiles clean for BOTH aarch64-apple host and x86_64-pc-windows-msvc (the Windows-msvc ring breakage from the 06-27..30 nightly window is gone); * the new `chunks_exact` clippy lint is handled by the earlier `as_chunks::<2>()` migration in this branch. The new nightly feature-gated `core::io::Error` / `ErrorKind` (rust-lang/rust#103765, #154046), so `std::io::*` is re-exported from the still-incomplete `core::io`. Two consequences, both fixed here: * clippy's `std_instead_of_core` no longer fires on `std::io::*` — removed 10 now-unfulfilled `#[expect(std_instead_of_core)]` (security, client, daemon, mft). No `#[allow]`, no downgrade: the code correctly stays on `std::io::*` (only stable spelling; `core::io::Error` needs the unstable `error_in_core` feature). * rustdoc intra-doc links: qualified 17 `io::{Error,ErrorKind,Result}` links to explicit `std::io::` and degraded the one unresolvable `std::io::Error::other` method link to a plain code span (the std-only `::other` fn isn't resolvable through the core::io re-export yet). All 8 pinned components (rustc, cargo, rustfmt, clippy, rust-src, rust-analyzer, llvm-tools, miri) are available for the new date. Verified on nightly-2026-07-06: host + xwin(windows-msvc) clippy --workspace --all-targets --all-features -D warnings clean, rustdoc -D warnings clean, affected-crate tests 853 pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Summary
Five commits, all validated on the new pinned nightly (host + windows-msvc clippy
-D warnings, rustdoc, doctests, tests — the full pre-push gate is green):refactor(uffs-mft)— migrate all 35chunks_exact(2)sites toas_chunks::<2>(); net −7 lint suppressions (each&[u8]chunk becomes&[u8; 2], dropping fallibletry_into().ok()and[c[0], c[1]]reindexing). Handles thechunks_exact-lint half of 🐤 Nightly Canary: upcoming-toolchain regression — f6aab89 #492.build(deps)— bumprustc-hash2.1.3 +crossbeam-channel0.5.16, each with a proper cargo-vet delta audit (Vet-Reviewed-Diff:trailers;cargo vet+ discipline gate pass).docs(crates)— fixuffs-time/uffs-textREADME install snippet"0.5"→"0.6".ci(release)— publish crates.io onv*release tags via OIDC, so the ship pipeline's release tag carries theuffs-time/uffs-textpublish (no long-lived token; therelease-plz.yml+crates.io-publishtrusted-publisher registration is unchanged).build(toolchain)— bump pinned nightly 2026-06-26 → 2026-07-06. Clears the ring half of 🐤 Nightly Canary: upcoming-toolchain regression — f6aab89 #492 (ring 0.17.14 compiles clean for aarch64-apple and x86_64-pc-windows-msvc). The new nightly feature-gatedcore::io::Error/ErrorKind, sostd::io::*re-exports from the incompletecore::io— removed 10 now-dead#[expect(std_instead_of_core)]and qualified 17io::intra-doc links tostd::io::(the one unresolvable::othermethod link → code span). No#[allow], no skips — every fix removes a suppression or corrects a path.Release
Version bump + crates.io publish are intentionally not in this PR — they ride the normal
just shipflow frommainafter merge (version branch →just release-tag→release.ymlbinaries + the re-wired OIDC crates publish at 0.6.24).Closes #492.
🤖 Generated with Claude Code