Skip to content

Mark windows-ioring-sys breaking for the CallbackEnviron it exposes - #161

Merged
MikeGrier merged 1 commit into
mainfrom
mikegrier/ioring-callback-environ-marker
Oct 22, 2026
Merged

MikeGrier merged 1 commit into
mainfrom
mikegrier/ioring-callback-environ-marker

Conversation

@MikeGrier

Copy link
Copy Markdown
Owner

Summary

Marks windows-ioring-sys as breaking for the release PR (#160), and documents why.

EventDelivery::new and CompletionWake::new are public and take Option<&mut CallbackEnviron>, the type of the windows-threadpool-sys this crate depends on. The release PR moves that crate from 0.3 to 0.4 and proposes windows-ioring-sys 0.8.1. A client that builds a CallbackEnviron from its own 0.3 dependency would stop compiling against it. Copilot's review of #160 found this.

release-please's cargo-workspace plugin releases a dependent of a breaking crate as a patch, and no commit on the branch that merged the dependency carried the marker for this crate. The commit here is a fix(ioring)!: with a BREAKING CHANGE: footer, so the next release PR proposes 0.9.0 for it. It touches only crates/windows-ioring-sys.

The code change is two doc paragraphs, on both constructors, saying what env is and that a caller must build it with the version of windows-threadpool-sys this crate resolves to. They name no version, so they cannot go stale.

Audit

Every crate in the release PR that is on a compatible bump and has a normal dependency on a crate the same release breaks, checked for that crate's types in a public signature, field or re-export:

  • windows-ioring-sys: exposes CallbackEnviron (the two constructors). Fixed here.
  • win-multi-file-tail-watcher, windows-file-watcher, windows-platform-probes: none.
  • windows-thread-ambient-sys: depends on it as a dev-dependency only, so it cannot expose it.

The windows-threadpool-sys and win-sync-sys changes were already marked breaking.

Verification

cargo fmt, clippy with all targets, and rustdoc with broken intra-doc links denied pass for the crate, and tools/check-commit-scope.ps1 reports no multi-crate release commit.

Not in this PR: #160 also has a failing test in windows-platform-probes (build_identity::tests::this_crate_reads_its_own_stamps_not_the_placement_probes), which asserts that the two probe crates' versions differ, and both get 2026.1022.0 in that release. This PR does not change that.

…e 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>
Copilot AI balanced review requested due to automatic review settings October 22, 2026 18:21

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

Both documentation changes match the existing constructor contracts, with no unresolved blocking issues.

No open issues 🎉

What changed in this PR

Supports the breaking-release correction for windows-ioring-sys in #160 by documenting the dependency type exposed by its public constructors.

Changes:

  • Clarifies that both constructors accept CallbackEnviron from the windows-threadpool-sys version resolved by this crate.
  • Uses version-independent wording; no signatures or runtime behavior change.
File Description
crates/​windows-ioring-sys/​src/​event_delivery.rs Documents the environment type requirement for EventDelivery::new.
crates/​windows-ioring-sys/​src/​completion_wake.rs Adds the same clarification to CompletionWake::new.

Review effort: Balanced

@MikeGrier
MikeGrier merged commit 9b8a1db into main Oct 22, 2026
42 checks passed
@MikeGrier
MikeGrier deleted the mikegrier/ioring-callback-environ-marker branch October 22, 2026 19:38
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.

2 participants