ngtcp2 / nghttp3

HTTP/3 library written in C
https://nghttp2.org/nghttp3/
MIT License
858 stars 93 forks source link
http3 qpack quic rfc9114 rfc9204 rfc9218 rfc9220 rfc9297

nghttp3

nghttp3 is an implementation of RFC 9114 <https://datatracker.ietf.org/doc/html/rfc9114> HTTP/3 mapping over QUIC and RFC 9204 <https://datatracker.ietf.org/doc/html/rfc9204> QPACK in C.

It does not depend on any particular QUIC transport implementation.

Documentation

Online documentation <https://nghttp2.org/nghttp3/>_ is available.

Build from git

.. code-block:: shell

$ git clone https://github.com/ngtcp2/nghttp3 $ cd nghttp3 $ git submodule update --init $ autoreconf -i $ ./configure $ make -j$(nproc) check

HTTP/3

This library implements RFC 9114 <https://datatracker.ietf.org/doc/html/rfc9114>_ HTTP/3. It does not support server push.

The following extensions have been implemented:

It can also send and receive SETTINGS_H3_DATAGRAM from HTTP Datagrams and the Capsule Protocol <https://datatracker.ietf.org/doc/html/rfc9297>_.

QPACK

This library implements RFC 9204 <https://datatracker.ietf.org/doc/html/rfc9204>_ QPACK. It supports dynamic table.

Optimizations

This library optionally uses AVX2, if available, to optimize its performance. To compile with AVX2, add -mavx2 to CFLAGS. Note that by default, CFLAGS is set to -g -O2. When specifying CFLAGS, include them as well (e.g., -g -O2 -mavx2).

Examples

License

The MIT License

Copyright (c) 2019 nghttp3 contributors