[workspace] members = ["crates/knotless", "crates/knotless-serve", "crates/knotless-mcp", "crates/knotless-run", "crates/knotless-triage", "crates/knotless-agent"] resolver = "3" [workspace.package] version = "0.12.0" edition = "2024" license = "MIT OR Apache-2.0" rust-version = "1.89" [workspace.dependencies] knotless = { path = "crates/knotless" } # atproto's primitives, from their own repository's registry (.cargo/config.toml). atproto = { version = "0.1.1", registry = "atproto" } anyhow = "1" base64 = "0.22" futures = "0.3" humantime = "2" reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls", "http2", "gzip"] } serde = { version = "1", features = ["derive"] } serde_json = "1" sha2 = "0.10" tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros", "process", "fs", "io-util", "time", "sync", "net", "io-std", "signal"] } axum = "0.8" ciborium = "0.2" tokio-tungstenite = { version = "0.29", features = ["rustls-tls-webpki-roots"] } flate2 = "1" tokio-util = { version = "0.7", features = ["io"] } tempfile = "3" rustix = { version = "1", features = ["fs", "process"] } k256 = { version = "0.13", features = ["ecdsa"] } p256 = { version = "0.13", features = ["ecdsa", "ecdh"] } # 0.12, for p256 0.13 and rand_core 0.6 as the rest of the workspace has. hpke = { version = "0.12", default-features = false, features = ["alloc", "p256"] } rand_core = { version = "0.6", features = ["getrandom"] } tracing = "0.1" tracing-subscriber = { version = "0.3", default-features = false, features = ["std", "fmt", "json", "env-filter", "registry"] } # Every worktree keeps its own target/, so debug info is kept small: line # tables for our crates, none for dependencies. [profile.dev] debug = "line-tables-only" [profile.dev.package."*"] debug = false [profile.release] lto = "thin" codegen-units = 1 strip = true # The image a deploy builds (Dockerfile), at each push to main: built for # the build's time over the last percent of speed. The crates a push # changes are rebuilt each time, knotless-serve the longest of them, which # in one codegen unit and across crates' LTO took 280 of a deploy's 310s, # its codegen on one core. In 16 units, without LTO across crates (but # across a crate's own units), it goes over every core; for a server # that waits on the network and disk, what that costs at run time is lost # in the noise. The client's releases (deploy/release.sh) keep `release`. [profile.deploy] inherits = "release" lto = false codegen-units = 16