Align packaging with side-by-side installs and amd64 tarball naming#1874
Merged
Conversation
This was referenced May 1, 2026
oferchen
added a commit
that referenced
this pull request
May 2, 2026
Fixes fmt+clippy CI failure from the prior commit on this PR. No code behavior changes, formatting only.
oferchen
added a commit
that referenced
this pull request
May 2, 2026
`revents` is i16 and `libc::POLLOUT` is `c_short` (i16) on Linux, so the cast to i32 produced a `BitAnd<i16>` mismatch. Both sides are already i16; remove the cast.
oferchen
added a commit
that referenced
this pull request
May 2, 2026
…1874) clippy::useless_vec was triggered by `vec![false; N]` for fixed-size local trackers in `many_interleaved_ops_demux_independently`. Switch to `[false; N]` arrays so the test compiles under -D warnings.
oferchen
added a commit
that referenced
this pull request
May 2, 2026
* feat(fast_io): merge reader+writer onto shared io_uring (#1874) Adds `SharedRing`, a single io_uring instance that services both a reader fd and a writer fd in the same session. Submits `IORING_OP_READ` against the registered reader fd and uses `IORING_OP_POLL_ADD` (POLLOUT) on the writer fd so a slow consumer never blocks the shared CQ; the follow-up `IORING_OP_SEND` is then queued only when the kernel signals readiness. Completions are demuxed in arrival order via a 64-bit `user_data` tag (`OpTag` in the high 8 bits, op_id in the low 56), mirroring the io_loop+select() pattern in upstream rsync io.c:perform_io. The new module is wired through the live `io_uring` module and the non-Linux `io_uring_stub.rs` so callers can name the types unconditionally; `SharedRing::try_new` returns `None` on kernels < 5.6, when seccomp blocks the syscall, when the io_uring feature is off, or when the kernel does not report `IORING_OP_POLL_ADD` in its probe set, leaving the existing per-channel ring path and the standard buffered I/O path as the documented fallbacks. The audit at docs/audits/shared-iouring-session-instance.md is updated to mark step 4 of the rollout as shipped. Tests in crates/fast_io/tests/io_uring_shared_ring.rs cover tag round-trip on every platform, end-to-end read + poll-write + send concurrency on a single ring under Linux (skipped at runtime when io_uring is unavailable), interleaved demux of four reads with two polls, and confirmation that the per-channel `socket_writer_from_fd` fallback continues to function while the shared ring is in use. * style(fast_io): apply cargo fmt to io_uring_shared_ring tests (#1874) Fixes fmt+clippy CI failure from the prior commit on this PR. No code behavior changes, formatting only. * fix(fast_io): drop unnecessary i32 cast in POLLOUT bitand (#1874) `revents` is i16 and `libc::POLLOUT` is `c_short` (i16) on Linux, so the cast to i32 produced a `BitAnd<i16>` mismatch. Both sides are already i16; remove the cast. * fix(fast_io): use array literal instead of vec! in test seen-tracker (#1874) clippy::useless_vec was triggered by `vec![false; N]` for fixed-size local trackers in `many_interleaved_ops_demux_independently`. Switch to `[false; N]` arrays so the test compiles under -D warnings.
oferchen
added a commit
that referenced
this pull request
May 5, 2026
* feat(fast_io): merge reader+writer onto shared io_uring (#1874) Adds `SharedRing`, a single io_uring instance that services both a reader fd and a writer fd in the same session. Submits `IORING_OP_READ` against the registered reader fd and uses `IORING_OP_POLL_ADD` (POLLOUT) on the writer fd so a slow consumer never blocks the shared CQ; the follow-up `IORING_OP_SEND` is then queued only when the kernel signals readiness. Completions are demuxed in arrival order via a 64-bit `user_data` tag (`OpTag` in the high 8 bits, op_id in the low 56), mirroring the io_loop+select() pattern in upstream rsync io.c:perform_io. The new module is wired through the live `io_uring` module and the non-Linux `io_uring_stub.rs` so callers can name the types unconditionally; `SharedRing::try_new` returns `None` on kernels < 5.6, when seccomp blocks the syscall, when the io_uring feature is off, or when the kernel does not report `IORING_OP_POLL_ADD` in its probe set, leaving the existing per-channel ring path and the standard buffered I/O path as the documented fallbacks. The audit at docs/audits/shared-iouring-session-instance.md is updated to mark step 4 of the rollout as shipped. Tests in crates/fast_io/tests/io_uring_shared_ring.rs cover tag round-trip on every platform, end-to-end read + poll-write + send concurrency on a single ring under Linux (skipped at runtime when io_uring is unavailable), interleaved demux of four reads with two polls, and confirmation that the per-channel `socket_writer_from_fd` fallback continues to function while the shared ring is in use. * style(fast_io): apply cargo fmt to io_uring_shared_ring tests (#1874) Fixes fmt+clippy CI failure from the prior commit on this PR. No code behavior changes, formatting only. * fix(fast_io): drop unnecessary i32 cast in POLLOUT bitand (#1874) `revents` is i16 and `libc::POLLOUT` is `c_short` (i16) on Linux, so the cast to i32 produced a `BitAnd<i16>` mismatch. Both sides are already i16; remove the cast. * fix(fast_io): use array literal instead of vec! in test seen-tracker (#1874) clippy::useless_vec was triggered by `vec![false; N]` for fixed-size local trackers in `many_interleaved_ops_demux_independently`. Switch to `[false; N]` arrays so the test compiles under -D warnings.
4 tasks
2 tasks
oferchen
added a commit
that referenced
this pull request
May 17, 2026
… (#4285) Audits whether prerequisites for #1876 have landed and proposes splitting the work into reviewable subtasks (#1876-a through e). - #1874 (shared ring + POLL_ADD) shipped via PR #3553. - #1937 (session ring pool) shipped via PR #4275. - #1935 (hybrid tokio listener) shipped via PR #4278. - No io_uring task carries id #1875; the original dependency note most plausibly meant the session-pool and listener work above. Missing surface enumerated: pooled-ring constructors on the socket adapters, daemon plumbing for SessionRingPool, sync and async worker swaps, IORING_OP_LINK_TIMEOUT integration, and async-cancel discipline. Trigger conditions (kernel >= 5.6, io_uring feature, opt-in flag) and a five-step implementation plan included.
oferchen
added a commit
that referenced
this pull request
May 18, 2026
… (#4285) Audits whether prerequisites for #1876 have landed and proposes splitting the work into reviewable subtasks (#1876-a through e). - #1874 (shared ring + POLL_ADD) shipped via PR #3553. - #1937 (session ring pool) shipped via PR #4275. - #1935 (hybrid tokio listener) shipped via PR #4278. - No io_uring task carries id #1875; the original dependency note most plausibly meant the session-pool and listener work above. Missing surface enumerated: pooled-ring constructors on the socket adapters, daemon plumbing for SessionRingPool, sync and async worker swaps, IORING_OP_LINK_TIMEOUT integration, and async-cancel discipline. Trigger conditions (kernel >= 5.6, io_uring feature, opt-in flag) and a five-step implementation plan included.
oferchen
added a commit
that referenced
this pull request
May 18, 2026
… (#4285) Audits whether prerequisites for #1876 have landed and proposes splitting the work into reviewable subtasks (#1876-a through e). - #1874 (shared ring + POLL_ADD) shipped via PR #3553. - #1937 (session ring pool) shipped via PR #4275. - #1935 (hybrid tokio listener) shipped via PR #4278. - No io_uring task carries id #1875; the original dependency note most plausibly meant the session-pool and listener work above. Missing surface enumerated: pooled-ring constructors on the socket adapters, daemon plumbing for SessionRingPool, sync and async worker swaps, IORING_OP_LINK_TIMEOUT integration, and async-cancel discipline. Trigger conditions (kernel >= 5.6, io_uring feature, opt-in flag) and a five-step implementation plan included.
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.
Summary
Testing
https://chatgpt.com/codex/tasks/task_e_6905ff49a6fc83239a9bc99990cc1703