Repository navigation
colibri 0.8.0: the server's router, client.Request, h3 deadlines, and the KeyUpdate read fix
colibri 0.8.0 gives the server a router and one endpoint for TCP and QUIC, and gives the client client.Request and client.Response. Each module now exports its names from its root alone. It pins chapulin e6e3c1e7 and stdx 5da4397.
Breaking changes
- Each module exports the names a program calls from its root, and no file (decision 115). A type named after its file has its own name: write
h2.Connectionforh2.connection.Connection, and the same forhttp.Field,core.Reader,qpack.Encoder,quic.PeerAddressand the others. A method that only a module's own files call is private. server.Endpointholds every TCP and QUIC connection, and a program answers each request by itsId(decision 119).server.ConfigreplacesEndpointConfigand takes the TLS identity once.Connection,QuicConnectionandQuicConfigleave the root.Endpoint.initreturnsStartError, witherror.DeadlineInvalidfor deadlines a connection refuses.versionsreplacescleartexton the server and the client, andlimitsholds the bounds that named h2 (decision 117). A server that allows both versions reads h2's preface in cleartext (RFC 9113 §3.3).server.Limitsholdspeer_resets_maxandresets_sent_max, andserver.constants.quic_peer_reset_rate_maxis removed. A server refuses a body rate that an honest peer cannot meet over TLS or h2 (decision 110).client.Requestandclient.Responsereplaceclient.HttpExchange(decision 124).client.ConfigreplacesChannelConfigand takes onetls.Clientvalue. The channel's types lose their prefix:Values,Input,Received,Event,OpenandPhase.ConnectionandQuicConnectionleave the root.Channel.start_quicdraws a QUIC connection's IDs and grease itself, soQuicStartandQuicStartErrorleave the root.RequestErrornames only whatChannel.requestreturns.client.Codinggainszstdandbr, so a switch over it must name both.tls.Cpuholds the program's probe and atls.Timingthat the program states (chapulin 0.2.0, decision 97 as amended).tls.quic.versionis private.
What's new
server.router: literal paths, parameters, a trailing wildcard, and HEAD answered by a route's GET. A table that hides a route does not compile (decision 122).- The server runs its deadlines and rate limits over h3 too.
- The client decodes zstd and br from decoder pools the program places. It sends an idempotent request again once after an unanswered close, and holds a long h11 head over TLS.
client.ChannelOfsizes a channel. - A
tls.Clientvalue can take no tickets, withtakes_tickets = false. - After a KeyUpdate that asks for an answer, the client and the server read on, and send the answer before their next record of application data (RFC 9846 §4.7.3).
Checked
GitHub's main workflow passed on 7496cdc (run 39183420881).