Files
tuliprox/Cargo.toml
T
DarkBreakpoint 38030d51fd chore: clear the clippy backlog for Gate B
Gate B runs `clippy --workspace --all-targets -- -D warnings`, and 107
warnings stood in front of it. 68 were mechanical and are fixed by
`clippy --fix`.

The remaining 39 are all one new pedantic lint, `assert_is_empty`, and
it is allowed rather than applied. Its suggestion for
`assert!(out.is_empty())` is

    assert_eq!(out, [] as [recording::recording_rule_scheduler::MaterializationCandidate; 0]);

naming a type by a crate-root path that is not in scope at the
assertion. That is why `clippy --fix` declines to apply it: the
suggestion does not compile where it is offered. Taking it would trade a
slightly better panic message for 39 unreadable assertions, so the lint
is allowed by name, next to the existing allows, with the reasoning and
the condition for reversing it written down.

This is a judgement call on a style lint in test code, not a silenced
defect; the plan's rule against broad allows is about the latter.

Workspace clippy is now clean.
2026-09-09 07:13:03 -05:00

103 lines
3.6 KiB
TOML

[workspace]
members = ["backend/*", "frontend", "shared"]
resolver = "2"
[workspace.package]
version = "3.3.91"
edition = "2021"
rust-version = "1.95.0"
[workspace.lints.clippy]
# Shared policy for every workspace crate (modularization plan, Phase 0).
# 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"
# Its suggested rewrite of `assert!(x.is_empty())` is
# `assert_eq!(x, [] as [some::crate_root::Path; 0])`, which names a type that
# is usually not in scope at the assertion — which is why `clippy --fix`
# declines to apply it. The panic message improves; every one of the 39 call
# sites gets materially harder to read. Reverse this if the suggestion is
# ever made to use an in-scope type.
assert_is_empty = "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 = { version = "3", path = "backend/app" }
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-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"
thiserror = "2.0.20"
tokio = { version = "1.53.1" }
strum = "0.28.0"
strum_macros = "0.28.0"
[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.release.package.frontend]
opt-level = 'z' # Size optimization for frontend
[profile.release.package.shared]
opt-level = 3 # optimize shared for speed