diff --git a/docs/adr/0018-lint-exceptions-expire-and-the-msrv-is-rust-1-84.md b/docs/adr/0018-lint-exceptions-expire-and-the-msrv-is-rust-1-84.md index 31effda..a76aa31 100644 --- a/docs/adr/0018-lint-exceptions-expire-and-the-msrv-is-rust-1-84.md +++ b/docs/adr/0018-lint-exceptions-expire-and-the-msrv-is-rust-1-84.md @@ -9,9 +9,12 @@ A registered exception could still outlive its need, and three remained: the `un Rust 1.75 also has no pointer `addr`, so reading a handle's value took `as`, and the FFI calls borrowed each local as a reference before it became a pointer. Rust 1.84 has `#[expect]` with `reason =`, `addr` and `ptr::without_provenance_mut`, `&raw mut`, and a resolver that keeps dependencies within the MSRV. +windows-sys 0.61, the crate's only Windows dependency, requires Rust 1.71, and the `windows` crate 0.62 requires Rust 1.82. +windows-spawn adds convenience over these bindings, so a project that must build with an older Rust can call windows-sys directly. + ## Decision -- The MSRV is Rust 1.84. +- The MSRV is Rust 1.84, and only the maintainer moves it. - Every lint exception is an `#[expect(lint, reason = "…")]` on the one item it concerns. Clippy's `allow_attributes` and `allow_attributes_without_reason` refuse an `#[allow]` and an exception without a reason. `unfulfilled_lint_expectations` fails an exception the code no longer needs. @@ -27,9 +30,11 @@ Rejected: - Rust 1.75 and its registry, which can't tell when an exception stops applying. - Rust 1.81, which has `#[expect]` but not `addr`, so reading a handle's value would keep `as`. +- Rust 1.82, the MSRV of the `windows` crate, for the same reason. +- An MSRV that follows windows-sys, which would keep the registry for projects that can call windows-sys directly. ## Consequences -- A project on a Rust older than 1.84 stays on windows-spawn 0.1. +- A project on a Rust older than 1.84 stays on windows-spawn 0.1 or calls windows-sys directly. - The `Command` setters that only record a choice are `const fn`, which Rust 1.83 allows for `&mut self`. - No `allow` remains in the repository.