Skip to content

v5.0.0

Choose a tag to compare

@github-actions github-actions released this 10 Jun 14:57
· 45 commits to master since this release
  • Breaking (CSV) — Removed duplicate latency_fastest_ms and latency_slowest_ms columns; use latency_min_ms and latency_max_ms
  • Breaking (Accuracy) — Transport errors are excluded from latency metrics (avg/min/max/stdev/percentiles/histogram), so connect failures and timeouts no longer skew percentiles; latency fields report 0 when no responses were received
  • Load testing — Added --disable-keepalive to open a fresh connection per request (sends Connection: close), so connection setup cost is part of the measured latency
  • Request Ergonomics — Added --body-stdin to read the request body from standard input (pipe-friendly)
  • Performance — Latency histogram now uses HDR-style logarithmic buckets (~1% relative precision from 1µs to 1h) instead of a dense linear array, cutting memory from ~4.8 MB to ~18 KB; reported percentiles are accurate within 1%
  • Performance — Duration mode now flushes worker stats in batches (250 requests or 1s) instead of sending one channel message per request
  • Performance — --random-path and --urls-file now reuse one keep-alive client per origin instead of opening a new TCP/TLS connection per request
  • CLI — Live progress is now time-based: a ticker refreshes the line every second regardless of throughput, so slow and rate-limited runs stay visible
  • CLI — Invalid numeric flag values (e.g. -n abc, --max-p99 zz) now print a clear error and exit 1 instead of crashing with a stack trace
  • Refactor — CLI options now use a typed Cli::Options class instead of a union-typed Hash with casts; ARGV is parsed once instead of twice
  • Documentation — README comparison table now covers CI thresholds, keep-alive control, body sources, HTTP/2, and multi-core support; cryload's current HTTP/1.1 and single-core limits are stated explicitly