http-net 0.9.2

Sans-IO HTTP/1.1 server and client: strict RFC 9112 parsing, smuggling defences, bounded buffers, keep-alive, chunked bodies, upgrades, a blocking std adapter, no third-party dependencies.
Documentation
# =============================================================================
#  R E P S   ยท   http-net
# =============================================================================
[package]
name    = "http-net"
version = "0.9.2"

# Minimum Supported Rust Version (MSRV)
rust-version = "1.85"
edition = "2024"

# License
license = "Apache-2.0 OR MIT"

# Readme
readme = "README.md"

# Description
description = "Sans-IO HTTP/1.1 server and client: strict RFC 9112 parsing, smuggling defences, bounded buffers, keep-alive, chunked bodies, upgrades, a blocking std adapter, no third-party dependencies."

# Keywords (5 max)
keywords = ["http", "server", "client", "sans-io", "protocol"]

# Categories
categories = ["network-programming", "web-programming", "no-std"]

# Links
homepage      = "https://github.com/jamesgober/http-net"
repository    = "https://github.com/jamesgober/http-net"
documentation = "https://docs.rs/http-net"

# Authors
authors = ["James Gober <me@jamesgober.com>"]

# The fuzz crate, the HTTP Garden origin, and local tooling are not part of
# the published package.
exclude = ["fuzz/", "garden/", "dev/", ".github/", "scripts/"]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[lib]
name = "http_net"
path = "src/lib.rs"


# FEATURE FLAGS
# #################################
[features]
default = ["std"]
# The blocking adapter over std::net (Server, Connection, Client, get).
# Without it the crate is no_std and needs only `alloc`.
std = []


# DEPENDENCIES
# #################################
[dependencies]
# The shared RFC 9110 field grammar (tokens, OWS, field values, decimal and
# hex digits, the civil calendar of HTTP-date). First party, zero runtime
# dependencies of its own, `no_std` without `alloc`; by published version
# only, never a path (spec OD-1, NFR-1). Its default feature set is empty;
# `default-features = false` keeps it that way if one is ever added.
parse-net = { version = "0.7", default-features = false }


# DEV DEPENDENCIES
# #################################
[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }
proptest  = "1"
# Differential tests only (tests/prop_httparse.rs); never a runtime dependency.
httparse  = "1.10"


# BENCHMARKS
# #################################
[[bench]]
name    = "bench"
harness = false


# EXAMPLES
# #################################
[[example]]
name              = "localhost"
required-features = ["std"]

[[example]]
name              = "serve"
required-features = ["std"]

[[example]]
name              = "get"
required-features = ["std"]

[[example]]
name              = "soak"
required-features = ["std"]


# RELEASE PROFILE
# #################################
[profile.release]
opt-level     = 3
lto           = "fat"
codegen-units = 1
panic         = "abort"
strip         = "symbols"