Skip to content

Fix Windows wheel build and inherited flow-control, typing, and profiling CI failures - #121

Merged
egorsmkv merged 2 commits into
masterfrom
fix/windows-poll-reader-snapshot-wait
Oct 14, 2026
Merged

egorsmkv merged 2 commits into
masterfrom
fix/windows-poll-reader-snapshot-wait

Conversation

@egorsmkv

@egorsmkv egorsmkv commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

The v0.1.65 Windows wheel build fails with E0308 because transport state now returns a SnapshotGuard, while Condvar::wait_timeout requires a standard MutexGuard. Use SnapshotMutex::wait_timeout in wait_for_poll_reader to publish dirty flags before unlocking and restore the wrapped guard after waiting.

This also repairs failures inherited from master (37a3d3f), discovered by PR CI:

  • The flow-control regression waited for resume_writing before starting a reader. On macOS the staged flush can leave the queue above low water, so the callback requires peer reads. Reproduced the deadlock on Linux by filling the kernel send buffer first; it is a test dependency on OS write boundaries, not evidence of a new transport defect. Start receiving after proving pause_writing occurred, exercise both write/writelines and close/write_eof with 4 KiB/128 KiB requested send buffers and empty/full kernel buffers, and verify exact delivery including the prefilled prefix.
  • Cast the native socket receive result to Future[bytes] and the protocol transport to asyncio.Transport, consistent with existing native tests.
  • Restore 56 feature-gated hotpath hooks omitted by the recent performance changes. The master and original PR syntax inventories are identical: 2157 definitions and 56 missing hooks. The repaired inventory has zero missing hooks, without weakening exclusions or disabling the audit.
  • Keep the zero-duration timed-wait regression and add a notified cross-thread wait verifying publication before unlock, observation of another thread's mutation, and publication through the returned guard.

Validation:

  • Full Pyright: 0 errors/warnings; targeted Ruff and cargo fmt/diff checks pass.
  • Flow-control/local socket tests: 44 passed on Linux CPython 3.12 and 3.14, including the allocation-profile build.
  • SnapshotMutex standalone Rust regressions: 3 passed; inventory parser: 3 passed; profiler lifecycle: 1 passed; profiler tooling: 15 passed.
  • Allocation-profile workload collection: 23/24 passed locally; Unix listener creation is denied by this container (EPERM). The local full Rust run has 358 passed and 15 failures because io_uring is denied (EPERM). Native CI is the authoritative validation for those paths.
  • Updated Tests CI: all 38 jobs passed, including all 24 Linux/macOS/Windows Python matrix jobs (3.10–3.15, 3.14t, 3.15t), both profile builds and every workload, Rust default/all-features, Clippy, Pyright, Miri, and native reactor checks: https://github.com/RustedBytes/rsloop/actions/runs/38601746624
  • Async ecosystem: passed: https://github.com/RustedBytes/rsloop/actions/runs/38601745151
  • The local full Python run had 670 passed, 12 skipped, and two EPERM failures at Unix socket creation; full tooling had 99 passed and one skipped. These container limitations do not occur in the passing native CI.

Release recovery: retain v0.1.65 at 37a3d3f. After this PR is green and merged, bump Cargo.toml/Cargo.lock/pyproject.toml/uv.lock together to 0.1.66 using Update Version. Verify the resulting master revision, manually run Tests and Wheels on that branch as validation and a build-only preflight, inspect all six platform wheel jobs and installed free-threaded checks, then create a new v0.1.66 tag at that exact revision. Tagged Wheels performs trusted PyPI publishing. Do not rerun the old tag to obtain patched sources. At the investigation time PyPI still has 0.1.64 as latest, no 0.1.65 files, and no 0.1.66 release; recheck version availability immediately before publishing. This PR does not merge, retag, or publish a release.

@egorsmkv egorsmkv changed the title Fix Windows wheel build after snapshot state refactor Fix Windows wheel build and inherited flow-control, typing, and profiling CI failures Oct 14, 2026
@egorsmkv
egorsmkv merged commit f045b7b into master Oct 14, 2026
44 checks passed
@egorsmkv
egorsmkv deleted the fix/windows-poll-reader-snapshot-wait branch October 14, 2026 18:36
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.

1 participant