Skip to content

v0.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 16 Oct 20:51
1b0ff7b

0.4.0 (2026-10-16)

Features

  • api: expose the local address and the PROXY header destination on FlowContext (eccedff)
  • chained-proxy: make the backoff budget part of RetryBackoff (193b2e5)
  • loadtest: bootstrap a dedicated machine for the cross-proxy comparison (664be11)
  • loadtest: count the Windows host's load against runs on WSL2 (9d8d13d)
  • loadtest: proxy-java setting to run the JVM proxies on another JDK (194d6c2)
  • loadtest: refine the sweep's knee and record proxy CPU per request (d649211)
  • loadtest: take the page's memory figures from a separate run (f53ab01)
  • mitm: mitm_server_handshake (deferred or eager), with failover either way (d8c03d5)
  • per-protocol policies with LittleProxy compatibility as a preset; MITM handshake timing, generated responses, backoff budget, flow addresses (4733482)
  • policy: generated_responses, and FlowContext.responseSource() (0c282c9)
  • policy: protocol policies per client protocol; LittleProxy compatibility as a preset (6f037ab)

Bug Fixes

  • core: an immediate drain no longer closes connections accepted after it began (e1bf0f3)
  • http3: send an HTTP/3 request's body as its HTTP/1 head is framed (f2ed3fa)
  • loadtest: give the g3proxy build the Rust toolchain setup.sh installed (76fcd96)
  • loadtest: keep the kernel's socket buffers out of the memory scenario's limit (e9fd612)
  • loadtest: keep the kernel's socket buffers out of the memory scenario's limit (39aa8c5)
  • loadtest: pick measurement cores by topology, and install any distribution's Squid (990ae65)
  • loadtest: reject WSL2 runs without the Windows log, and leave the port range alone there (9f71c4a)
  • mitm: deferred TLS failover keeps pool accounting and the request's retry budget (6975e71)
  • tls: a retry without SNI is part of the attempt the server rejected (3f20681)

Performance Improvements

  • core: ask a server connection's local address once (86c2c23)
  • core: keep the idle timeout of keep-alive waits without a timer per wait (20307ea)
  • cut virtual-thread hand-offs per request (one write per small response, shared idle deadlines, direct poller registration on JDK 21) (588d406)
  • http1: send a small response's head and body in one write (48478bb)
  • launcher: register socket waits directly on JDK 21 (c35d1da)

Documentation

  • loadtest: state WSL2's core-placement limitation for the methodology (30efd83)
  • perf: dedicated-machine benchmark campaign, page redesign and harness hardening (724c99b)
  • perf: drop the WSL2 campaign from the caveats (54fc25c)
  • perf: memory results with socket buffers beside the cap (8260e0b)
  • perf: publish the dedicated-machine campaign (a8f467c)
  • perf: publish the memory runs with socket buffers beside the cap (681acc7)
  • perf: redesign the performance page's charts and tables (fb95260)
  • say how the one-core cost table was measured, and why its p99 is not the sweep's (114e33f)
  • what a request costs on one core, and which JDK to run (fc23f3e)