dquic v0.5.0
The project has been renamed from gm-quic to dquic.
The private gm-quic-traversal fork is now merged into the main tree,
contributing two new crates:
qtraversal— STUN client/server, hole punching, port prediction.qresolve— DNS resolver trait and implementation.
qunreliable has been renamed to qdatagram.
qinterface has been reworked around a BindUri-based identifier and
a component-oriented core, replacing the previous iface/local/factory layout.
Connection is now Clone, and the client connect path does multi-path
probing with async resolution. A new qconnection::traversal module
wires things into qtraversal. qbase gains frames for address management
and hole punching (add_address, remove_address, punch_hello,
punch_done, punch_me_now); ReceiveFrame/SendFrame move into frame::io;
*_FRAME_TYPE constants are replaced by WriteFrameType;
PacketContains is renamed to PacketContent.
The top-level dquic crate exposes per-interface STUN / relay configuration,
on-demand NAT detection, extended ToCertificate / ToPrivateKey
implementations, and a Router::close() for clean shutdown.
New traversal-client / traversal-server examples demonstrate the flow,
and the old inline tests have been extracted into tests/{auth,echo,traversal}.rs.
Notable fixes include STUN agent filtering by iface family,
a puncher deadlock resolved around address_book,
reliable direct PunchDone confirmation, client-only 0-RTT logging,
and renewed localhost test certificates.
Dependencies netdev, rand, reqwest, and nix were bumped.
CI gains traversal, commitlint, and feishu-bot workflows;
interop.yml is removed; the Docker image builds with cache.
Upgrade notes
- Rename dependencies:
gm-quic→dquic,qunreliable→qdatagram. - Migrate from the old
qinterface::iface/local/factorymodules
to the newBindUri+ component API. - Replace
*_FRAME_TYPEconstants withWriteFrameType. - Rename
PacketContainstoPacketContent.
Full changelog: v0.4.0...v0.5.0