Skip to content

Handle extended ASCII whitespace in remote shell parser#1297

Merged
oferchen merged 1 commit into
masterfrom
integrate-rsync-3.4.1-protocol-in-rust
Oct 27, 2025
Merged

Handle extended ASCII whitespace in remote shell parser#1297
oferchen merged 1 commit into
masterfrom
integrate-rsync-3.4.1-protocol-in-rust

Conversation

@oferchen
Copy link
Copy Markdown
Owner

Summary

  • treat vertical tab and form feed as whitespace delimiters in the remote shell parser
  • add a regression test covering extended ASCII whitespace handling for --rsh

Testing

  • cargo test -p rsync-transport parser_treats_extended_ascii_whitespace_as_delimiters

https://chatgpt.com/codex/tasks/task_e_68ffd8be49a0832393e09ec429638762

@oferchen oferchen merged commit fe9c963 into master Oct 27, 2025
@oferchen oferchen deleted the integrate-rsync-3.4.1-protocol-in-rust branch October 27, 2025 20:50
oferchen added a commit that referenced this pull request May 7, 2026
Specifies the criterion harness that gates the sharded BufferPool
layout from #1295: 1/4/16/64 thread acquire-release loops with mixed
adaptive buffer sizes, pass/fail thresholds keyed to linear scaling
through 16 threads, and explicit risk mitigations for false sharing
and hot-shard imbalance.
oferchen added a commit that referenced this pull request May 16, 2026
Add criterion microbench under crates/transfer/benches profiling four
result-collection strategies (shared Arc<Mutex<Vec>>, sharded
Mutex<Vec> by rayon worker id, crossbeam SegQueue, crossbeam unbounded
channel) over 100K items at 1/4/8/16 rayon worker counts. Throughput
is reported in elements/sec so the bench output names the worker
count at which the single shared mutex saturates.

The shipping parallel-stat path in crates/transfer/src/parallel_io.rs
does not use Arc<Mutex<Vec>>; it collects via
into_par_iter().map(f).collect(), which delegates to rayon's lock-free
reducer. Document this in docs/audits/parallel-stat-collection.md and
keep the microbench as the baseline against which any future PR that
proposes reintroducing a shared mutex on this path must be measured
(tracked under #1192, #1271, #1297, #1370, #1682).
oferchen added a commit that referenced this pull request May 16, 2026
… (#4170)

* chore(bench): add parallel-stat collector contention microbench

Add criterion microbench under crates/transfer/benches profiling four
result-collection strategies (shared Arc<Mutex<Vec>>, sharded
Mutex<Vec> by rayon worker id, crossbeam SegQueue, crossbeam unbounded
channel) over 100K items at 1/4/8/16 rayon worker counts. Throughput
is reported in elements/sec so the bench output names the worker
count at which the single shared mutex saturates.

The shipping parallel-stat path in crates/transfer/src/parallel_io.rs
does not use Arc<Mutex<Vec>>; it collects via
into_par_iter().map(f).collect(), which delegates to rayon's lock-free
reducer. Document this in docs/audits/parallel-stat-collection.md and
keep the microbench as the baseline against which any future PR that
proposes reintroducing a shared mutex on this path must be measured
(tracked under #1192, #1271, #1297, #1370, #1682).

* chore: sync Cargo.lock after dev-dep addition
oferchen added a commit that referenced this pull request May 16, 2026
The #1297 task assumed a Mutex<Vec<Vec<u8>>> baseline for a
single-mutex vs sharded contention bench. The production BufferPool
already uses a thread-local single-slot cache in front of a lock-free
crossbeam_queue::ArrayQueue with a CAS-admission soft cap. This audit
documents the current architecture, lists the remaining (non-storage)
mutexes, explains why the originally-scoped comparison cannot be
authored, and records what is already measured vs the gaps that the
sharded-queue follow-up plan would address.
oferchen added a commit that referenced this pull request May 18, 2026
Specifies the criterion harness that gates the sharded BufferPool
layout from #1295: 1/4/16/64 thread acquire-release loops with mixed
adaptive buffer sizes, pass/fail thresholds keyed to linear scaling
through 16 threads, and explicit risk mitigations for false sharing
and hot-shard imbalance.
oferchen added a commit that referenced this pull request May 18, 2026
… (#4170)

* chore(bench): add parallel-stat collector contention microbench

Add criterion microbench under crates/transfer/benches profiling four
result-collection strategies (shared Arc<Mutex<Vec>>, sharded
Mutex<Vec> by rayon worker id, crossbeam SegQueue, crossbeam unbounded
channel) over 100K items at 1/4/8/16 rayon worker counts. Throughput
is reported in elements/sec so the bench output names the worker
count at which the single shared mutex saturates.

The shipping parallel-stat path in crates/transfer/src/parallel_io.rs
does not use Arc<Mutex<Vec>>; it collects via
into_par_iter().map(f).collect(), which delegates to rayon's lock-free
reducer. Document this in docs/audits/parallel-stat-collection.md and
keep the microbench as the baseline against which any future PR that
proposes reintroducing a shared mutex on this path must be measured
(tracked under #1192, #1271, #1297, #1370, #1682).

* chore: sync Cargo.lock after dev-dep addition
oferchen added a commit that referenced this pull request May 18, 2026
The #1297 task assumed a Mutex<Vec<Vec<u8>>> baseline for a
single-mutex vs sharded contention bench. The production BufferPool
already uses a thread-local single-slot cache in front of a lock-free
crossbeam_queue::ArrayQueue with a CAS-admission soft cap. This audit
documents the current architecture, lists the remaining (non-storage)
mutexes, explains why the originally-scoped comparison cannot be
authored, and records what is already measured vs the gaps that the
sharded-queue follow-up plan would address.
oferchen added a commit that referenced this pull request May 18, 2026
… (#4170)

* chore(bench): add parallel-stat collector contention microbench

Add criterion microbench under crates/transfer/benches profiling four
result-collection strategies (shared Arc<Mutex<Vec>>, sharded
Mutex<Vec> by rayon worker id, crossbeam SegQueue, crossbeam unbounded
channel) over 100K items at 1/4/8/16 rayon worker counts. Throughput
is reported in elements/sec so the bench output names the worker
count at which the single shared mutex saturates.

The shipping parallel-stat path in crates/transfer/src/parallel_io.rs
does not use Arc<Mutex<Vec>>; it collects via
into_par_iter().map(f).collect(), which delegates to rayon's lock-free
reducer. Document this in docs/audits/parallel-stat-collection.md and
keep the microbench as the baseline against which any future PR that
proposes reintroducing a shared mutex on this path must be measured
(tracked under #1192, #1271, #1297, #1370, #1682).

* chore: sync Cargo.lock after dev-dep addition
oferchen added a commit that referenced this pull request May 18, 2026
The #1297 task assumed a Mutex<Vec<Vec<u8>>> baseline for a
single-mutex vs sharded contention bench. The production BufferPool
already uses a thread-local single-slot cache in front of a lock-free
crossbeam_queue::ArrayQueue with a CAS-admission soft cap. This audit
documents the current architecture, lists the remaining (non-storage)
mutexes, explains why the originally-scoped comparison cannot be
authored, and records what is already measured vs the gaps that the
sharded-queue follow-up plan would address.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant