Alternative ATProto PDS implementation
1# cargo-features = ["codegen-backend"] 2 3[package] 4name = "bluepds" 5version = "0.0.0" 6edition = "2024" 7publish = false 8authors = ["Justin Moore", "Timothy Quilling <teqed@shatteredsky.net>"] 9description = "Alternative ATProto PDS implementation" 10license = "MIT OR Apache-2.0" 11readme = "README.md" 12repository = "https://github.com/DrChat/bluepds" 13keywords = ["atproto", "pds"] 14categories = [] 15 16[profile.dev.package."*"] 17opt-level = 3 18# codegen-backend = "cranelift" 19 20[profile.dev] 21opt-level = 1 22# codegen-backend = "cranelift" 23 24[profile.release] 25opt-level = "s" # Slightly slows compile times, great improvements to file size and runtime performance. 26lto = "thin" # Do a second optimization pass over the entire program, including dependencies. 27codegen-units = 1 # Compile the entire crate as one unit. 28strip = "debuginfo" # Strip all debugging information from the binary to slightly reduce file size. 29 30[lints.rust] 31## Groups 32warnings = { level = "warn", priority = -1 } # All lints that are set to issue warnings 33deprecated-safe = { level = "warn", priority = -1 } # Lints for functions which were erroneously marked as safe in the past 34future-incompatible = { level = "warn", priority = -1 } # Lints that detect code that has future-compatibility problems 35keyword-idents = { level = "warn", priority = -1 } # Lints that detect identifiers which will be come keywords in later editions 36let-underscore = { level = "warn", priority = -1 } # Lints that detect wildcard let bindings that are likely to be invalid 37nonstandard-style = { level = "warn", priority = -1 } # Violation of standard naming conventions 38refining-impl-trait = { level = "warn", priority = -1 } # Detects refinement of impl Trait return types by trait implementations 39rust-2018-compatibility = { level = "warn", priority = -1 } # Lints used to transition code from the 2015 edition to 2018 40rust-2021-compatibility = { level = "warn", priority = -1 } # Lints used to transition code from the 2018 edition to 2021 41rust-2018-idioms = { level = "warn", priority = -1 } # Lints to nudge you toward idiomatic features of Rust 2018 42rust-2024-compatibility = { level = "warn", priority = -1 } # Lints used to transition code from the 2021 edition to 2024 43# unused = { level = "warn", priority = -1 } # Lints that detect things being declared but not used, or excess syntax 44## Individual 45ambiguous_negative_literals = "warn" # checks for cases that are confusing between a negative literal and a negation that's not part of the literal. 46closure_returning_async_block = "warn" # detects cases where users write a closure that returns an async block. # nightly 47ffi_unwind_calls = "warn" 48# fuzzy_provenance_casts = "warn" # unstable 49# lossy_provenance_casts = "warn" # unstable 50macro_use_extern_crate = "warn" 51meta_variable_misuse = "warn" 52missing_abi = "warn" 53missing_copy_implementations = "allow" # detects potentially-forgotten implementations of Copy for public types. 54missing_debug_implementations = "allow" # detects missing implementations of fmt::Debug for public types. 55missing_docs = "warn" 56# multiple_supertrait_upcastable = "warn" # unstable 57# must_not_suspend = "warn" # unstable 58non_ascii_idents = "warn" 59# non_exhaustive_omitted_patterns = "warn" # unstable 60redundant_imports = "warn" 61redundant_lifetimes = "warn" 62rust_2024_incompatible_pat = "warn" # nightly 63single_use_lifetimes = "warn" 64trivial_casts = "warn" 65trivial_numeric_casts = "warn" 66unit_bindings = "warn" 67unnameable_types = "warn" 68# unqualified_local_imports = "warn" # unstable 69# unreachable_pub = "warn" 70unsafe_code = "warn" 71unstable_features = "warn" 72# unused_crate_dependencies = "warn" 73unused_import_braces = "warn" 74unused_lifetimes = "warn" 75unused_qualifications = "warn" 76unused_results = "warn" 77variant_size_differences = "warn" 78elided_lifetimes_in_paths = "allow" 79# unstable-features = "allow" 80# # Temporary Allows 81dead_code = "allow" 82# unused_imports = "allow" 83 84[lints.clippy] 85# Groups 86nursery = { level = "warn", priority = -1 } 87correctness = { level = "warn", priority = -1 } 88suspicious = { level = "warn", priority = -1 } 89# complexity = { level = "warn", priority = -1 } 90# perf = { level = "warn", priority = -1 } 91# style = { level = "warn", priority = -1 } 92# pedantic = { level = "warn", priority = -1 } 93# restriction = { level = "warn", priority = -1 } 94cargo = { level = "warn", priority = -1 } 95# Temporary Allows 96multiple_crate_versions = "allow" # triggered by lib 97expect_used = "allow" 98missing_docs_in_private_items = "allow" 99# # Temporary Allows - Restriction 100min_ident_chars = "allow" # 50 instances 101# arbitrary_source_item_ordering = "allow" 102renamed_function_params = "allow" # possibly triggered by lib 103# pattern_type_mismatch = "allow" 104# Style Allows 105implicit_return = "allow" 106self_named_module_files = "allow" # Choose one of self_named_module_files or mod_module_files 107mod_module_files = "allow" 108else_if_without_else = "allow" 109std_instead_of_alloc = "allow" 110std_instead_of_core = "allow" 111blanket_clippy_restriction_lints = "allow" 112float_arithmetic = "allow" 113redundant_pub_crate = "allow" 114pub_with_shorthand = "allow" 115absolute_paths = "allow" 116module_name_repetitions = "allow" 117missing_trait_methods = "allow" 118separated_literal_suffix = "allow" 119exhaustive_structs = "allow" 120field_scoped_visibility_modifiers = "allow" 121allow_attributes_without_reason = "allow" 122tests_outside_test_module = "allow" 123ref_patterns = "allow" 124question_mark_used = "allow" 125shadow_reuse = "allow" 126single_call_fn = "allow" 127# Warns 128use_self = "warn" 129str_to_string = "warn" 130print_stdout = "warn" 131unseparated_literal_suffix = "warn" 132unwrap_used = "warn" 133# Denys 134enum_glob_use = "deny" 135# expect_used = "deny" 136 137[dependencies] 138# multihash = "0.19.3" 139diesel = { version = "2.1.5", features = [ 140 "chrono", 141 "sqlite", 142 "r2d2", 143 "returning_clauses_for_sqlite_3_35", 144] } 145diesel_migrations = { version = "2.1.0" } 146# r2d2 = "0.8.10" 147 148atrium-repo = "0.1" 149atrium-api = "0.25" 150# atrium-common = { version = "0.1.2", path = "atrium-common" } 151atrium-crypto = "0.1" 152# atrium-identity = { version = "0.1.4", path = "atrium-identity" } 153# atrium-xrpc = "0.12" 154# atrium-xrpc-client = "0.5" 155# bsky-sdk = { version = "0.1.19", path = "bsky-sdk" } 156rsky-syntax = { git = "https://github.com/blacksky-algorithms/rsky.git" } 157rsky-repo = { git = "https://github.com/blacksky-algorithms/rsky.git" } 158rsky-pds = { git = "https://github.com/blacksky-algorithms/rsky.git" } 159rsky-common = { git = "https://github.com/blacksky-algorithms/rsky.git" } 160rsky-lexicon = { git = "https://github.com/blacksky-algorithms/rsky.git" } 161 162# async in streams 163# async-stream = "0.3" 164 165# DAG-CBOR codec 166# ipld-core = "0.4.2" 167serde_ipld_dagcbor = { version = "0.6.2", default-features = false, features = [ 168 "std", 169] } 170# serde_ipld_dagjson = "0.2.0" 171cidv10 = { version = "0.10.1", package = "cid" } 172 173# Parsing and validation 174base64 = "0.22.1" 175chrono = "0.4.39" 176hex = "0.4.3" 177# langtag = "0.3" 178# multibase = "0.9.1" 179# regex = "1.11.1" 180serde = { version = "1.0.218", features = ["derive"] } 181# serde_bytes = "0.11.17" 182# serde_html_form = "0.2.6" 183serde_json = "1.0.139" 184# unsigned-varint = "0.8" 185 186# Cryptography 187# ecdsa = "0.16.9" 188# elliptic-curve = "0.13.6" 189# jose-jwa = "0.1.2" 190# jose-jwk = { version = "0.1.2", default-features = false } 191# k256 = "0.13.4" 192# p256 = { version = "0.13.2", default-features = false } 193rand = "0.8.5" 194sha2 = "0.10.8" 195 196# Networking 197# dashmap = "6.1.0" 198futures = "0.3.31" 199# hickory-proto = { version = "0.24.3", default-features = false } 200# hickory-resolver = "0.24.1" 201# http = "1.1.0" 202# lru = "0.12.4" 203# moka = "0.12.8" 204tokio = { version = "1.43.0", features = ["macros", "rt-multi-thread"] } 205tokio-util = { version = "0.7.13", features = ["io"] } 206 207# HTTP client integrations 208# isahc = "1.7.2" 209reqwest = { version = "0.12.12", features = ["json"] } 210 211# Errors 212anyhow = "1.0.96" 213thiserror = "2.0.11" 214 215# CLI 216clap = { version = "4.5.30", features = ["derive"] } 217# dirs = "5.0.1" 218 219# Testing 220# gloo-timers = { version = "0.3.0", features = ["futures"] } 221# mockito = "=1.6.1" 222 223# WebAssembly 224# wasm-bindgen-test = "0.3.41" 225# web-time = "1.1.0" 226# bumpalo = "~3.14.0" 227 228# Code generation 229# trait-variant = "0.1.2" 230 231# Others 232# base64ct = "=1.6.0" 233# litemap = "=0.7.4" 234# native-tls = "=0.2.13" 235# zerofrom = "=0.1.5" 236argon2 = { version = "0.5.3", features = ["std"] } 237axum = { version = "0.8.1", features = [ 238 "tower-log", 239 "form", 240 "macros", 241 "ws", 242 "json", 243] } 244azure_core = "0.22.0" 245azure_identity = "0.22.0" 246base32 = "0.5.1" 247clap-verbosity-flag = "3.0.2" 248constcat = "0.6.0" 249figment = { version = "0.10.19", features = ["toml", "env"] } 250http-cache-reqwest = { version = "0.15.1", default-features = false, features = [ 251 "manager-moka", 252] } 253memmap2 = "0.9.5" 254metrics = "0.24.1" 255metrics-exporter-prometheus = "0.16.2" 256reqwest-middleware = { version = "0.4.0", features = ["json"] } 257tower-http = { version = "0.6.2", features = ["cors", "fs", "trace"] } 258tracing = "0.1.41" 259tracing-subscriber = "0.3.19" 260url = "2.5.4" 261uuid = { version = "1.14.0", features = ["v4"] } 262urlencoding = "2.1.3" 263# lazy_static = "1.5.0" 264secp256k1 = "0.28.2" 265dotenvy = "0.15.7" 266deadpool-diesel = { version = "0.6.1", features = [ 267 "serde", 268 "sqlite", 269 "tracing", 270] }