Skip to content

QuicX Documentation

This directory is the documentation map of QuicX — categorizing all documents under docs/en/ by responsibility and pointing out what questions each document answers. It does not teach you how to use QuicX itself; for the entry points, please refer to the repository root README and Sections 1 and 2.


Minimal path: First build QuicX, then run your first HTTP/3 hello world.

DocumentWhat question does it answer?
getting-started/build.mdHow to integrate QuicX with CMake / Bazel, using add_subdirectory and find_package
getting-started/quick_start.mdHow to run the first HTTP/3 hello world, and what behavior to expect

Three API walk-throughs needed when writing your first non-demo program.

DocumentWhat question does it answer?
tutorial/http3_api_guide.mdHTTP/3 application layer API: routing, middleware, Server Push, streaming body
tutorial/quic_api_guide.mdQUIC transport layer API: raw streams, custom RPC tunnels
tutorial/configuration_reference.mdMeanings and default values of various parameters in QuicConfig / Http3Config

How-to style material — operational guides that are neither contracts nor tutorials, consult as needed.

DocumentWhat question does it answer?
guide/perf_testing.mdUse of performance testing and profiling tools
guide/ci_local.mdReproducing the isomorphic environment of GitHub Actions CI locally
guide/interop_overview.mdHow the quic-interop-runner interoperability testing framework works
guide/interop_runbook.mdInterop testing runbook: commands and scenarios
guide/sanitizer_hello_world_load.mdSanitizer scenario: hello_world load generation
guide/sanitizer_file_transfer.mdSanitizer scenario: file_transfer

Authoritative documents that downstream projects can rely on, updated infrequently.

DocumentWhat question does it answer?
reference/support_matrix.mdPlatform, toolchain, and Sanitizer support matrix
reference/api_stability.mdPublic headers inventory and API stability policy
reference/qlog_event_coverage.mdQLog event coverage list (implemented / not covered)

Release notes and security policy are at the repo root: ../../CHANGELOG.md · ../../SECURITY.md · ../../CONTRIBUTING.md.

Time-stamped result snapshots, replaced by new versions after each round of testing — non-contractual.

DocumentScope
reports/interop_status.mdLatest interoperability test results with external QUIC implementations
reports/performance_baseline.mdPerformance baseline (CPU hotspots, Buffer / Frame / Packet throughput)

Internal conventions worth knowing when integrating or extending QuicX. This section is not an RFC discussing “what to do in the future”, but describes the existing invariants in the current code.

The documentation is extensive and divided into five groups by responsibility.

Understand how a datagram / connection / handshake is processed.

DocumentWhat question does it answer?
design/packet_lifecycle.mdThe complete path of a datagram from socket input to the upper-layer frame
design/connection_anatomy.mdThree-layer structure of the Connection subtree (36 cpp files): Skeleton / Coordinator / Controller
design/handshake_state_machine.mdState machine for TLS / Encryption Levels / Key Update
design/ownership_and_memory.mdOwnership and lifecycle of Buffer / Connection / Stream

Algorithms, protocols, and optimization trade-offs involving “why we did this”.

DocumentWhat question does it answer?
design/loss_recovery.mdPTO / loss timer / ACK handling (RFC 9002)
design/congestion_control.mdReno / Cubic / BBR v1/v2/v3 implementation trade-offs and pluggable mechanism
design/qpack_dynamic_table.mdCollaboration of QPACK dynamic table with encoder/decoder streams

Underlying mechanisms supporting the main path, consult as needed.

DocumentWhat question does it answer?
design/process_model.mdmaster + worker process model, cross-thread channels, and why we don’t use thread pools
design/timer_design.mdTrade-off between timing wheel vs treemap two-layer timers
design/pool_allocator.mdWhy frame-level memory pools are needed and how they complement existing optimizations
design/udp_io.mdGSO / sendmmsg / recvmmsg trade-offs and fallback paths

Protocol details walkthrough by RFC chapters.

DocumentWhat question does it answer?
design/stream_state_machine.mdStream rx/tx dual state machines (RFC 9000 §3)
design/crypto_keying.mdTLS key derivation and Key Update (RFC 9001 §5/§6)
design/h3_connection.mdH3 control stream / QPACK encoder/decoder stream multi-stream collaboration
design/upgrade_negotiation.mdH1 -> H3 negotiation, Alt-Svc, and Upgrade protocol headers interaction
DocumentWhat question does it answer?
design/metrics.mdBuilt-in Metrics catalog and emission points

Beyond documentation, the source code itself is the best reference:

  • example/ and test/ are “executable documentation” — check example/hello_world for usage, test/unit_test/quic/ for protocol module unit tests, and test/congestion_control/ for the congestion control simulator.
  • The repository directory structure itself serves as an index: each subdirectory under src/quic/ roughly corresponds to chapters of RFC 9000 / 9001 / 9002; simply cd into them as needed.
  • The source code at key decision points (congestion control / loss recovery / flow control / handshake / QPACK) contains nearby RFC section-level comments; if you have doubts, directly check the clauses referenced in the comments.