v0.1.96
Feature-heavy release: four new protocol areas, expanded discovery/NAT support, and a repository-layout reorg. Public API is additive — existing zig_libp2p.* exports are unchanged. Full cross-impl interop matrix (zig × go-libp2p × rust-libp2p) green.
New protocols
- Rendezvous
/rendezvous/1.0.0— namespace-scoped peer discovery: client (register / unregister / discover with cookie paging) and server with a registration store. Registrations are bound to the transport peer via signed peer records. (#234, #209) - mDNS LAN discovery —
_p2p._udp.localmulticast (IPv4 + IPv6),dnsaddrTXT ingestion,peer_discoveredevents,Hostauto-registerKnownPeer. Discovered dial targets are restricted to private/LAN ranges by default (allow_public_addrsopt-in). (#229, #230, #207) - gossipsub v1.1 peer scoring — per-topic time-in-mesh / delivery / invalid-message scoring with decay and gossip/publish/graylist/PX thresholds + opportunistic graft. Opt-in via
peer_scoring_enabled. (#232, #199)
Kademlia DHT
- Host lifecycle wiring: AutoNAT-driven mode promotion, periodic provider republish, routing-table eviction on disconnect. (#228, #203)
- Pluggable record validators with longest-prefix matching + an IPNS validator implementing the spec (IpnsEntry protobuf, DAG-CBOR
data, Ed25519signatureV2, monotonic sequence, EOL expiry), verified byte-for-byte against a go/boxo reference record. (#231, #233, #198)
NAT traversal & relay
- AutoNAT vote aggregation + active probing (sliding-window quorum, real dial-back verification, observed-IP amplification guard). (#226, #206)
- DCUtR auto-trigger on relayed connections with retry/backoff. (#225, #205)
- Circuit Relay v2 reservation auto-refresh +
/p2p-circuitdial path. (#224, #204) - Identify Push auto-triggered on advertisement changes, streamed over the QUIC runtime. (#222, #223, #202)
Repository & docs
- Repository layout rationalized into
core/·primitives/·protocols/, QUIC transport split, vendored deps moved tovendor/,build/helper split + opt-in soak-test. No public-API or import-path changes (@import("zig_libp2p")→src/root.zig). (#236) - README modernized (libp2p-style) with a spec-coverage matrix; links repointed to the
blockblazorg. (#221, #227)
Notes for embedders
- gossipsub peer scoring and mDNS public-addr acceptance are both opt-in; defaults are unchanged.
- The layout reorg keeps every existing
zig_libp2p.*export; no consumer changes required.