ffsync 1.2.0

Chunk-level file synchronization for big files and fast links
Documentation
[package]
name = "ffsync"
version = "1.2.0"
edition = "2024"
# Minimum Supported Rust Version, enforced by the msrv job in CI. Not the
# edition floor (1.85) but what the dependency tree actually requires:
# rcgen 0.14 / time 0.3 need rustc 1.88 (verified with cargo +1.88 check).
rust-version = "1.88"
description = "Chunk-level file synchronization for big files and fast links"
license = "MIT OR Apache-2.0"
repository = "https://github.com/bennischober/ffsync"
readme = "README.md"
# Keep local-only tooling and CI config out of the published crate; the
# design docs (concept/, evaluation/) stay in — README and AGENTS.md
# reference them and they carry the protocol reasoning.
exclude = [".opencode", ".github", "fuzz"]

[dependencies]
blake3 = { version = "1.8.7" }
fastcdc = "5.0.0"
rand = "0.10.3"
num_cpus = "1.17.0"
memmap2 = "0.9.12"
crossbeam = "0.8.5"
zstd = "0.14.3"
rustls = { version = "0.23.46", default-features = false, features = ["ring", "std", "tls12"] }
rcgen = "0.14.10"
ring = "0.17.14"
# QUIC transport (D13 step 2, §17): quinn is async (tokio), so tokio
# enters at the transport edges only — the sync seam lives in
# transport::quic, the data plane stays native threads (D3).
quinn = { version = "0.11", default-features = false, features = ["rustls", "runtime-tokio", "ring"] }
tokio = { version = "1", default-features = false, features = ["rt-multi-thread", "time"] }

[[test]]
name = "integration"
path = "tests/integration.rs"

[[bin]]
name = "bench"
path = "src/bin/bench.rs"

[dev-dependencies]
filetime = "0.2.29"