Repository navigation
colibri 0.13.0
colibri 0.13.0 lets a QUIC connection resume its congestion state by RFC 9959's Careful Resume, and adds RFC 9002's NewReno as a third congestion controller. It pins stdx 51c91698, which carries stdx's Zstandard encoder, so a program that links colibri can encode zstd with the same stdx. The h3 server spends 15% fewer instructions a request. It pins chapulin 965668d2.
Breaking changes
- stdx's
platform.Cpugainsavx2andvaes. A program that writes aplatform.Cpuliteral, for example in atls.Cpu, must name both. A program that passes the valueprobe()returns changes nothing. - The QUIC structs grow:
quic.Connectionfrom 208,304 to 208,456 bytes, andserver.Endpointat its default capacity from 52,433,296 to 52,448,528 bytes. docs/performance.md lists each size.
What's new
- Careful Resume (RFC 9959, decision 149). A server or a client gives a
ResumeProviderwithtake,putanddrop, and a connection starts from the window and round-trip time saved for its peer. It runs under CUBIC, NewReno and BBRv3 (Appendix C).ResumeStateis a versioned structure of 32 bytes, andResumeBoundslimits what a connection takes. examples/server_resume.zig shows it. - NewReno (RFC 9002 §7, decision 133 as amended) is a third value of
quic.CongestionController. BBRv3 stays the default. - The bulk run of
bench/run.shmeasures NewReno, and can keep each colibri connection's qlog.
Planned
These are ruled and documented, not built:
- Decision 150:
serve, which binds, reads its files and runs the loop through astd.Io. - Decision 151: JSON in
serverthrough stdx'sjsonmodule. - Decision 152:
client.Headersandclient.TrailersreplaceWantedHeader,wantedandvalues, and a client can send trailers. This breaks dependents' code in a later release.
Speed
The judge counted the h3 server's instructions over steps 29d.9 to 29d.12 (design §8):
- h3-many fell from 42,280 to 35,552 instructions a request.
- Each step won on h3-many, and no h2 input lost.
Checked
tools/ci.sh passed all 39 sections on a62c4eb9, with Zig 0.16.0 on macOS arm64.