Feature comparison
Updated 2026-07-24. Sources: project READMEs, source code inspection, RFC compliance tracking. Mirrors the authoritative transport task matrix.
| Feature | RFC | quic-go | quiche | s2n-quic | quicz | Gap |
|---|---|---|---|---|---|---|
| QUIC v1 transport | 9000 | ✅ | ✅ | ✅ | ✅ | — |
| QUIC v2 | 9369 | ✅ | ❌ | ❌ | ✅ | quiche/s2n-quic only V1 |
| TLS 1.3 | 9001 | ✅(Go crypto/tls) | ✅(BoringSSL) | ✅(s2n-tls/rustls) | ✅(pure Zig) | — |
| 0-RTT (early data) | 9001 | ✅ | ✅ | ✅ | ✅ | — |
| Loss detection & recovery | 9002 | ✅ | ✅ | ✅ | ✅ | — |
| Connection migration | 9000 | ✅ | ✅ | ✅ | ✅ | — |
| Path validation | 9000 | ✅ | ✅ | ✅ | ✅ | — |
| Retry + address validation | 9000 | ✅ | ✅ | ✅ | ✅ | — |
| Stateless reset | 9000 | ✅ | ✅ | ✅ | ✅ | — |
| Key update | 9001 | ✅ | ✅ | ✅ | ✅ | — |
| Version negotiation | 9368 | ✅ | ✅ | ✅ | ✅ | — |
| DATAGRAM extension | 9221 | ✅ | ✅ | ✅(unstable) | ✅ | — |
| Multipath | draft | ✅ | ❌ | ❌ | ✅ | — |
| ECN | 9000 | ✅ | ⚠️ rx only | ✅ | ✅ | quiche does not send ECN |
| PMTU discovery | 8899 | ✅ | ✅ | ✅ | ✅ | — |
| GSO/GRO | — | ✅ | ❌ | ✅ | ✅ | quiche defers to app-layer I/O |
| Connection pool | — | ✅ | ❌ | ❌ | ✅ | — |
| qlog | draft | ✅ | ✅(feature-gated) | ❌(event subscriber) | ✅ | — |
| Fuzz targets | — | ✅(OSS-Fuzz) | ✅ | ✅ | ✅ | — |
| NewReno | 9002 | ✅ | ✅ | ❌ | ✅ | s2n-quic only CUBIC+BBR |
| CUBIC | 9438 | ✅ | ✅ | ✅ | ✅ | — |
| BBR | — | ✅ | ✅ | ✅ | ✅ | — |
| Packet pacing | 9002 | ✅ | ✅ | ✅ | ✅ | — |
| AES-128-GCM | 9001 | ✅ | ✅ | ✅ | ✅ | — |
| AES-256-GCM | 9001 | ✅ | ✅ | ✅ | ✅ | — |
| ChaCha20-Poly1305 | 9001 | ✅ | ✅ | ✅ | ✅ | — |
| X25519 ECDH | 8446 | ✅ | ✅ | ✅ | ✅ | — |
| X25519Kyber768 (PQ) | draft | ✅ | ✅ | ✅ | ✅ | — |
| HTTP/3 | 9114 | ✅ | ✅ | ❌ | ⚠️ basic | connection management TODO |
| QPACK static table | 9204 | ✅ | ✅ | ❌ | ✅ | — |
| QPACK dynamic table | 9204 | ✅ | ✅ | ❌ | ❌ | 2/3 recommended |
| HTTP Datagrams | 9297 | ✅ | ❌ | ❌ | ❌ | 1/3 optional |
| WebTransport | draft | ✅ | ❌ | ❌ | ⚠️ basic | session management TODO |
| Stream reset partial delivery | draft | ✅ | ❌ | ❌ | ❌ | quic-go only |
| External interop | — | — | — | — | ✅ all three | — |
| Pure-language TLS (no C) | — | ✅ | ❌ | ❌ | ✅ | — |
| FIPS 140-3 | — | ✅(Go 1.26+) | ❌ | ❌ | ❌ | quic-go only |
| XDP zero-copy I/O | — | ❌ | ❌ | ✅(unstable) | ❌ | s2n-quic only |
Coverage summary
Section titled “Coverage summary”| Metric | quic-go | quiche | s2n-quic | quicz |
|---|---|---|---|---|
| Transport (19 items) | 19/19 | 14/19 | 14/19 | 19/19 |
| Congestion (4 items) | 4/4 | 4/4 | 3/4 | 4/4 |
| Cipher suites (5 items) | 5/5 | 5/5 | 5/5 | 5/5 |
| Application layer (6 items) | 6/6 | 3/6 | 0/6 | 2/6 |
| Platform (3 items) | 2/3 | 0/3 | 1/3 | 1/3 |
| Total (37 items) | 36/37 | 26/37 | 23/37 | 31/37 |
Gap analysis
Section titled “Gap analysis”Mandatory gaps (all three have) — ALL CLOSED:
AES-256-GCM— DONE (675e7ca)X25519Kyber768— DONE (675e7ca)
Recommended (2/3 have):
- QPACK dynamic table — quic-go + quiche
- Complete HTTP/3 connection management — GOAWAY, SETTINGS, stream lifecycle
Optional (1/3 or fewer):
- HTTP Datagrams (RFC 9297) — quic-go only
- Complete WebTransport session — quic-go only
- Stream reset partial delivery — quic-go only (draft)
- FIPS 140-3 — quic-go only
- XDP zero-copy I/O — s2n-quic only