blob: 1d591148801969bc2f9d52592a5e351963c3e404 [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
[package]
name = "server"
version = "0.9.0-edge.6"
edition = "2024"
license = "Apache-2.0"
publish = false
[package.metadata.cargo-udeps.ignore]
normal = ["tracing-appender"]
[package.metadata.cargo-machete]
ignored = [
"ahash",
"anyhow",
"argon2",
"async-channel",
"async_zip",
"axum",
"axum-server",
"bytes",
"chrono",
"ctrlc",
"cyper",
"cyper-axum",
"dashmap",
"err_trail",
"error_set",
"figlet-rs",
"hash32",
"human-repr",
"jsonwebtoken",
"left-right",
"mimalloc",
"mime_guess",
"opentelemetry",
"opentelemetry-appender-tracing",
"opentelemetry-otlp",
"opentelemetry-semantic-conventions",
"opentelemetry_sdk",
"papaya",
"rand",
"ringbuffer",
"rmp-serde",
"rolling-file",
"rust-embed",
"rustls",
"rustls-pemfile",
"send_wrapper",
"serde",
"socket2",
"strum",
"sysinfo",
"tempfile",
"tracing-appender",
"tracing-opentelemetry",
"ulid",
"uuid",
"vergen-git2",
]
[[bin]]
name = "iggy-server"
path = "src/main.rs"
[features]
default = ["mimalloc", "iggy-web"]
disable-mimalloc = []
mimalloc = ["dep:mimalloc"]
iggy-web = ["dep:rust-embed", "dep:mime_guess"]
systemd = ["dep:sd-notify"]
[dependencies]
ahash = { workspace = true }
argon2 = { workspace = true }
async-channel = { workspace = true }
async_zip = { workspace = true }
axum = { workspace = true }
axum-server = { workspace = true }
blake3 = { workspace = true }
bytemuck = { workspace = true }
bytes = { workspace = true }
chrono = { workspace = true }
clap = { workspace = true }
compio = { workspace = true }
configs = { workspace = true }
consensus = { workspace = true }
cpu_allocation = { workspace = true }
crossfire = { workspace = true }
ctrlc = { workspace = true }
cyper = { workspace = true }
cyper-axum = { workspace = true }
cyper-core = { workspace = true }
dashmap = { workspace = true }
dotenvy = { workspace = true }
err_trail = { workspace = true }
error_set = { workspace = true }
figlet-rs = { workspace = true }
fs2 = { workspace = true }
futures = { workspace = true }
hash32 = { workspace = true }
human-repr = { workspace = true }
hyper = { workspace = true }
hyper-util = { workspace = true }
iggy_binary_protocol = { workspace = true }
iggy_common = { workspace = true }
journal = { workspace = true }
jsonwebtoken = { workspace = true }
left-right = { workspace = true }
message_bus = { workspace = true }
metadata = { workspace = true }
mimalloc = { workspace = true, optional = true }
mime_guess = { workspace = true, optional = true }
nix = { workspace = true }
opentelemetry = { workspace = true }
opentelemetry-appender-tracing = { workspace = true }
opentelemetry-otlp = { workspace = true }
opentelemetry-semantic-conventions = { workspace = true }
opentelemetry_sdk = { workspace = true }
papaya = { workspace = true }
partitions = { workspace = true }
prometheus-client = { workspace = true }
rand = { workspace = true }
ringbuffer = { workspace = true }
rmp-serde = { workspace = true }
rolling-file = { workspace = true }
rust-embed = { workspace = true, optional = true }
rustls = { workspace = true }
rustls-pemfile = { workspace = true }
sd-notify = { workspace = true, optional = true }
secrecy = { workspace = true }
send_wrapper = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
server_common = { workspace = true }
shard = { workspace = true }
socket2 = { workspace = true }
strum = { workspace = true }
sysinfo = { workspace = true }
system_stats = { workspace = true }
tempfile = { workspace = true }
thiserror = { workspace = true }
tokio = { workspace = true }
toml = { workspace = true }
tower-http = { workspace = true }
tracing = { workspace = true }
tracing-appender = { workspace = true }
tracing-opentelemetry = { workspace = true }
ulid = { workspace = true }
uuid = { workspace = true }
[target.'cfg(not(target_env = "musl"))'.dependencies]
hwlocality = { workspace = true }
[target.'cfg(target_env = "musl")'.dependencies]
hwlocality = { workspace = true, features = ["vendored"] }
[build-dependencies]
vergen-git2 = { workspace = true }
[dev-dependencies]
assert_cmd = { workspace = true }
bytemuck = { workspace = true }
proc-macro2 = { workspace = true }
quote = { workspace = true }
# Reconciler unit tests assert on `ShardMetrics` snapshots and
# `IggyShard::parked_frame_count`, gated to test/simulator so they cannot grow
# production callers. `shard`'s own `cfg(test)` is false when compiled as our
# dependency, so the feature is how those accessors become visible. The resolver
# keeps a dev-dependency's features out of non-test targets, so a production
# build still links `shard` without `simulator`.
shard = { workspace = true, features = ["simulator"] }
syn = { workspace = true }
tokio = { workspace = true, features = ["full", "test-util"] }
[lints.clippy]
enum_glob_use = "deny"
pedantic = { level = "deny", priority = -1 }
nursery = "warn"
# Sync impls of async traits are deliberate (non-blocking bus, in-memory storage, test doubles).
unused_async_trait_impl = "allow"
[lints.rust]
warnings = "deny"