0.7.0
juicedata/juicefs0.7.0Jan 30, 2026by johnhurt
AI Summary
Release 0.7.0 introduces a virtual L4 stream abstraction, exposes the HttpProxy struct for external customization, and adds support for TLS verification and SSLKEYLOGFILE. It includes numerous enhancements to cache handling, connection filtering, and metrics tracking.
Key Highlights
- Introduce a virtual L4 stream abstraction for HTTP proxying.
- Expose HttpProxy struct and new_mtls method for external crate customization.
- Add support for TLS verification (verify_cert/hostname) and SSLKEYLOGFILE support.
- Add ConnectionFilter trait for early TCP connection filtering.
- Enhance cache handling with body-bytes tracking and max_weight support.
New Features
- ConnectionFilter trait for early TCP connection filtering.
- Virtual L4 stream abstraction.
- Support for verify_cert and verify_hostname using rustls.
- Expose the HttpProxy struct to allow external crates to customize the proxy logic.
- Expose a new_mtls method for creating a HttpProxy with a client_cert_key.
- SSLKEYLOGFILE support to rustls connector.
- Allow spawning background subrequests from main session.
- Allow Extensions in cache LockCore and user tracing.
- Add body-bytes tracking across H1/H2 and proxy metrics.
- Allow setting max_weight on MissFinishType::Appended.
- Allow adding SslDigestExtensions on downstream and upstream.
- Add Custom session support for encapsulated HTTP.
Full Release Notes
## [0.7.0](https://github.com/cloudflare/pingora/compare/0.6.0...0.7.0) - 2026-01-30 ### Highlights - Extensible SslDigest to save user-defined TLS context - Add ConnectionFilter trait for early TCP connection filtering ### 🚀 Features - Add ConnectionFilter trait for early TCP connection filtering - Introduce a virtual L4 stream abstraction - Add support for verify_cert and verify_hostname using rustls - Exposes the HttpProxy struct to allow external crates to customize the proxy logic. - Exposes a new_mtls method for creating a HttpProxy with a client_cert_key to enable mtls peers. - Add SSLKEYLOGFILE support to rustls connector - Allow spawning background subrequests from main session - Allow Extensions in cache LockCore and user tracing - Add body-bytes tracking across H1/H2 and proxy metrics - Allow setting max_weight on MissFinishType::Appended - Allow adding SslDigestExtensions on downstream and upstream - Add Custom session support for encapsulated HTTP ### 🐛 Bug Fixes - Use write timeout consistently for h2 body writes - Prevent downstream error prior to header from canceling cache fill - Fix debug log and new tests - Fix size calculation for buffer capacity - Fix cache admission on header only misses - Fix duplicate zero-size chunk on cache hit - Fix chunked trailer end parsing - Lock age timeouts cause lock reacquisition - Fix transfer fd compile error for non linux os ### Sec - Removed atty - Upgrade lru to >= 0.16.3 crate version because of RUSTSEC-2026-0002 ### Everything Else - Add tracing to log reason for not caching an asset on cache put - Evict when asset count exceeds optional watermark - Remove trailing comma from Display for HttpPeer - Make ProxyHTTP::upstream_response_body_filter return an optional duration for rate limiting - Restore daemonize STDOUT/STDERR when error log file is not specified - Log task info when upstream header failed to send - Check cache enablement to determine cache fill - Update meta when revalidating before lock release - Add ForceFresh status to cache hit filter - Pass stale status to cache lock - Bump max multipart ranges to 200 - Downgrade Expires header warn to debug log - CI and effective msrv bump to 1.83 - Add default noop custom param to client Session - Use static str in ErrorSource or ErrorType as_str - Use bstr for formatting byte strings - Tweak the implementation of and documentation of `connection_filter` feature - Set h1.1 when proxying cacheable responses - Add or remove accept-ranges on range header filter - Update msrv in github ci, fixup .bleep - Override request keepalive on process shutdown - Add shutdown flag to proxy session - Add ResponseHeader in pingora_http crate's prelude - Add a configurable upgrade for pingora-ketama that reduces runtime cpu and memory - Add to cache api spans - Increase visibility of multirange items - Use seek_multipart on body readers - Log read error when reading trailers end - Re-add the warning about cache-api volatility - Default to close on downstream response before body finish - Ensure idle_timeout is polled even if idle_timeout is unset so notify events are registered for h2 idle pool, filter out closed connections when retrieving from h2 in use pool. - Add simple read test for invalid extra char in header end - Allow customizing lock status on Custom NoCacheReasons - Close h1 conn by default if req header unfinished - Add configurable retries for upgrade sock connect/accept - Deflake test by increasing write size - Make the version restrictions on rmp and rmp-serde more strict to prevent forcing consumers to use 2024 edition - Rewind preread bytes when parsing next H1 response - Add epoch and epoch_override to CacheMeta