v0.17.0
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 coverstests/, notvgi/). - Regenerated the landing-conformance golden for the four new example-worker functions (
collatz_steps,hash_rounds,passthru,sha256_hex): 203 → 207 functions.