Skip to content

v0.1.98

Choose a tag to compare

@ch4r10t33r ch4r10t33r released this 19 Jun 15:39
· 6 commits to main since this release

Highlights

quic: non-blocking outbound dials — fixes an Initial-handshake deadlock that forked zeam devnets (#245)

QuicRuntime.handleDial previously spun a blocking drive loop for up to 20s per dial on the single drive thread, and never called pollAccept during it. Two peers dialing each other simultaneously (an all-to-all gossip mesh at boot) would both wedge in the QUIC Initial handshake — neither accepted the other's inbound — time out at 20s (stalled_phase=initial), and starve established connections of ACKs. Downstream a zeam 3-node devnet forked early and never finalized.

Dials are now advanced non-blocking by driveLoop each tick alongside the listener, pollAccept, established outbounds, gossip, and host ticks. Live-validated: a 3-node zeam devnet that previously sat at finalized=slot 0 now justifies steadily (slot 0→18 in lockstep with wall-clock). Adds a simultaneous mutual dial regression test.

Also included since v0.1.97

  • #239 re-enable previously-skipped tests
  • #242 connection-manager: protect/unprotect, expiry-based trim grace, jittered reconnect backoff
  • #243 remove permanently-skipped handshake-sizes test
  • #244 swarm: hook deadlines, event-queue backpressure policy, deferred command queue (#212)

Full diff: v0.1.97...v0.1.98