v1.1.0-rc2
Pre-release
Pre-release
v1.1.0-rc2
Streaming RPC now works on every supported Julia. It was previously compiled out below
Julia 1.12, where streaming calls hung.
Fixes
- Streaming is enabled on Julia 1.10 and 1.11.
src/Streaming.jlis compiled on every
supported version and its testsets no longer carry a version guard (#68) - Fixed an end-of-stream race in the request pump. The pump un-paused libcurl and only
then closed the request stream, so a read callback landing in between paused the transfer
again with nothing left to resume it, and the call hung until its deadline. The handoff is
now a single critical section under the lock the callback already runs under - Worked around a libcurl bug in 8.4.0 and 8.5.0, where pausing a transfer's send
direction also stops its receive direction, which stalled streaming calls mid-stream on
Julia 1.10. Fixed upstream in libcurl 8.6.0 - Worked around a libcurl bug in 8.6.0, where a socket event overwrites rather than adds
to a transfer's pending read interest, which stalled streaming calls at end of stream on
Julia 1.11. Fixed upstream in libcurl 8.7.0 (curl.se/bug/?i=12971)
Both libcurl workarounds are gated on the version actually loaded at run time, so a Julia
with a fixed libcurl pays nothing for them.
Notes
- No performance change: per-message allocations are unchanged on every benchmark workload,
and throughput is within measurement noise