Skip to content

dquic v0.5.0

Latest

Choose a tag to compare

@eareimu eareimu released this 17 Apr 14:01
· 15 commits to main since this release

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-quicdquic, qunreliableqdatagram.
  • Migrate from the old qinterface::iface / local / factory modules
    to the new BindUri + component API.
  • Replace *_FRAME_TYPE constants with WriteFrameType.
  • Rename PacketContains to PacketContent.

Full changelog: v0.4.0...v0.5.0