Release v2.29.0 #312

Merged
TapTap merged 123 commits from dev into main 2026-09-23 02:05:14 +02:00
3 changed files with 75 additions and 24 deletions
Showing only changes of commit d119f35066 - Show all commits
+43
View File
@@ -4,6 +4,49 @@ All notable changes to FastSync are documented here. Versions match
`PROTOCOL_VERSION` (printed by `fastsync --version`); the client and server must `PROTOCOL_VERSION` (printed by `fastsync --version`); the client and server must
run the same version because the handshake is strict. run the same version because the handshake is strict.
## [Unreleased]
The rsync-parity cycle 2.29 (no wire change; `PROTOCOL_VERSION` stays 2.28.0).
`RSYNC_COMPAT.md` moves from **116 ✅ / 14 ⚠️ / 27 ❌** to
**120 ✅ / 10 ⚠️ / 27 ❌** of 157 rows.
### Changed
- **rsync-exact traversal order.** The sequential scanner now walks each
directory's entries in rsync 3.4.1's flist order (non-directories ascending,
then directories ascending, depth-first), so `--info=name`, the
`--delete-during`/`--delete-delay`/`-n` would-delete order and the partial
`--max-delete` survivor set match rsync byte-for-byte. `--threads` has no
rsync analogue and stays unordered.
- **Delete timing.** The complete `--delete-during`/`--delete-delay`
per-directory plan set is transmitted before the first data frame, so a
mid-transfer abort has already removed every planned extra like rsync's
generator; `-d/--dirs` uses per-directory plans (shielded untraversed
subdirectories) instead of the end-of-transfer commit. `-n`, `--delete`,
`--del`/`--delete-during` and `--delete-delay` are now ✅ Parity.
- **Basis directories.** A relative `--compare-dest`/`--copy-dest`/`--link-dest`
DIR resolves against the destination directory with the transfer-relative
name appended, exactly like rsync 3.4.1.
- **`-y`/`--fuzzy`.** The candidate search no longer inherits the ordinary delta
engine's 16 KiB minimum or 10× size-ratio bound, so an oversized or
sub-16-KiB sibling is reused exactly as rsync reuses it.
- `--info=mount` prints rsync's mount-point skip line (repeated `-xx` drops the
mount-point directory); `--info=stats` enables the `--stats` block; `-x` is
repeatable. `--stats` counts traversed directories for the `Number of files`
breakdown under a plain `-r` scan. `--debug` emits real output for
`flist`/`del`/`hash`/`deltasum`/`recv`/`filter`/`send`.
### Known residuals
- `--progress` and `--info` still need a receiver→sender event channel for the
root `./` line, ancestor-directory suppression, receiver-side `skip`/`backup`
wording, and symlink/empty-directory quick-checks.
- `--delete-before`'s phase-0 late-file divergence remains (rsync's pre-scan
fixes the file list before the data pass).
- A single file larger than 256 MiB cannot be streamed in the default path
(a general whole-file limit, not basis-specific).
- `--stats` byte totals and `--msgs2stderr` stay documented divergences.
## [2.28.0] - 2026-09-20 ## [2.28.0] - 2026-09-20
The rsync-parity cycle. `PROTOCOL_VERSION` moves `2.26.0 → 2.27.0 → 2.28.0`; The rsync-parity cycle. `PROTOCOL_VERSION` moves `2.26.0 → 2.27.0 → 2.28.0`;
+16 -15
View File
@@ -1,21 +1,22 @@
# FastSync — Session Handoff (2026-09-19) # FastSync — Session Handoff (2026-09-20)
## Current status ## Current status
- **rsync-parity tracks 1-6 landed on `dev`** via **PR #303** (`10159dc`, - **Release `v2.28.0`** is tagged and merged to `main` (PR #304, `b4d54504`).
"feat(parity): rsync parity tracks 1-6 (protocol 2.28.0)"). Dev push CI run `dev` is at `558782d` (the incremental-check flake fix).
**581** fully green: lint, build-and-test, parity-full, ASan, UBSan,
fuzz-build, coverage, valgrind.
- **`PROTOCOL_VERSION` = `"2.28.0"`** (`src/shared/config.h`); CMake - **`PROTOCOL_VERSION` = `"2.28.0"`** (`src/shared/config.h`); CMake
`project(FastFileTransfer VERSION 2.28.0)`. The cycle batched all wire `project(FastFileTransfer VERSION 2.28.0)`.
changes (stats counters, filter-rule block, `--verify-basis`) under the one - **Parity cycle 2.29 on branch `feat/parity-2.29`** (from `dev` @ `558782d`),
bump. no wire change. It closes the scanner-order, delete-timing, relative-basis and
- **Release `v2.28.0` tagged and merged to `main`** via PR #304 fuzzy-eligibility residuals and improves the `--info`/`--stats`/`--debug`
(`b4d54504`); tag `v2.28.0`. Main push CI run **585** fully green (lint, partials. Parity matrix: **120 ✅ / 10 ⚠️ / 27 ❌ = 157** (was 116/14/27).
build-and-test, parity-full, ASan, UBSan, fuzz-build, coverage, valgrind). Remaining ⚠️ rows: `--info`, `--debug`, `--msgs2stderr`, `--stats`,
Gitea release `v2.28.0` published. `dev` and `main` are at the release `--progress`, `--delete-before`, `--compare-dest`/`--copy-dest`/`--link-dest`
content. (over-256-MiB basis MISS), `-y`/`--fuzzy` (256 MiB buffer cap).
- Parity matrix: **116 ✅ / 14 ⚠️ / 27 ❌ = 157** (was 111/13/33 at cycle start). - **Deferred (needs a wire bump):** the `--progress`/`--info` receiver→sender
- Working tree clean; feature branch deleted; no scratch trees or worktrees. event channel (root `./` line, ancestor suppression, `skip`/`backup` echo,
symlink/empty-dir quick-check); `--delete-before` phase-0 keep-set; and the
general >256 MiB single-file streaming limit (B4).
- Feature branch `feat/parity-2.29`; integration PR to `dev` pending.
## What landed this session ## What landed this session
+16 -9
View File
File diff suppressed because one or more lines are too long