curl simplifies its HTTP/3 architecture by removing OpenSSL-QUIC backend support due to API limitations, poor performance, and excessive memory usage, leaving only two HTTP/3 implementations.
The curl project maintains a longstanding principle: offer multiple backend options for protocol implementations. This philosophy previously extended to HTTP/3 with several experimental QUIC backends. Following the earlier removal of the msh3 backend, curl now takes another significant step by eliminating support for the OpenSSL-QUIC stack. Starting with curl 8.19.0, only two HTTP/3 backend options remain: the stable nghttp2/nghttp3 combination and the still-experimental quiche implementation.

The OpenSSL-QUIC Experiment Concludes
OpenSSL's QUIC journey proved complex and problematic. While OpenSSL provides both a full QUIC implementation and a separate QUIC API for third-party stacks, its native QUIC implementation faced substantial hurdles:
Persistent API Deficiencies: Despite ongoing communication with the OpenSSL team since before their initial release, the API consistently lacked essential controls needed for robust integration. curl developers found it impossible to achieve feature parity with other backends.
Severe Performance Issues: Benchmarks revealed OpenSSL-QUIC's transfer speeds lagged dramatically behind alternatives. The leading ngtcp2 implementation consistently outperformed it, sometimes by a factor of three.
Excessive Memory Consumption: Resource usage proved unsustainable. OpenSSL-QUIC consumed up to twenty times more memory than ngtcp2 for equivalent operations, making it impractical for many environments.
Historical Context: A Rocky Path
OpenSSL's QUIC development diverged from community expectations:
- 2019: BoringSSL introduced a QUIC API that gained widespread adoption.
- 2021: OpenSSL rejected a pull request implementing this established API, opting instead to build an entirely new QUIC stack.
- 2023: OpenSSL 3.2 debuted with a QUIC implementation plagued by critical bugs.
- 2025: Version 3.4.1 achieved basic stability, followed by 3.5.0 introducing a functional QUIC API for external stacks – years after alternatives matured.
Simplified Architecture for HTTP/3
This removal streamlines curl's HTTP/3 landscape. The project now focuses resources on enhancing its two remaining backends:
- nghttp2/nghttp3: The fully supported, production-ready combination.
- quiche: An experimental option requiring further development.

This consolidation allows deeper optimization efforts. While reducing choices, it ensures higher quality and reliability for users deploying HTTP/3 with curl. The move reflects practical realities: maintaining underperforming or unstable backends diverts resources from improving core functionality. Developers seeking QUIC alternatives can leverage OpenSSL's API through other stacks, but curl will no longer bundle direct OpenSSL-QUIC integration. The project's trajectory remains firmly fixed on advancing performant, efficient HTTP/3 support through its streamlined backend approach.

Comments
Please log in or register to join the discussion