[workspace] members = ["backend/*", "frontend", "shared", "tools/tuliprox-testkit"] resolver = "2" [workspace.package] version = "3.3.128" edition = "2021" rust-version = "1.95.0" [workspace.lints.clippy] # Shared lint policy for every workspace crate. # Extracted crates must not silently lose the lint level that previously # existed only as a crate attribute on backend/app/src/main.rs. all = { level = "warn", priority = -1 } pedantic = { level = "warn", priority = -1 } wildcard_imports = "deny" # Allows carried over verbatim from backend/app/src/main.rs. They were already # accepted for the backend; moving the policy to the workspace must not change # which warnings the backend emits. module_name_repetitions = "allow" must_use_candidate = "allow" return_self_not_must_use = "allow" missing_errors_doc = "allow" large_futures = "allow" [workspace.dependencies] shared = { version = "3", path = "shared" } tuliprox-hls = { version = "3", path = "backend/hls" } tuliprox-auth = { version = "3", path = "backend/auth" } tuliprox-dvr = { version = "3", path = "backend/dvr" } tuliprox-mpegts = { version = "3", path = "backend/mpegts" } tuliprox-iptv = { version = "3", path = "backend/iptv" } tuliprox-parser = { version = "3", path = "backend/parser" } tuliprox-metadata = { version = "3", path = "backend/metadata" } tuliprox-messaging = { version = "3", path = "backend/messaging" } tuliprox-processing = { version = "3", path = "backend/processing" } tuliprox-btree = { version = "3", path = "backend/btree" } tuliprox-config-loader = { version = "3", path = "backend/config-loader" } tuliprox-session = { version = "3", path = "backend/session" } tuliprox-media-server = { version = "3", path = "backend/media-server" } tuliprox-repository = { version = "3", path = "backend/repository" } tuliprox-core = { version = "3", path = "backend/core" } tuliprox-curation = { version = "3", path = "backend/curation" } tuliprox-library = { version = "3", path = "backend/library" } serde = { version = "1.0.229", features = ["derive", "rc"] } serde_json = { version = "1.0.151" } regex = "1.13.1" log = "0.4.34" chrono = "0.4.45" bytes = "1.12.1" base64 = "0.23.1" blake3 = "1.8.7" fastrand = "2.5.0" lz4_flex = "0.14.0" brotli = "8.0.4" indexmap = "2.14.0" dashmap = "6.2.1" arc-swap = "1.9.2" paste = "1.0.15" pest = "2.9.0" pest_derive = "2.9.0" zeroize = "1.9.0" deunicode = "1.6.2" path-clean = "1.0.1" url = "2.5.8" cron = "0.17.0" futures = "0.3.34" serde-saphyr = "0.0.26" sha2 = "0.11.0" hmac = "0.13.0" thiserror = "2.0.20" tokio = { version = "1.53.1" } strum = "0.28.0" strum_macros = "0.28.0" dotenvy = "0.15.7" [profile.release] debug = false opt-level = 3 # Maximal performance lto = "fat" # Enable Link Time Optimization codegen-units = 1 # Reduce number of codegen units to increase optimizations. panic = 'abort' # Abort on panic strip = true incremental = false [profile.dev] lto = false incremental = true codegen-units = 256 [profile.dev-slim] inherits = "dev" opt-level = 0 strip = "none" lto = "off" debug = "line-tables-only" [profile.dev-slim.package."*"] debug = false [profile.release.package.frontend] opt-level = 'z' # Size optimization for frontend [profile.release.package.shared] opt-level = 3 # optimize shared for speed