A collection of high-performance C++ HTTP libraries for building servers, proxies, and clients, supporting HTTP/1.1 to HTTP/3.
Proxygen is a collection of C++ HTTP libraries developed by Facebook, providing core abstractions for building HTTP servers, proxies, and clients. It solves the need for a high-performance, modern HTTP library in C++ that supports multiple protocols from HTTP/1.1 to HTTP/3. The project includes an easy-to-use HTTPServer framework for simplifying server development.
C++ developers building high-performance networked applications, such as custom HTTP servers, proxies, or clients that require support for modern HTTP protocols.
Developers choose Proxygen for its proven scalability at Facebook, comprehensive protocol support including HTTP/3, and the balance between low-level control and higher-level abstractions. It offers a robust, production-tested alternative to building HTTP infrastructure from scratch.
A collection of C++ HTTP libraries including an easy to use HTTP server.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports HTTP/1.1, SPDY/3, SPDY/3.1, HTTP/2, and HTTP/3 with QUIC integration via mvfst, as stated in the README, making it future-proof for modern web standards.
Built on core abstractions like sessions, codecs, and transactions for efficient network handling, optimized for scalability as used internally at Facebook.
Offers the HTTPServer API with RequestHandler, recommended for building servers without deep control, as per the README's higher-level abstraction.
Used by Facebook for critical HTTP infrastructure, providing proven robustness and real-world performance in large-scale applications.
Compilation requires at least 3 GiB of memory, and setup involves dependencies like folly and mvfst, which can be prohibitive for resource-constrained environments.
Officially tested only on Ubuntu 18.04 and Mac OSX, potentially causing compatibility issues on other platforms, as admitted in the installation notes.
Installation relies on scripts (build.sh) or package managers like vcpkg, with multiple external dependencies, adding overhead for quick prototyping.