From 78e19241cac1d58ce7a1a70080879344dd5c7115 Mon Sep 17 00:00:00 2001 From: Mike Grier Date: Thu, 22 Oct 2026 14:21:01 -0400 Subject: [PATCH] fix(ioring)!: say that EventDelivery::new and CompletionWake::new take windows-threadpool-sys' CallbackEnviron, and mark the breaking change Both constructors take Option<&mut CallbackEnviron>, the type of the windows-threadpool-sys this crate depends on, so a new version of that crate is a different parameter type here. The windows-threadpool-sys release that moves to 0.4 would otherwise reach this crate as a patch bump: release-please's cargo-workspace plugin releases a dependent of a breaking crate as a patch, and nothing on the branch that merged the dependency carried the marker. This commit carries it, and documents on both constructors what the type is and which version a caller must build it with. Found by the Copilot review of the release pull request. Swept the other crates that depend on a crate this release breaks, for the same exposure: win-multi-file-tail-watcher, windows-file-watcher, windows-platform-probes and windows-thread-ambient-sys (a dev-dependency only) expose none of its types in a public signature, field or re-export. BREAKING CHANGE: EventDelivery::new and CompletionWake::new take the CallbackEnviron of the windows-threadpool-sys 0.4 this crate now depends on, which is not the CallbackEnviron of the 0.3 it depended on; a caller that builds one passes the one from the version this crate resolves to. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- crates/windows-ioring-sys/src/completion_wake.rs | 5 ++++- crates/windows-ioring-sys/src/event_delivery.rs | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/windows-ioring-sys/src/completion_wake.rs b/crates/windows-ioring-sys/src/completion_wake.rs index 75adc57bb..d9f2e7d34 100644 --- a/crates/windows-ioring-sys/src/completion_wake.rs +++ b/crates/windows-ioring-sys/src/completion_wake.rs @@ -57,7 +57,10 @@ impl CompletionWake { /// (`M4.2`, `M26.9`, `M26.12`). /// /// `env` binds the wait's pool -- to a NUMA node's, for instance; `None` is the process's - /// default pool. + /// default pool. It is [`windows_threadpool_sys::callback_env::CallbackEnviron`], the type of + /// the `windows-threadpool-sys` this crate depends on: another version of that crate has + /// another `CallbackEnviron`, so a caller builds the environment with the version this crate + /// resolves to. /// /// # Errors /// diff --git a/crates/windows-ioring-sys/src/event_delivery.rs b/crates/windows-ioring-sys/src/event_delivery.rs index 5d99c488d..2b54a0008 100644 --- a/crates/windows-ioring-sys/src/event_delivery.rs +++ b/crates/windows-ioring-sys/src/event_delivery.rs @@ -148,6 +148,11 @@ impl EventDelivery { /// Neither makes the ring a synchronization provider: its lock is its /// own, and a callback holds it only for as long as a scope it opens. /// + /// `env` is [`windows_threadpool_sys::callback_env::CallbackEnviron`], the + /// type of the `windows-threadpool-sys` this crate depends on. Another + /// version of that crate has another `CallbackEnviron`, so a caller builds + /// the environment with the version this crate resolves to. + /// /// # Errors /// /// Returns [`io::ErrorKind::Unsupported`] if the running system does not