Skip to content

docs(design): async SSH pipe wrapper with read/write overlap (#1412)#4226

Merged
oferchen merged 1 commit into
masterfrom
docs/async-ssh-pipe-wrapper-design-1412
May 17, 2026
Merged

docs(design): async SSH pipe wrapper with read/write overlap (#1412)#4226
oferchen merged 1 commit into
masterfrom
docs/async-ssh-pipe-wrapper-design-1412

Conversation

@oferchen
Copy link
Copy Markdown
Owner

Summary

  • Adds docs/design/async-ssh-pipe-wrapper.md capturing the wrapper-level design for swapping the SSH subprocess stdio onto tokio::process::Child stdio with read/write overlap.
  • Compares tokio::process::ChildStdin/ChildStdout against a raw AsyncFd construction over the existing pipes and recommends the former.
  • Names what async actually adds over today's thread-per-half model (thread elimination for fan-out clients, collapsed stderr drain and connect watchdog, event-loop scheduling), and what it does not add (no fork/exec reduction, no io_uring socket fast path, no wire change).
  • Records a sync-vs-async bench matrix anchored on the 1 MB/s emulated link from Improve cross-compilation tooling autodetection #1889, plus LAN, slow-disk, and fan-out rows.
  • Recommendation: defer implementation until Normalize quoted fallback keywords #1935 (async daemon listener) lands so tokio runtime ownership is settled in one place before adding a second async I/O surface.

Test plan

Captures the wrapper-level design for swapping the SSH subprocess
stdio onto tokio::process::Child stdio. Records why tokio::process
is preferred over a raw AsyncFd construction, what async actually
buys beyond today's thread-per-half overlap (thread elimination,
collapsed stderr drain and connect watchdog), the parallel
AsyncSshConnection surface, a sync-vs-async bench matrix anchored
on the 1 MB/s emulated link from #1889, and a recommendation to
defer the implementation until the async daemon (#1935) lands so
runtime ownership is settled first.
@oferchen oferchen merged commit 609bb5f into master May 17, 2026
8 checks passed
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label May 17, 2026
oferchen added a commit that referenced this pull request May 18, 2026
…4226)

Captures the wrapper-level design for swapping the SSH subprocess
stdio onto tokio::process::Child stdio. Records why tokio::process
is preferred over a raw AsyncFd construction, what async actually
buys beyond today's thread-per-half overlap (thread elimination,
collapsed stderr drain and connect watchdog), the parallel
AsyncSshConnection surface, a sync-vs-async bench matrix anchored
on the 1 MB/s emulated link from #1889, and a recommendation to
defer the implementation until the async daemon (#1935) lands so
runtime ownership is settled first.
oferchen added a commit that referenced this pull request May 18, 2026
…4226)

Captures the wrapper-level design for swapping the SSH subprocess
stdio onto tokio::process::Child stdio. Records why tokio::process
is preferred over a raw AsyncFd construction, what async actually
buys beyond today's thread-per-half overlap (thread elimination,
collapsed stderr drain and connect watchdog), the parallel
AsyncSshConnection surface, a sync-vs-async bench matrix anchored
on the 1 MB/s emulated link from #1889, and a recommendation to
defer the implementation until the async daemon (#1935) lands so
runtime ownership is settled first.
@oferchen oferchen deleted the docs/async-ssh-pipe-wrapper-design-1412 branch May 19, 2026 19:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant