HTTP/3
# HTTP/3

HTTP/3 es la tercera versión principal del Protocolo de Transferencia de Hipertexto utilizado para intercambiar información en la World Wide Web, que sucederá a HTTP/2. HTTP/3 es un borrador basado en un RFC anterior, entonces nombrado "Protocolo de Transferencia de Hipertexto (HTTP) sobre QUIC". QUIC es un protocolo de red perteneciente a la capa de transporte desarrollado inicialmente por Google en el que se utiliza el control de congestión del espacio de usuario está utilizado sobre el Protocolo de Datagrama del Usuario (UDP).

El 28 de octubre de 2018 en un debate de la lista de correo, Mark Nottingham, Presidente del IETF HTTP y QUIC Working Groups, hizo la petición oficial para cambiar el nombre de HTTP-over-QUIC a HTTP/3, para "identificarlo claramente como otra unión de la semántica de HTTP al protocolo de cable... para que la gente entienda su separación de QUIC" y para pasar su desarrollo del QUIC Working Group al HTTP Working Group después de finalizar y publicar el borrador. La propuesta de Nottingham fue aceptada por otros miembros del IETF unos días después, en noviembre de 2018.

El soporte para HTTP/3 fue agregado a Chrome (Canary build) en septiembre de 2019, y mientras HTTP/3 no está aún activado por defecto en ningún navegador, para 2020 HTTP/3 tiene soporte no por defecto en las versiones estables de Chrome y Firefox y puede ser activado. El soporte experimental para HTTP/3 fue agregado a Safari Technology Preview el 8 de abril de 2020.

## Implementaciones

### Navegador

| Navegador | Versión implementada | Fecha |
| - | - | - |
| Chrome | Stable build (79) | Diciembre de 2019 |
| Firefox | Stable build (72.0.1) | Enero de 2020 |
| Safari | Safari Technology Preview 104 | Abril de 2020 |
| Edge | Edge (Canary build) | 2020 |

### Bibliotecas

Hay disponibles bibliotecas de código abierto que implementan la lógica del cliente o del servidor para QUIC y HTTP/3.

| Nombre | Lenguaje de programación | Compañía | Repositorio |
| - | - | - | - |
| quiche | Rust | Cloudflare | https://github.com/cloudflare/quiche |
| neqo | Rust | Mozilla | https://github.com/mozilla/neqo |
| proxygen | C++ | Facebook | https://github.com/facebook/proxygen#quic-Y-http3 |
| Cronet | C++ | Google | https://github.com/chromium/chromium/tree/master/net/quic |
| lsquic | C | LiteSpeed | https://github.com/litespeedtech/lsquic |
| nghttp3 | C | | https://github.com/ngtcp2/nghttp3 |
| h2o | C | | https://github.com/h2o/h2o |
| libcurl | C | | https://github.com/curl/curl |
| MsQuic | C | Microsoft | https://github.com/microsoft/msquic |
| Flupke | Java | | https://bitbucket.org/pjtr/flupke |
| aioquic | Python | | https://github.com/aiortc/aioquic |
| quic-go | Go | | https://github.com/lucas-clemente/quic-go |
| quic | Haskell | | https://github.com/kazu-yamamoto/quic |

La biblioteca de quichés de Cloudflare puede ser usada como un parche para nginx. El soporte para HTTP/3 está programado para la versión 1.17 de nginx.

Hay varias bibliotecas que implementan un borrador más antiguo del protocolo o de las versiones de Google QUIC (p. ej. Q046 utilizado en Chrome 76), como nghttp3.

