A Rust implementation of the QUIC transport protocol and HTTP/3, providing low-level APIs for building high-performance networking applications.
quiche is a Rust library that implements the QUIC transport protocol and HTTP/3, providing low-level APIs for processing QUIC packets and managing connection state. It solves the need for a performant, standards-compliant QUIC implementation that applications can integrate directly, offering fine-grained control over networking behavior. Developed by Cloudflare, it is used in production environments like Cloudflare's edge network and Android's DNS resolver.
Systems programmers and networking engineers building custom networking stacks, high-performance servers, or applications requiring direct integration of QUIC and HTTP/3. It is also suitable for developers extending tools like curl with HTTP/3 support.
Developers choose quiche for its production-ready reliability, low-level control over QUIC connections, and proven use in large-scale deployments like Cloudflare. Its Rust implementation ensures memory safety and performance, while the C FFI enables easy integration into existing C/C++ codebases.
🥧 Savoury implementation of the QUIC transport protocol and HTTP/3
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Powers Cloudflare's edge network HTTP/3 and Android's DNS over HTTP/3, demonstrating real-world scalability and battle-tested performance in critical infrastructure.
Provides low-level APIs for direct packet processing and connection state management, allowing applications to handle I/O and event loops for custom networking stacks.
Offers detailed settings for QUIC versions, ALPN, flow control, and TLS, with defaults that encourage explicit tuning for application-specific needs, as highlighted in the Config object documentation.
Supports building for Android, iOS, and various platforms with Rust toolchains and Docker images, facilitating deployment in diverse environments as outlined in the README.
Requires applications to manually manage I/O, timers, and event loops from scratch, adding significant development overhead compared to higher-level libraries that abstract these details.
Relies on BoringSSL, which needs cmake and on Windows NASM, and switching to OpenSSL disables features like 0-RTT, making the build process more involved and platform-dependent.
The provided examples are not production-ready, and developers must build their own abstractions for common HTTP/3 use cases, lacking out-of-the-box solutions for simple client/server setups.