Skip to content

New features: io_uring socket readiness, content delay for chaos testing, OpenSSL 3.5 QUIC

Latest

Choose a tag to compare

@bneradt bneradt released this 03 Sep 23:41
542c971

New features

  • io_uring socket readiness (Linux). On supported Linux systems, Proxy Verifier now uses a process-wide io_uring to multiplex socket readiness waits, with poll as the automatic fallback. A new --io-uring option takes auto (default), off, or required. The required mode fails fast if io_uring cannot be used, which makes same-binary A/B comparisons against off straightforward. (#401)
  • Content delay for server chaos testing. A delay key inside a content node pauses between writing a message's headers and writing its body. This lets a replay file simulate an origin that starts a response and then stalls, exercising proxy timeout and partial-response handling. Applies to HTTP/1.1 in the clear and over TLS. For HTTP/2, use a delay on the DATA frame in a frames node instead; combining both is rejected with a diagnostic. (#389)
  • OpenSSL 3.5 native QUIC for HTTP/3. The ngtcp2 transport is replaced with OpenSSL's native QUIC API. nghttp3 is still used for HTTP/3 framing and nghttp2 for HTTP/2. OpenSSL 3.5 or later is now required. (#390)

Build and dependency changes

  • Builds now use distribution-provided OpenSSL and nghttp2/nghttp3 packages instead of the source-built dependency bundle. CMake presets are simplified around system dependency discovery. (#398)
  • Three build Dockerfiles are maintained: Ubuntu 26.04 (GitHub Actions CI), Alpine 3.24 (static musl Linux release artifacts), and Fedora 44 (development). Rocky Linux image definitions are removed. (#398)
  • The Ubuntu CI image is published to GHCR. (#399, #395, #392)

Testing and CI

  • End-to-end tests migrated from the legacy AuTest harness to pytest-based Uranium tests, with isolated, failure-preserving sandboxes and CI sharding. (#400)
  • GitHub Actions CI added, running formatting, RAT license audit, Clang unit tests, and GCC end-to-end tests as separate jobs. (#393, #394)
  • The RAT job now checks copyright years, and copyright-update.sh derives years from git history. (#397, #396)
  • AuTest Python dependencies updated. (#391)