aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/nghttp3/README.rst
blob: 950c7c59f727e7a1b17acc5fa31599836bed82fc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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:

- `Extensible Prioritization Scheme for HTTP
  <https://datatracker.ietf.org/doc/html/rfc9218>`_
- `Bootstrapping WebSockets with HTTP/3
  <https://datatracker.ietf.org/doc/html/rfc9220>`_

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
--------

- client: https://github.com/ngtcp2/ngtcp2/blob/main/examples/client.cc
- server: https://github.com/ngtcp2/ngtcp2/blob/main/examples/server.cc
- curl: https://github.com/curl/curl/blob/master/lib/vquic/curl_ngtcp2.c

License
-------

The MIT License

Copyright (c) 2019 nghttp3 contributors