Skip to content

build!: require Rust 1.84 and let lint exceptions expire - #43

Merged
P4suta merged 1 commit into
mainfrom
build/msrv-1-84
Oct 13, 2026
Merged

P4suta merged 1 commit into
mainfrom
build/msrv-1-84

Conversation

@P4suta

@P4suta P4suta commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

Summary

Closes #42.

The crate now requires Rust 1.84, so its last three lint exceptions expire instead of sitting in a registry.

  • #[expect(lint, reason = "…")] replaces the allow on sys and on a probe's process::exit, and the registry in xtask/src/gates.rs goes.
    Clippy's allow_attributes and allow_attributes_without_reason and rustc's unfulfilled_lint_expectations deny their cases, and the gate refuses every allow, inner ones included.
  • handle_value and handle_from_value move to domain::conversion_rules and convert through addr and ptr::without_provenance_mut, so no as remains.
    Kani proves the round trip for every isize.
    With the byte offset from null, it refuted every symbolic negative value.
  • Pointers to locals that Windows reads or writes use &raw mut and &raw const, as borrow_as_ptr requires under the new MSRV.
  • Nine Command setters that only record a choice become const fn, and the public API snapshot records them.
  • The workspace uses resolver 3, and CI, cargo xtask msrv, the README, CONTRIBUTING, the changelog, and the migration guide name Rust 1.84.
  • .github/renovate.json keeps Renovate off the numeric Rust toolchain in CI, the MSRV pin.
    The organization's preset automerges minor updates, and the open build(deps): update all non-major dependencies #30 moves the MSRV check from Rust 1.75 to Rust 1.99.
  • ADR 0018 records the decision, and ADR 0013 and 0016 no longer describe a registry.

Validation

  • Clippy passed for x64, i686, and ARM64 Windows, with and without windows_spawn_vectors, and on macOS.
  • Rust 1.84 checked x64 and i686 Windows.
  • cargo xtask proofs kani verified every proof, including the handle round trip for every isize, and every negative control failed on its marker.
  • cargo miri test passed the library tests.
  • On Windows 11, the fmt, clippy, gates, test, doc, cross-targets, and linux-empty steps of cargo xtask passed.
    That machine has no Rust 1.84, so CI runs the MSRV step.
  • cargo xtask public-api matches the updated snapshot.
  • A probe crate showed that Clippy's two lints catch #[allow], its cfg_attr form, and #[expect] without a reason, but not an inner #![allow] with one.
    The gate's new test covers that form.
  • A probe crate showed that Rust 1.84 still counts no use inside const _, so the two LAYOUT notes keep their reason with the new version.

Checklist

  • The relevant local tests ran.
  • Deterministic tests cover each behavior change.
  • The docs state each new or changed ownership, safety, or cleanup contract.
  • The public API gains const on nine setters, and the snapshot records it.
  • The PR holds no secrets or public vulnerability details.
  • The PR stays focused and updates the relevant documentation.

Rust 1.84 has `#[expect]` with `reason =`, pointer `addr`, `&raw`, and a resolver that respects the MSRV, which Rust 1.75 lacks.
The `unsafe_code` of `sys` and a probe's `process::exit` become expectations with their reasons, and the registry in `xtask/src/gates.rs` goes.
Clippy refuses `#[allow]` and an exception without a reason, rustc fails an unmet expectation, and the gate refuses every `allow`.
A handle converts through `addr` and `ptr::without_provenance_mut` in `domain::conversion_rules`, where Kani proves the round trip for every `isize`.
Pointers to locals that Windows reads or writes use `&raw`, and the setters that only record a choice become `const fn`.
CI checks Rust 1.84 in place of Rust 1.75, and the workspace uses resolver 3.
A Renovate rule keeps the MSRV pin, which the organization's automerged minor updates would move to the newest release.
ADR 0018 records the decision.
@P4suta
P4suta marked this pull request as ready for review October 13, 2026 17:51
@P4suta
P4suta merged commit 9861774 into main Oct 13, 2026
32 checks passed
@P4suta
P4suta deleted the build/msrv-1-84 branch October 13, 2026 17:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

build!: require Rust 1.84 and let lint exceptions expire

1 participant