Skip to content

v0.17.0

Choose a tag to compare

@rustyconover rustyconover released this 21 Jul 19:03
· 158 commits to main since this release

Minor release. Requires vgi-rpc >= 0.26.0, which changes what workers served through this package put on the wire.

Changed

HTTP response-codec negotiation is now client-authoritative. VGI's own X-VGI-Accept-Encoding outranks the generic Accept-Encoding. cpp-httplib (the DuckDB extension's HTTP client) injects Accept-Encoding: deflate, gzip, br, zstd — gzip before zstd — so walking that list first picked gzip and ignored the zstd-first order VGI states. gzip compression dominated large Arrow responses: 432ms vs ~40ms of zstd for 200MB of bodies.

identity is a first-class accept token. A client can now explicitly demand an uncompressed body; previously "no compression" was only reachable by accident, when nothing on offer happened to be producible. Content-Encoding: identity on a request passes through instead of 415ing.

VGI-Supported-Encodings is always advertised, including present-but-empty when compression is disabled. Absent and empty mean different things: absent is a legacy server (clients assume {zstd}), empty is a server positively stating it speaks no compression.

zstd level default drops 3 → 1, compression on by default. On Arrow IPC bodies level 1 measured 4.4x faster and smaller on hex-digest data, 2.7x faster and smaller on mixed numeric, and 1.4x faster for 2% more bytes on compressible text.

Fixed

  • Lint gate: ruff format / import ordering for the compute-ladder fixtures added in 00aad32 (the embedded pytest-ruff plugin only covers tests/, not vgi/).
  • Regenerated the landing-conformance golden for the four new example-worker functions (collatz_steps, hash_rounds, passthru, sha256_hex): 203 → 207 functions.