zenith-web 0.1.0

Zenith Web 应用框架:编译期 Trie 路由、类型化 Extractor、中间件 DAG、静态文件服务、统一错误处理
[package]
name = "zenith-web"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
authors.workspace = true
description = "Zenith Web 应用框架:编译期 Trie 路由、类型化 Extractor、中间件 DAG、静态文件服务、统一错误处理"
keywords = ["zenith", "web", "framework", "router", "middleware"]
categories = ["web-programming", "network-programming"]
readme = "../../README.md"

[dependencies]
zenith-api.workspace = true
zenith-foundation.workspace = true
zenith-net = { workspace = true, default-features = false }
zenith-tls.workspace = true
zenith-http1.workspace = true
zenith-http2.workspace = true
zenith-http3.workspace = true
zenith-waf.workspace = true
zenith-cache.workspace = true
zenith-observability.workspace = true
zenith-capability.workspace = true
# 运行时治理(Supervisor/ChangeSet/TaskOffloadChannel)为可选:默认 full 保持
# 向后兼容;facade 的 `web` 特性以 default-features = false 引入最小框架
zenith-runtime = { workspace = true, optional = true }
zenith-proxy.workspace = true
# default-features = false:最小框架不拖入 zenith-forward 的 linux(splice)路径
# (该路径经 zenith-linux 引入 libbpf-sys C 编译);afxdp 特性按需开启
zenith-forward = { workspace = true, default-features = false }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
rustc-hash.workspace = true
tracing.workspace = true
# DCID 路由 HMAC keyed map(防 HashDoS + 恒定时间查找,ring 为 workspace 统一密码学后端)
ring.workspace = true

# AF_XDP 零拷贝数据面依赖(仅 Linux 可选):afxdp_bridge 与 io_uring 批量路径依赖
# 非 Linux 目标这些可选依赖自动失效
[target.'cfg(target_os = "linux")'.dependencies]
# io_uring UDP 批量收发(serve_udp_loop 的 Linux 高性能路径,unsafe 封装于 zenith-linux)
zenith-linux = { workspace = true, optional = true, features = ["io_uring"] }
# XSKMAP 注册接线(AfxdpH3Bridge::register_worker_xsk 的 BpfMaps 类型引用)
zenith-ebpf = { workspace = true, optional = true }

[lints]
workspace = true

[features]
# 向后兼容:默认完整能力(运行时治理 + AF_XDP 数据面)
default = ["full"]
full = ["runtime", "afxdp"]
# 运行时治理:NodeSupervisor + ChangeSet + TaskOffloadChannel(WAF 大 body 卸载)
runtime = ["dep:zenith-runtime"]
# Linux 零拷贝数据面相关能力(仅 Linux 生效):
# AF_XDP 桥接 + io_uring UDP 批量路径 + zenith-forward splice(2) L4 中继;
# 隐式开启 zenith-net 的 linux 数据面
afxdp = ["zenith-net/linux", "zenith-forward/linux", "dep:zenith-linux", "dep:zenith-ebpf"]

[dev-dependencies]
pretty_assertions.workspace = true
# afxdp_bridge 测试构造 UdpDatagram(SmallVec 载荷)所需
smallvec.workspace = true