Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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.
Loading