[workspace] resolver = "3" members = ["crates/*"] # Duplicate dependency note (resolved lockfile): # - hashbrown: 0.15, 0.16, 0.17; itertools: 0.10, 0.14, 0.15. # - cfg-if, core-foundation, rand: two versions each. # - reqwest: 0.12 workspace and 0.13 via xet-client 1.5.2. # - getrandom: 0.2, 0.3, 0.4 via incompatible third-party dependency constraints. # - syn: 2 and 3; async-trait uses syn 3 while other derive macros use syn 2. [workspace.package] version = "1.13.0" edition = "2024" license = "MIT OR Apache-2.0" repository = "https://github.com/STEXS-Technologies/shardline" homepage = "https://github.com/STEXS-Technologies/shardline" documentation = "https://docs.rs/shardline" [workspace.dependencies] aes-gcm = "0.10" arrow-array = "60.0.0" arrow-json = "60.0.0" arrow-schema = "60.0.0" async-trait = "0.1.92" dotenvy = "0.15" toml = "0.8" axum = "0.8.8" multer = "3.1.0" base64 = "0.22" blake3 = "1.8.3" bytes = "1.10.1" httpdate = "1" chrono = { version = "0.4", default-features = false, features = ["std", "clock"] } clap = "4.5.60" clap_complete = "4.5.59" clap_mangen = "0.2.31" criterion = { version = "0.5.1", default-features = false, features = ["html_reports"] } ed25519-dalek = { version = "2", features = ["pem", "pkcs8"] } # Keep v2 in public APIs; StateChronicle 0.2 uses v3 internally. statechronicle-ed25519 = { package = "ed25519-dalek", version = "3" } flate2 = "1" futures-util = "0.3" gearhash = "0.1.3" getrandom = "0.3" hex = "0.4" hmac = "0.12" http = "1.4" jsonwebtoken = "9" libc = "0.2.177" libfuzzer-sys = "0.4" object_store = { version = "0.14.2", default-features = false } parquet = { version = "60.0.0", default-features = false, features = [ "arrow", "snap", "brotli", "flate2-zlib-rs", "lz4", "zstd", ] } redis = "1.0.2" rustls = { version = "0.23", default-features = false, features = ["ring", "std"] } reqwest = { version = "0.12.28", default-features = false } rusqlite = "0.39" rustix = { version = "1", features = ["process", "time"] } serde = "1.0" serde_json = "1.0" sha1 = "0.10" sha2 = { version = "0.10", features = ["compress"] } md-5 = { version = "0.10", features = ["std"] } shardline = { version = "1.13.0", path = "crates/shardline" } shardline-cache = { version = "1.13.0", path = "crates/shardline-cache" } shardline-cas = { version = "1.13.0", path = "crates/shardline-cas" } shardline-fsck = { version = "1.13.0", path = "crates/shardline-fsck" } shardline-gc = { version = "1.13.0", path = "crates/shardline-gc" } shardline-hub-api = { version = "1.13.0", path = "crates/shardline-hub-api" } shardline-index = { version = "1.13.0", path = "crates/shardline-index" } shardline-metrics = { version = "1.13.0", path = "crates/shardline-metrics" } shardline-protocol = { version = "1.13.0", path = "crates/shardline-protocol" } shardline-protocol-adapters = { version = "1.13.0", path = "crates/shardline-protocol-adapters" } shardline-rebuild = { version = "1.13.0", path = "crates/shardline-rebuild" } shardline-reliability = { version = "1.13.0", path = "crates/shardline-reliability" } shardline-provider-events = { version = "1.13.0", path = "crates/shardline-provider-events" } shardline-oci-adapter = { version = "1.13.0", path = "crates/shardline-oci-adapter" } shardline-s3-adapter = { version = "1.13.0", path = "crates/shardline-s3-adapter" } shardline-server = { version = "1.13.0", path = "crates/shardline-server" } shardline-server-core = { version = "1.13.0", path = "crates/shardline-server-core" } shardline-storage = { version = "1.13.0", path = "crates/shardline-storage" } shardline-test-support = { version = "1.13.0", path = "crates/shardline-test-support" } shardline-validation = { version = "1.13.0", path = "crates/shardline-validation" } shardline-auth = { version = "1.13.0", path = "crates/shardline-auth" } shardline-vcs = { version = "1.13.0", path = "crates/shardline-vcs" } shardline-xet-adapter = { version = "1.13.0", path = "crates/shardline-xet-adapter" } shardline-xet-core = { version = "1.13.0", path = "crates/shardline-xet-core" } sdx = { version = "1.13.0", path = "crates/sdx" } sqlx = { version = "0.9", default-features = false } subtle = { version = "2.6", default-features = false } tempfile = "3.15" thiserror = { version = "2.0.18", default-features = false } tokio = "1.53.3" url = "2.5" xet-client = "1.5.1" xet-core-structures = "1.5.1" xet-data = "1.5.1" xet-runtime = "=1.5.2" prometheus = { version = "0.14", default-features = false } tower = "0.5" tower-http = { version = "0.6", default-features = false } quick-xml = { version = "0.41.0", features = ["serialize"] } tracing = "0.1" tracing-subscriber = { version = "0.3", default-features = false, features = ["env-filter", "fmt"] } zeroize = "1.8" proptest = "1" penelope = "0.2.0" penelope-core = { version = "0.2.0", features = ["serde"] } statechronicle = "0.2.0" [profile.release] opt-level = 3 lto = "thin" codegen-units = 1 panic = "abort" strip = "symbols" [profile.profiling] inherits = "release" debug = 2 strip = "none" [profile.dev] debug = 2 opt-level = 0 overflow-checks = true incremental = false panic = "unwind" lto = false # Maintenance admission hashes the complete executable. Keep SHA-256 optimized # in debug/test builds too: hashing debug sections must not consume recovery # deadlines before a CLI can acquire its database ownership. Checks stay enabled. [profile.dev.package.sha2] opt-level = 3 [workspace.lints.rust] rust_2024_prelude_collisions = "warn" rust_2024_incompatible_pat = "warn" rust_2024_guarded_string_incompatible_syntax = "warn" deprecated_safe_2024 = "warn" [workspace.lints.clippy] unwrap_used = "deny" expect_used = "deny" inefficient_to_string = "deny" todo = "deny" unimplemented = "deny" panic = "deny" result_large_err = "deny" map_err_ignore = "deny" unreachable = "deny" dbg_macro = "deny" ignored_unit_patterns = "deny" await_holding_refcell_ref = "deny" match_bool = "deny" if_same_then_else = "deny" needless_pass_by_value = "deny" borrowed_box = "deny" str_to_string = "deny" filter_map_next = "deny" iter_not_returning_iterator = "deny" needless_collect = "deny" wildcard_enum_match_arm = "deny" missing_errors_doc = "deny" missing_panics_doc = "deny" undocumented_unsafe_blocks = "deny" let_underscore_must_use = "deny" must_use_candidate = "deny" match_wild_err_arm = "deny" indexing_slicing = "deny" panic_in_result_fn = "deny" unwrap_in_result = "deny" disallowed_macros = "deny" missing_const_for_fn = "deny" implicit_clone = "deny" redundant_clone = "deny" lossy_float_literal = "deny" unnecessary_wraps = "deny" map_flatten = "deny" or_fun_call = "deny" ok_expect = "deny" await_holding_lock = "deny" mutex_atomic = "deny" needless_borrow = "deny" wildcard_dependencies = "deny" enum_glob_use = "deny" match_ref_pats = "deny" wrong_self_convention = "deny" trivially_copy_pass_by_ref = "deny" ptr_arg = "deny" needless_lifetimes = "deny" mutable_key_type = "deny" large_enum_variant = "deny" vec_box = "deny" float_cmp = "deny" bool_assert_comparison = "deny" cmp_owned = "deny" string_add = "deny" assertions_on_constants = "deny" useless_asref = "deny" shadow_unrelated = "deny" arithmetic_side_effects = "deny" float_arithmetic = "deny" box_collection = "deny" unnecessary_box_returns = "deny" trait_duplication_in_bounds = "deny" single_char_lifetime_names = "deny" format_push_string = "deny" option_if_let_else = "deny" manual_string_new = "deny" flat_map_option = "deny" [patch.crates-io] # Upstream fix for stranded HTTP/1 requests when a pooled connection closes. # https://github.com/hyperium/hyper/pull/4222 hyper = { git = "https://github.com/hyperium/hyper", rev = "97fff93e53f9e6a993f2d6a25d50883b7b8752a7" }