xitca-http 0.9.4

http library for xitca
Documentation
[package]
name = "xitca-http"
version = "0.9.4"
edition = "2024"
license = "Apache-2.0"
description = "http library for xitca"
repository = "https://github.com/HFQR/xitca-web"
keywords = ["xitca", "xitca-web"]
authors = ["fakeshadow <everestshadow@gmail.com>"]
readme= "README.md"
rust-version.workspace = true

[lints]
workspace = true

[features]
# default include only http1.
default = ["http1"]
# http1 specific feature.
http1 = ["runtime", "dep:httparse", "dep:itoa"]
# http2 specific feature.
http2 = ["runtime", "dep:fnv", "futures-util/alloc"]
# http3 specific feature.
http3 = ["runtime", "xitca-io/quic", "futures-util/alloc", "dep:h3", "dep:h3-quinn", "dep:quinn"]
# openssl as server side tls.
openssl = ["__tls", "runtime", "xitca-tls/openssl"]
# rustls as server side tls.
rustls = ["__tls", "runtime", "xitca-tls/rustls"]
# rustls as server side tls.
native-tls = ["__tls", "runtime", "xitca-tls/native-tls"]
# async runtime feature.
runtime = ["dep:tokio", "xitca-io/runtime"]

# unstable features that are subject to be changed at anytime.
io-uring = ["xitca-io/runtime-uring"]
router = ["xitca-router"]

# shared for tls features
__tls = []

[dependencies]
xitca-io = { workspace = true }
xitca-service = { workspace = true, features = ["alloc"] }
xitca-unsafe-collection = { workspace = true, features = ["bytes"] }

http = { workspace = true }
http-body-alt = { workspace = true }
httpdate = "1.0"
pin-project-lite = { workspace = true }
tracing = { version = "0.1.40", default-features = false }

# tls support shared
xitca-tls = { workspace = true, optional = true }

# http/1 support
httparse = { workspace = true, optional = true }
itoa = { version = "1", optional = true }

# http/2 support
fnv = { version = "1.0.7", optional = true }
futures-util = { version = "0.3.17", default-features = false, optional = true }

# http/3 support
h3 = { version = "0.0.8", optional = true }
h3-quinn = { version = "0.0.10", optional = true }
quinn = { version = "0.11", default-features = false, features = ["ring"], optional = true }

# async runtime support.
tokio = { workspace = true, features = ["rt", "sync", "time"], optional = true }

# util service support
xitca-router = { workspace = true, optional = true }

[target.'cfg(not(target_family = "wasm"))'.dependencies]
socket2 = { workspace = true, features = ["all"] }

[dev-dependencies]
assert_matches = "1.5"
criterion = "0.8"
proptest = "1.11"
xitca-server = { workspace = true }

[[bench]]
name = "h1_decode"
harness = false

[[bench]]
name = "h2_hpack"
harness = false
required-features = ["http2"]