[package] name = "ethersync" description = "Enables real-time co-editing of local text files." version = "0.5.0" authors = ["Moritz Neeb ", "blinry "] license = "AGPL-3.0-or-later" readme = "../README.md" documentation = "https://ethersync.github.io" repository = "https://github.com/ethersync/ethersync" keywords = [ "collaboration", "local-first", "synchronization", "crdt", "peer-to-peer", ] categories = ["command-line-utilities", "text-editors"] edition = "2021" default-run = "ethersync" [lib] name = "ethersync" [[bin]] name = "ethersync" test = false bench = false doc = false required-features = ["executable-deps"] [dependencies] anyhow = "1.0.81" automerge = "0.5.9" clap = { version = "4.5.3", features = ["derive", "env"], optional = true } dissimilar = "1.0.9" futures = { version = "0.3.30", default-features = false } ignore = "0.4.22" libp2p = { version = "0.54.1", features = ["tokio", "tcp", "noise", "yamux"] } libp2p-identity = { version = "0.2.9", features = ["ed25519"] } libp2p-pnet = "0.25.0" libp2p-stream = "0.2.0-alpha" notify = { version = "6.1.1", default-features = false, features = [ "macos_fsevent", ] } operational-transform = "0.6.1" path-clean = "1.0.1" pbkdf2 = "0.12.2" rand = "0.8.5" ropey = "1.6.1" rust-ini = "0.21.1" serde = { version = "1.0.198", features = ["derive"] } serde_json = "1" sha2 = "0.10.8" time = { version = "0.3.36", features = ["formatting"] } tokio-util = { version = "0.7.11", features = ["codec"] } tracing = "0.1.40" tracing-subscriber = { version = "0.3.18", default-features = false, features = [ "ansi", "fmt", "local-time", ] } [dependencies.tokio] version = "1" features = ["rt", "io-std", "io-util", "macros", "net", "time"] [features] executable-deps = ["dep:clap", "tokio/signal", "tokio/rt-multi-thread"] default = ["executable-deps"] [dev-dependencies] pretty_assertions = "1.4.0" temp-dir = "0.1.13" tracing-test = "0.2.4" # Stripping symbols (not debuginfo) reduces binary size by ~1.5x. # This is the default profile for `cargo install`: # https://doc.rust-lang.org/cargo/reference/profiles.html#profile-selection. # TODO: We may want to make [profile.release-size] the default # once we're out of the fast iteration development phase. [profile.release] strip = true opt-level = 3 # 2-3x slower to compile, but produces a ~1.2x smaller binary. [profile.release-lto] inherits = "release" lto = true codegen-units = 1 # Also quite slow to compile, but produces a ~1.6x smaller binary. [profile.release-size] inherits = "release" lto = true codegen-units = 1 opt-level = "s"