Repository navigation
build!: require Rust 1.84 and let lint exceptions expire - #43
Merged
Merged
Conversation
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
marked this pull request as ready for review
October 13, 2026 17:51
This was referenced Oct 13, 2026
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
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 theallowonsysand on a probe'sprocess::exit, and the registry inxtask/src/gates.rsgoes.Clippy's
allow_attributesandallow_attributes_without_reasonand rustc'sunfulfilled_lint_expectationsdeny their cases, and the gate refuses everyallow, inner ones included.handle_valueandhandle_from_valuemove todomain::conversion_rulesand convert throughaddrandptr::without_provenance_mut, so noasremains.Kani proves the round trip for every
isize.With the byte offset from null, it refuted every symbolic negative value.
&raw mutand&raw const, asborrow_as_ptrrequires under the new MSRV.Commandsetters that only record a choice becomeconst fn, and the public API snapshot records them.cargo xtask msrv, the README, CONTRIBUTING, the changelog, and the migration guide name Rust 1.84..github/renovate.jsonkeeps 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.
Validation
windows_spawn_vectors, and on macOS.cargo xtask proofs kaniverified every proof, including the handle round trip for everyisize, and every negative control failed on its marker.cargo miri testpassed the library tests.fmt,clippy,gates,test,doc,cross-targets, andlinux-emptysteps ofcargo xtaskpassed.That machine has no Rust 1.84, so CI runs the MSRV step.
cargo xtask public-apimatches the updated snapshot.#[allow], itscfg_attrform, and#[expect]without a reason, but not an inner#![allow]with one.The gate's new test covers that form.
const _, so the twoLAYOUTnotes keep their reason with the new version.Checklist
conston nine setters, and the snapshot records it.