docs(design): async runtime evaluation for SSH transport (#1411)#4194
Merged
Conversation
Add docs/design/async-ssh-evaluation.md, the focused evaluation that backs the Phase 3 SSH-transport recommendation in the async migration plan. Documents the current subprocess-pipe path, what async overlap actually buys, the integration boundary and spawn_blocking surfaces, and the embedded-russh-vs-subprocess tradeoff. Recommends embedded russh as the first async SSH target since the internal futures already exist and it eliminates fork+execve per connection; defers async subprocess until embedded is proven.
This was referenced May 17, 2026
oferchen
added a commit
that referenced
this pull request
May 18, 2026
Add docs/design/async-ssh-evaluation.md, the focused evaluation that backs the Phase 3 SSH-transport recommendation in the async migration plan. Documents the current subprocess-pipe path, what async overlap actually buys, the integration boundary and spawn_blocking surfaces, and the embedded-russh-vs-subprocess tradeoff. Recommends embedded russh as the first async SSH target since the internal futures already exist and it eliminates fork+execve per connection; defers async subprocess until embedded is proven.
oferchen
added a commit
that referenced
this pull request
May 18, 2026
Add docs/design/async-ssh-evaluation.md, the focused evaluation that backs the Phase 3 SSH-transport recommendation in the async migration plan. Documents the current subprocess-pipe path, what async overlap actually buys, the integration boundary and spawn_blocking surfaces, and the embedded-russh-vs-subprocess tradeoff. Recommends embedded russh as the first async SSH target since the internal futures already exist and it eliminates fork+execve per connection; defers async subprocess until embedded is proven.
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
docs/design/async-ssh-evaluation.md, the focused evaluation for Allow workspace brand metadata aliases #1411 that supports the Phase 3 SSH-transport recommendation indocs/design/async-migration-plan.md(Add safe Apple special-file helpers #1594).crates/rsync_io/src/ssh/subprocess path - blocking pipe I/O, stderr drain thread, connect watchdog - and quantifies what async overlap actually buys (per-transfer read/write overlap, one-loop-many-transfers fan-out, helper-thread elimination).docs/design/async-runtime-ssh-eval.md(Allow workspace brand metadata aliases #1411 runtime survey),docs/design/async-ssh-transport.md(CI: remove unsupported windows aarch64 target #1593), anddocs/design/tokio-spawn-blocking-rayon.md(Refactor local copy options into dedicated module #1751) for the rayon bridge.crates/rsync_io/src/ssh/embedded/; eliminates per-connectionfork+execve; drops the two helper threads) and defers async subprocess until embedded is proven. Both backends sit behind the same--features async-sshflag, default off, with the syncstd::processtransport remaining default throughout Phase 3.tokio::io::copy_bidirectional), Enforce unique cross-compile metadata entries #1805 (cancellation, exit-code mapping, panic isolation), Handle forced missing cargo tools in packaging tests #1806 (async subprocess backend with bench-gated promotion).Test plan
docs/design/.