v0.6.3
oc-rsync 0.6.3
Wire-compatible with upstream rsync 3.4.1 (protocol 32).
Install
Homebrew:
brew install oferchen/rsync/oc-rsyncBinary: Download the asset for your platform below.
| Platform | Formats |
|---|---|
| Linux (x86_64, aarch64) | .deb, .rpm (with OpenSSL), static musl .tar.gz, *-openssl.tar.gz |
| macOS (x86_64, aarch64) | .tar.gz |
| Windows (x86_64) | .tar.gz, .zip |
Linux static tarballs: *-musl.tar.gz (pure Rust) or *-musl-openssl.tar.gz (OpenSSL-accelerated checksums).
Toolchain variants
Each release ships three Rust-toolchain variants of every binary:
| Suffix | Rust toolchain | Recommended use |
|---|---|---|
| (none) | stable | Default. Use this. |
-beta |
Rust beta | Early adopters validating the next Rust release. |
-nightly |
Rust nightly | Performance experiments and unstable-feature testing. |
The -beta / -nightly suffix denotes the Rust toolchain the artifact was built with - it is not an indicator of oc-rsync's own release maturity (that is set in the release title and README.md).
Security
See SECURITY.md for the canonical mitigation roster and docs/design/sec-1-completion-summary-2026-05-22.md for the SEC-1 sub-task (.a-.p) ship state. Release authors: copy the rows that changed this cycle from the SECURITY.md CVE table into the placeholder below; drop unaffected rows.
Active mitigations
| CVE | Description | Status | Cite |
|---|---|---|---|
| CVE-XXXX-XXXXX | short upstream description | Fixed / Mostly fixed / Mitigated / Not vulnerable | PR #NNNN, SECURITY.md |
Status values mirror SECURITY.md ("Fixed", "Mostly fixed", "Mitigated", "Not vulnerable"). Use "Mostly fixed" when the primary syscall surface is migrated but deferred callers are tracked separately.
Defense-in-depth. This release ships the SEC-1 *at syscall chain (fstatat, unlinkat, mkdirat, symlinkat, linkat, fchmodat, fchownat, utimensat, renameat) routed through a per-transfer DirSandbox carrier with openat2(RESOLVE_BENEATH | RESOLVE_NO_SYMLINKS) runtime detection. The optional landlock Cargo feature (Linux 5.13+) layers kernel-enforced PathBeneath allowlisting on top; daemons on older kernels run with the *at chain as the sole TOCTOU defense, which is itself sufficient against CVE-2026-29518 / CVE-2026-43619.
Kernel / platform compatibility
| Layer | Minimum | Notes |
|---|---|---|
| io_uring data path | Linux 5.6+ | Runtime-probed; falls back to standard buffered I/O. |
| Provided buffer rings (PBUF_RING) | Linux 5.19+ | Runtime-probed; falls back to standard buffered I/O. |
Landlock LSM (landlock feature) |
Linux 5.13+ | Best-effort ABI downgrade; no-op on older kernels. |
IORING_OP_SEND_ZC (iouring-send-zc feature) |
Linux 6.0+ recommended | Opt-in; default builds use plain IORING_OP_SEND. |
macOS *at chain |
macOS 10.10+ | BSD *at family verified at parity with Linux (SEC-1.k). |
| Windows IOCP | Windows 10 1809+ | NTFS handle-based APIs sidestep path TOCTOU structurally (SEC-1.l). |
Distro packagers: see docs/packaging/landlock-feature-guidance.md for the per-distro --features landlock recommendation, runtime ABI matrix, and build-time dependency notes.
Linux io_uring requirements
oc-rsync uses Linux io_uring for high-throughput I/O on supported kernels. The minimum supported kernel for the io_uring path is Linux 5.6; older kernels (including RHEL 8 / CentOS Stream 8 at 4.18) fall back to standard read(2) / write(2) automatically - no user action required.
For the full performance tier (zero-copy SEND_ZC), Linux 6.0 or newer is required AND the binary must be built with the iouring-send-zc cargo feature enabled. Default release builds advertise --zero-copy but downgrade to non-zero-copy SEND silently on older kernels or builds without the feature.
Full per-opcode kernel-floor matrix: see docs/audit/iouring-opcode-kernel-floor.md.
Supported rsync protocol versions
oc-rsync continues to support protocol versions 28-32 inclusive, matching upstream rsync 2.6.x through 3.4.x. Protocol back-negotiation to 28 is exercised by wire-byte regression tests and a periodic CI matrix against rsync 2.6.9 (built from source). Protocols <= 27 (rsync 2.5.x and earlier) remain unsupported. See docs/design/rp28-k-1-protocol-drop-vs-keep-decision.md for the decision rationale and docs/design/rp28-k-2-execution-record.md for the execution record.
Full Changelog: https://github.com/oferchen/rsync/commits/v0.6.3