All notable changes to this project will be documented in this file.
0.4.0 - 2024-11-01
- Add preliminary rustls support
- Add experimental support for windows
- Add the option to use no TLS implementation
- Add support for gRPC-web module to bridge gRPC-web client requests to gRPC server requests
- Add the support for h2c and http1 to coexist
- Add the support for custom L4 connector
- Support opaque extension field in Backend
- Add the ability to ignore informational responses when proxying downstream
- Add un-gzip support and allow decompress by algorithm
- Add the ability to observe backend health status
- Add the support for passing sentry release
- Add the support for binding to local port ranges
- Support retrieving rx timestamp for TcpStream
- Handle bare IPv6 address in raw connect Host
- Set proper response headers when compression is enabled
- Check the current advertised h2 max streams
- Other bug fixes and improvements
- Make sentry an optional feature
- Make timeouts Sync
- Retry all h2 connection when encountering graceful shutdown
- Make l4 module pub to expose Connect
- Auto snake case set-cookie header when downgrade to from h2 to http1.1
- shutdown h2 connection gracefully with GOAWAYs
- Other API signature updates
0.3.0 - 2024-07-12
- Add support for HTTP modules. This feature allows users to import modules written by 3rd parties.
- Add
request_body_filter. Now request body can be inspected and modified. - Add H2c support.
- Add TCP fast open support.
- Add support for server side TCP keep-alive.
- Add support to get TCP_INFO.
- Add support to set DSCP.
- Add
or_err()/or_err_withAPI to convertOptionstopingora::Error. - Add
or_fail()API to convertimpl std::error::Errortopingora::Error. - Add the API to track socket read and write pending time.
- Compression: allow setting level per algorithm.
- Fixed a panic when using multiple H2 streams in the same H2 connection to upstreams.
- Pingora now respects the
Connectionheader it sends to upstream. - Accept-Ranges header is now removed when response is compressed.
- Fix ipv6_only socket flag.
- A new H2 connection is opened now if the existing connection returns GOAWAY with graceful shutdown error.
- Fix a FD mismatch error when 0.0.0.0 is used as the upstream IP
- Dependency: replace
structoptwithclap - Rework the API of HTTP modules
- Optimize remove_header() API call
- UDS parsing now requires the path to have
unix:prefix. The support for the path without prefix is deprecated and will be removed on the next release. - Other minor API changes
0.2.0 - 2024-05-10
- Add support for downstream h2 trailers and add an upstream h2 response trailer filter
- Add the ability to set TCP recv buf size
- Add a convenience function to retrieve Session digest
- Add
body_bytes_read()method to Session - Add
cache_not_modified_filter - Add
SSLKEYLOGsupport for tls upstream - Add
Service<HttpProxy<T>>constructor for providing name - Add
purge_responsecallback - Make
pop_closedpub, to simplify DIY drains
- Fixed gRPC trailer proxying
- Fixed
response_body_filterend_of_streamalways being false - Fixed compile error in Rust <= 1.73
- Fixed non linux build
- Fixed the counting problem of used_weight data field in
LruUnit<T> - Fixed
cargo run --example servermissing cert - Fixed error log string interpolation outside of proper context
- Fixed tinylfu test flake
- API change:
Server::run_forevernow takes ownership and ensures exit semantics - API change:
cleanup()method ofServerApptrait is now async - Behavior change: Always return
HttpTask::Bodyon body done instead ofHttpTask::done - Behavior change: HTTP/1 reason phrase is now parsed and proxied
- Updated
h2dependency for RUSTSEC-2024-0332 - Updated zstd dependencies
- Code optimization and refactor in a few crates
- More examples and docs
0.1.1 - 2024-04-05
Server::newnow acceptsInto<Option<T>>- Implemented client
HttpSession::get_keepalive_valuesfor Keep-Alive parsing - Expose
ListenFdsandFdsto fix a voldemort types issue - Expose config options in
ServerConf, provide newServerconstructor upstream_response_filternow runs on upstream 304 responses during cache revalidation- Added
server_addrandclient_addrAPIs toSession - Allow body modification in
response_body_filter - Allow configuring grace period and graceful shutdown timeout
- Added TinyUFO sharded skip list storage option
- Fixed build failures with the
boringsslfeature - Fixed compile warnings with nightly Rust
- Fixed an issue where Upgrade request bodies might not be handled correctly
- Fix compilation to only include openssl or boringssl rather than both
- Fix OS read errors so they are reported as
ReadErrorrather thanReadTimeoutwhen reading http/1.1 response headers
- Performance improvements in
pingora-ketama - Added more TinyUFO benchmarks
- Added tests for
pingora-cachepurge - Limit buffer size for
InvalidHTTPHeadererror logs - Example code: improvements in pingora client, new LB cluster example
- Typo fixes and clarifications across comments and docs
- First Public Release of Pingora 🎉