Back to Ponyc

asio_event_t readable/writeable are load-bearing in the runtime on Windows, not stdlib-only state

.known-couplings/windows-readiness-readable-writeable.md

0.66.0890 B
Original Source

asio_event_t readable/writeable are load-bearing in the runtime on Windows, not stdlib-only state

Before the readiness rewrite the readable/writeable flags on asio_event_t were read and written only by the packages/net stdlib. On Windows they are now load-bearing in the runtime too: the sock_notify.c backend's one-shot readiness gating and the stdlib's re-arm path both read and write them, so they are the shared state that keeps a socket's edge-triggered readiness in step between the backend and the stdlib. Change how the backend gates on them, or treat them as stdlib-private state and stop maintaining them, and Windows sockets silently stop re-arming (reads or writes stall after the first readiness edge) — with no effect on POSIX, where the flags remain stdlib-only. Run on a Windows host: make test (stdlib-debug and stdlib-release — the net suite).