Repository navigation
Preserve UDP packet boundaries and addresses in the executor - #123
Closed
proggeramlug wants to merge 1 commit into
Closed
proggeramlug wants to merge 1 commit into
proggeramlug wants to merge 1 commit into
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
proggeramlug
force-pushed
the
codex/wasi-receive-shutdown
branch
from
October 23, 2026 18:50
605ee21 to
8a584f7
Compare
proggeramlug
force-pushed
the
codex/wasi-datagram-adapter
branch
from
October 23, 2026 18:50
b63a4ee to
8d1c608
Compare
proggeramlug
added a commit
that referenced
this pull request
Nov 8, 2026
…d shared stdio Upstreams the provider repairs Perry has been carrying as a patched copy of alpha.10, so its WASI provider, native async and concurrent HTTP paths can run on a published turnloop. - ExecutorHandle::connect_bound and Backend::open_bound_tcp: connect an explicitly bound, not-yet-connected native TCP socket through the driver (Unix and IOCP), keeping its local address. - AsyncIo::shutdown_receive: shut down the receive side of a stream without disturbing writes in flight; refused while a read is pending. - AsyncDatagram and ExecutorHandle::datagram: an executor adapter that keeps UDP packet boundaries and source addresses. - backend::stdio: overlapping handles on one Unix stdio descriptor share its ownership, so closing one does not reset the settings another relies on. - Keepalive parameter setters on Unix, IOCP and WASI use the shared validation helpers without changing whether keepalive is enabled. The IOCP unit tests move to backend/iocp/tests.rs; no test is dropped. Supersedes #119, #120, #121, #122 and #123.
proggeramlug
added a commit
that referenced
this pull request
Nov 8, 2026
…d shared stdio Upstreams the provider repairs Perry has been carrying as a patched copy of alpha.10, so its WASI provider, native async and concurrent HTTP paths can run on a published turnloop. - ExecutorHandle::connect_bound and Backend::open_bound_tcp: connect an explicitly bound, not-yet-connected native TCP socket through the driver (Unix and IOCP), keeping its local address. - AsyncIo::shutdown_receive: shut down the receive side of a stream without disturbing writes in flight; refused while a read is pending. - AsyncDatagram and ExecutorHandle::datagram: an executor adapter that keeps UDP packet boundaries and source addresses. - backend::stdio: overlapping handles on one Unix stdio descriptor share its ownership, so closing one does not reset the settings another relies on. - Keepalive parameter setters on Unix, IOCP and WASI use the shared validation helpers without changing whether keepalive is enabled. The IOCP unit tests move to backend/iocp/tests.rs; no test is dropped. Supersedes #119, #120, #121, #122 and #123.
Contributor
Author
|
Superseded by #131, which upstreams all of Perry's provider repairs (merged). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
WASI UDP needs packet boundaries, sender addresses and empty packets. The existing futures-io adapter discards source addresses and treats empty writes as no-ops.
Add
ExecutorHandle::datagramandAsyncDatagram, with independently owned receive/send slots,poll_recv_from,poll_send_to, flush/close and receive cancellation. Pending operations retain only executor staging memory. Receives discard truncated tails; sends reject oversized payloads before native submission and never split packets. A pending send consumes none of that call's bytes or destination. Dropping or cancelling retains native buffer ownership through terminal acknowledgement. Existing stream adapters remain available.Validation: Linux passes 198 core/contract tests and three doctests, including three new shared datagram contracts, plus the three contracts in release. macOS passes the three contracts and a warmed allocation gate. WASI 0.2 passes all 56 contracts in both debug and release under checksum-pinned Wasmtime 46.0.0, plus the new allocation gate in release. Linux/macOS/WASI 0.2 all-target core/contract Clippy passes with warnings and undocumented unsafe blocks denied. The allocation gate requires zero allocations for 1,000 warmed exchanges, alternating empty and nonempty packets. Packet tests cover IPv4/IPv6, exact 65,507-byte payloads (with an explicit sufficient OS send buffer), peer identity, receive cancellation and buffer replacement, truncation, rejected oversize sends and replacement destinations after Pending.
Stacked on #122. No dependency, feature or release changes. The full required matrix is green on b63a4ee, including Windows, both WASI targets, all native modes, protocol, Miri, Loom, instruction and dependency gates: CI run. Remains draft pending the complete Perry WASI integration.