[package]
edition = "2021"
rust-version = "1.75"
name = "copia"
version = "0.1.3"
authors = ["Pragmatic AI Labs <info@paiml.com>"]
build = false
exclude = [
"benches/*",
"tests/*",
"docs/*",
".github/*",
"mutants.out/*",
"mutants.out.old/*",
"proptest-regressions/*",
"Makefile",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Pure Rust rsync-style delta synchronization library"
homepage = "https://github.com/paiml/copia"
documentation = "https://docs.rs/copia"
readme = "README.md"
keywords = [
"rsync",
"sync",
"delta",
"file-transfer",
"backup",
]
categories = [
"filesystem",
"compression",
"algorithms",
]
license = "MIT"
repository = "https://github.com/paiml/copia"
[features]
async = ["tokio"]
cli = [
"clap",
"async",
"tokio/rt-multi-thread",
"tokio/macros",
"tokio/process",
]
default = []
[lib]
name = "copia"
path = "src/lib.rs"
[[bin]]
name = "copia"
path = "src/bin/copia.rs"
required-features = ["cli"]
[dependencies.bincode]
version = "1.3"
[dependencies.blake3]
version = "1.5"
[dependencies.bytes]
version = "1.9"
[dependencies.clap]
version = "4.5"
features = ["derive"]
optional = true
[dependencies.rayon]
version = "1.10"
[dependencies.rustc-hash]
version = "2.1"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1.43"
features = [
"rt",
"io-util",
"fs",
"sync",
]
optional = true
[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]
[dev-dependencies.proptest]
version = "1.6"
[dev-dependencies.rand]
version = "0.8"
[dev-dependencies.tempfile]
version = "3.14"
[dev-dependencies.tokio]
version = "1.43"
features = [
"rt-multi-thread",
"macros",
"io-util",
"fs",
]
[lints.clippy]
cast_possible_truncation = "warn"
cast_precision_loss = "warn"
cast_sign_loss = "warn"
cognitive_complexity = "warn"
expect_used = "deny"
missing_const_for_fn = "allow"
panic = "deny"
todo = "deny"
unimplemented = "deny"
unreachable = "warn"
unwrap_used = "deny"
[lints.clippy.all]
level = "deny"
priority = -1
[lints.clippy.nursery]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "deny"
priority = -1
[lints.rust]
unsafe_code = "deny"
[profile.dev]
panic = "abort"
[profile.release]
lto = true
codegen-units = 1
panic = "abort"