[workspace] resolver = "3" members = ["crates/gix-chunk", "crates/gix-commitgraph", "crates/trusted-proxies", "knot2/crates/*"] exclude = ["knot2/third_party"] [workspace.package] version = "0.0.1" edition = "2024" rust-version = "1.96" license = "MIT" authors = [ "Lewis ", "Seongmin Lee ", "oppiliappan ", "Anirudh Oppiliappan ", "eti ", "dawn ", ] [workspace.lints.rust] unsafe_code = "forbid" unused_must_use = "deny" [workspace.lints.clippy] dbg_macro = "warn" disallowed_methods = "deny" todo = "warn" print_stdout = "deny" print_stderr = "warn" [workspace.dependencies] trusted-proxies = { path = "crates/trusted-proxies" } knot-fixtures = { path = "knot2/crates/knot-fixtures" } knot-lexicons = { path = "knot2/crates/knot-lexicons" } knot-types = { path = "knot2/crates/knot-types" } knot-storage = { path = "knot2/crates/knot-storage" } knot-resource = { path = "knot2/crates/knot-resource" } knot-runtime = { path = "knot2/crates/knot-runtime" } knot-git = { path = "knot2/crates/knot-git" } knot-langs = { path = "knot2/crates/knot-langs" } knot-cache = { path = "knot2/crates/knot-cache" } knot-atproto = { path = "knot2/crates/knot-atproto" } knot-record = { path = "knot2/crates/knot-record" } knot-events = { path = "knot2/crates/knot-events" } knot-cob = { path = "knot2/crates/knot-cob" } knot-cobs = { path = "knot2/crates/knot-cobs" } knot-lfs = { path = "knot2/crates/knot-lfs" } knot-messages = { path = "knot2/crates/knot-messages" } sqlx = { version = "0.9", default-features = false, features = ["runtime-tokio", "tls-rustls-aws-lc-rs", "postgres", "chrono", "macros", "migrate"] } jacquard-api = "0.12.1" jacquard-axum = "0.12.1" jacquard-common = "0.12.1" jacquard-derive = "0.12.1" jacquard-lexicon = { version = "0.12.1", default-features = false } jacquard-identity = { version = "0.12.1", features = ["cache"] } jacquard-repo = "0.12.1" gix = { version = "0.84", features = ["parallel", "revision", "blob-diff", "blame", "merge", "worktree-archive", "tree-editor", "sha1", "sha256"] } gix-pack = { version = "0.71", default-features = false, features = ["generate", "streaming-input", "sha1", "sha256"] } gix-odb = "0.81" gix-packetline = { version = "0.21", features = ["blocking-io"] } gix-transport = { version = "0.57", default-features = false } gix-protocol = { version = "0.62", default-features = false, features = ["blocking-client"] } gix-archive = "0.33" gix-hash = { version = "0.25", features = ["sha1", "sha256"] } gix-actor = "0.41" gix-diff = "0.64" gix-features = "0.48" gix-merge = "0.17" gix-negotiate = "0.32" gix-object = "0.61" gix-ref = "0.64" # `AsyncWriteExt` for the raw writer `gix-transport` hands back from `RequestWriter::into_parts()`. futures-lite = "2" flate2 = "1" memmap2 = "0.9" anyhow = "1" miette = "7" walkdir = "2" tokio = { version = "1.52", features = ["macros", "rt-multi-thread", "time", "signal", "io-util", "net", "sync"] } tokio-util = { version = "0.7", features = ["rt"] } backon = { version = "1.6", default-features = false, features = ["std", "tokio-sleep"] } tokio-stream = "0.1" tokio-tungstenite = { version = "0.29", features = ["rustls-tls-native-roots"] } futures = "0.3" either = "1" async-trait = "0.1" itertools = "0.14" serde = { version = "1", features = ["derive"] } serde_json = { version = "1", features = ["raw_value"] } serde_ipld_dagcbor = "0.6" ipld-core = { version = "0.4", features = ["serde"] } serde_bytes = "0.11" tar = "0.4" object_store = { version = "0.12", features = ["aws"] } serde_norway = "0.9" chrono = { version = "0.4", features = ["serde"] } cid = "0.11" url = { version = "2", features = ["serde"] } uuid = { version = "1", features = ["v5"] } bytes = "1" iroh-car = "0.5" scc = "3" roaring = "0.11" lasso = { version = "0.7", features = ["multi-threaded"] } quick_cache = "0.6" moka = { version = "0.12", features = ["sync", "future"] } getrandom = "0.4" ahash = { version = "0.8", default-features = false, features = ["std"] } arc-swap = "1" reqwest = { version = "0.13", default-features = false, features = ["rustls", "http2", "json", "gzip", "stream"] } axum = { version = "0.8", features = ["macros"] } hyper = { version = "1", features = ["server", "http1", "http2"] } hyper-util = { version = "0.1", features = ["server", "server-auto", "tokio", "service"] } tower = { version = "0.5", features = ["util", "limit", "load-shed"] } tower-http = { version = "0.7", default-features = false } tower_governor = { version = "0.8", default-features = false, features = ["axum"] } governor = "0.10" http = "1" http-body = "1" httpdate = "1" ipnet = "2.10" rustls = { version = "0.23", features = ["aws_lc_rs", "prefer-post-quantum"] } tokio-rustls = { version = "0.26", default-features = false, features = ["aws_lc_rs", "tls12", "logging"] } rustls-pemfile = "2" rustls-native-certs = "0.8" rustls-acme = { version = "0.15.3", default-features = false, features = ["aws-lc-rs", "tls12", "webpki-roots"] } x509-parser = "0.18" quinn = { version = "0.11.9", default-features = false, features = ["runtime-tokio", "rustls-aws-lc-rs", "log"] } h3 = "0.0.8" h3-quinn = "0.0.10" rcgen = { version = "0.14", default-features = false, features = ["aws_lc_rs", "pem"] } hickory-resolver = "0.24" k256 = { version = "0.13", features = ["ecdsa"] } ed25519-dalek = { version = "2.2", features = ["pkcs8", "pem"] } # Enroute signs its hooks with RFC 9421, whose headers are RFC 9651 structured fields sfv = "0.16" prost = "0.14" prost-types = "0.14" # Enroute's refs and repositories are moved over its gRPC API tonic = { version = "0.14", default-features = false, features = ["transport", "codegen"] } tonic-prost = "0.14" aes-gcm = "0.11.0-rc.4" hkdf = "0.13" sha2 = "0.11" zstd = "0.13" base32 = "0.5" base64 = "0.22" bs58 = "0.5" zeroize = { version = "1", features = ["derive"] } subtle = "2.6" deadpool-redis = "0.23" wiremock = "0.6" tempfile = "3" proptest = "1" divan = "0.1.21" tantivy = "0.26" tantivy-fst = "0.5" levenshtein_automata = "0.2" nom = "7" parking_lot = "0.12" gengo-language = "0.14" regex = "1" globset = "0.4" rustix = { version = "1.1", features = ["process"] } tikv-jemallocator = "0.7" tikv-jemalloc-ctl = "0.7" tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt", "json"] } metrics = "0.24" metrics-exporter-prometheus = { version = "0.18", default-features = false } opentelemetry = { version = "0.33", default-features = false, features = ["logs", "metrics"] } opentelemetry_sdk = { version = "0.33", default-features = false, features = ["logs", "metrics"] } opentelemetry-otlp = { version = "0.33", default-features = false, features = ["http-proto", "reqwest-blocking-client", "logs", "metrics"] } opentelemetry-appender-tracing = { version = "0.33", default-features = false, features = ["experimental_span_attributes"] } thiserror = "2" unicode-segmentation = "1" confique = { version = "0.4", default-features = false, features = ["toml"] } clap = { version = "4", features = ["derive", "env"] } toml = { version = "0.9", default-features = false, features = ["parse"] } [patch.crates-io] gix-chunk = { path = "crates/gix-chunk" } gix-commitgraph = { path = "crates/gix-commitgraph" } gix-imara-diff = { path = "knot2/third_party/gix-imara-diff" } gix-pack = { path = "knot2/third_party/gix-pack" } jacquard = { git = "https://tangled.org/oppi.li/jacquard", rev = "bb32de36f1cc2727954fba6377e0433c391d34f3" } jacquard-api = { git = "https://tangled.org/oppi.li/jacquard", rev = "bb32de36f1cc2727954fba6377e0433c391d34f3" } jacquard-axum = { git = "https://tangled.org/oppi.li/jacquard", rev = "bb32de36f1cc2727954fba6377e0433c391d34f3" } jacquard-common = { git = "https://tangled.org/oppi.li/jacquard", rev = "bb32de36f1cc2727954fba6377e0433c391d34f3" } jacquard-derive = { git = "https://tangled.org/oppi.li/jacquard", rev = "bb32de36f1cc2727954fba6377e0433c391d34f3" } jacquard-identity = { git = "https://tangled.org/oppi.li/jacquard", rev = "bb32de36f1cc2727954fba6377e0433c391d34f3" } jacquard-lexicon = { git = "https://tangled.org/oppi.li/jacquard", rev = "bb32de36f1cc2727954fba6377e0433c391d34f3" } jacquard-oauth = { git = "https://tangled.org/oppi.li/jacquard", rev = "bb32de36f1cc2727954fba6377e0433c391d34f3" } [profile.dev] opt-level = 1 [profile.release] lto = "fat" strip = true codegen-units = 1 [profile.bench] debug = 1 strip = false [profile.profiling] inherits = "release" debug = 1 strip = false lto = "thin" # dev deploys: quicker to build, not tuned like release [profile.dev-deploy] inherits = "release" opt-level = 1 lto = "thin" codegen-units = 16 # search is the hot path, so tantivy keeps real optimisation