• v2.28.0
    CI / lint (push) Successful in 2m0s
    CI / parity-fast (push) Skipped
    CI / lint (pull_request) Successful in 2m0s
    CI / parity-full (pull_request) Skipped
    CI / sanitizers (address) (pull_request) Skipped
    CI / sanitizers (undefined) (pull_request) Skipped
    CI / fuzz-build (pull_request) Skipped
    CI / coverage (pull_request) Skipped
    CI / valgrind (pull_request) Skipped
    CI / parity-full (push) Successful in 19s
    CI / sanitizers (address) (push) Successful in 50s
    CI / sanitizers (undefined) (push) Successful in 44s
    CI / build-and-test (push) Successful in 1m8s
    CI / coverage (push) Successful in 42s
    CI / fuzz-build (push) Successful in 47s
    CI / parity-fast (pull_request) Successful in 19s
    CI / build-and-test (pull_request) Successful in 52s
    CI / valgrind (push) Successful in 2m13s
    Stable

    TapTap released this 2026-09-20 01:11:40 +02:00 | 126 commits to main since this release

    The rsync-parity cycle. PROTOCOL_VERSION moves 2.26.0 → 2.27.0 → 2.28.0; client and server must run the same version.

    Highlights

    • Differential rsync 3.4.1 parity gate in CI (fast on PR, full strict on push; empty residual allowlist).
    • Parity matrix 116 ✅ / 14 ⚠️ / 27 ❌ = 157 (was 111/13/33).
    • --delete now defaults to delete-during (rsync --del); FastSync-only --delete-commit keeps the old atomic timing.
    • Receiver-observed --stats (created breakdown + exact delta literal); --progress opt-in to-chk pre-count.
    • Receiver-side protect/risk filter engine — --filter and --delete-excluded now parity.
    • Basis dirs default to rsync's quick-check; FastSync-only --verify-basis; streamed basis materialization.
    • Per-codec compression defaults + RSYNC_*_LIST for auto; --checksum-choice proven observable-equivalent.

    Migration

    • Plain --delete now removes reached directories' extras during the transfer; pass --delete-commit (or --delete-after) for the old commit-only-after-success behavior.
    • Basis verification now trusts size+mtime by default; pass --verify-basis to require a whole-file digest.

    See CHANGELOG.md for details and RSYNC_COMPAT.md for remaining documented caveats.

    Downloads
  • v2.26.0 — rsync 3.4.1 drop-in parity
    CI / lint (push) Successful in 1m40s
    CI / sanitizers (undefined) (push) Successful in 44s
    CI / sanitizers (address) (push) Successful in 50s
    CI / build-and-test (push) Successful in 58s
    CI / coverage (push) Successful in 40s
    CI / fuzz-build (push) Successful in 46s
    CI / valgrind (push) Successful in 2m12s
    Stable

    TapTap released this 2026-09-18 19:11:03 +02:00 | 164 commits to main since this release

    FastSync v2.26.0 — rsync 3.4.1 drop-in parity

    This release makes FastSync a drop-in replacement for rsync 3.4.1 across the vast majority of its option surface, and closes the issues tracked in #285–#297.

    Protocol

    • 2.22.0 → 2.26.0 — breaking wire change. Upgrade client and server together; the handshake is strict same-version (no mixed-version peers). --protocol accepts only 2.26.0.

    Highlights

    • Delete timing: true --delete-during / --delete-delay via per-directory delete plans (STATUS_DELETE_PLAN), with -R prefix scoping and dry-run safety.
    • Wire stats: receiver counters (STATUS_STATS) now drive --stats, --progress, and --out-format %b/%c/%C, in both the sequential and --threads paths.
    • Codecs & checksums: lz4/zlib/zlibx compression and md4/sha1/none checksums with negotiation; defaults xxh128/zstd.
    • Selection & paths: general -R/--relative, --no-implied-dirs, -d/--dirs, --iconv, the full filter grammar (merge/dir-merge/hide/show/protect/risk/clear + modifiers), receiver-side --chown TO-name resolution, absolute basis dirs + --link-dest relink, --preallocate over --sparse, --fuzzy, --ignore-existing short-circuit.
    • Compatibility matrix (RSYNC_COMPAT.md): 156 rows — 106 ✅ Parity / 27 ⚠️ Caveat / 23 ❌ Divergent (was 83 / 63 / 4). Every ⚠️ and ❌ row names its residual or rationale.

    Fixes

    • Uninitialized File.matched_bytes leaking garbage into --stats output.
    • --append / --append-verify crash on streamed (large / --sendfile) files.
    • Filter merge-file rollback could double-free after a clear rule.
    • Reject the xattr-name filter modifier x instead of silently treating it as a filename rule.
    • ASan leak in receiver pipeline teardown.
    • valgrind unit-test hang (io-fd redirection leaking across test suites) and uninitialized per_dir_filter_count.

    Known caveats

    27 rows remain ⚠️ with a documented residual (e.g. --progress leading whole-transfer line, %b/%c byte accounting, silent --info/--debug categories, --delete-delay deleted-count, absolute --temp-dir, -M over TCP, --bwlimit units). The 23 ❌ rows are intentional divergences (native daemon config/auth, rsync batch container, privilege namespaces, --protocol downgrade, non-portable --crtimes). See RSYNC_COMPAT.md for the full, honest table.

    Verification

    • Unit tests 43/43; full integration 729 passed / 23 skipped / 1 xpassed; PR gate 301 passed.
    • lint, build-and-test, sanitizers (address|undefined), fuzz-build, coverage, and valgrind all green on both dev and main.
    Downloads