Skip to content

PingKit 0.7.0

Latest

Choose a tag to compare

@gewill gewill released this 09 Sep 15:12
· 1 commit to main since this release
bbc4ba4

PingKit 0.7.0 adds bounded buffering and explicit local-overload errors, and fixes the issues found in the project diagnostic review.

Buffering and migration

  • PingBufferLimits configures public-event and raw-datagram queues (defaults: 1,024 events and 256 datagrams).
  • A full queue stops the run with PingError.bufferOverflow(buffer:capacity:). Buffered public events drain in order; outstanding probes are cancelled. Slow consumers do not change the configured probe cadence.
  • Add the new case to exhaustive PingError switches. An aborted run can expose a .sent event without its terminal event.
  • Socket receive storage is reused, and queued packets retain only their actual bytes.

Fixes

  • Wait before reusing an in-flight 16-bit sequence number; stale timeout callbacks cannot remove a newer probe (#22).
  • Validate unicast reply sources, IPv6 link-local scopes, and quoted error destinations; retain Linux IPv4 source metadata (#23).
  • Reject non-finite and unsafe CLI time arguments with a normal argument error (#24).
  • Correct public-repository installation instructions and bound demo history to 500 rows (#25, #27).
  • Require real IPv4/IPv6 loopback capability in official CI; keep appropriate local environment skips and surface unexpected syscall errors (#28).
  • Stabilize asynchronous test waits on overloaded iOS simulators without weakening behavior assertions (#36).

Validation

macOS, iOS device build and simulator tests, and Linux Swift 6.0/6.1 CI passed. Both address families were exercised on real loopback sockets. DocC built successfully.

The library remains dependency-free. Platform support is unchanged: macOS 13+, iOS 16+, and Linux; IPv4 traceroute remains best-effort on Linux. This release includes source archives, without a prebuilt CLI binary.