Skip to content

Commit bd6a74b

Browse files
Release 0.5.0
1 parent b807723 commit bd6a74b

File tree

23 files changed

+113
-61
lines changed

23 files changed

+113
-61
lines changed

.bleep

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
75b626c78ed3fc9c7f7e9aa6f4d1bb7cbedc2c67
1+
f2baaca58bb42d4202c112f1eb8e70ffc2ed0aaa

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737

3838
- name: Pin crates to versions for MSRV
3939
run: |
40-
[[ ${{ matrix.toolchain }} != 1.72.0 ]] || (cargo update -p boring --precise 4.13.0 && cargo update -p litemap --precise 0.7.4 && cargo update -p zerofrom --precise 0.1.5 && cargo update -p half --precise 2.4.1)
40+
[[ ${{ matrix.toolchain }} != 1.72.0 ]] || (cargo update -p boring --precise 4.13.0 && cargo update -p litemap --precise 0.7.4 && cargo update -p zerofrom --precise 0.1.5 && cargo update -p half --precise 2.4.1 && cargo update -p backtrace --precise 0.3.74)
4141
4242
- name: Run cargo fmt
4343
run: cargo fmt --all -- --check

CHANGELOG.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,54 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [0.5.0](https://github.com/cloudflare/pingora/compare/0.4.0...0.5.0) - 2025-05-09
6+
7+
### 🚀 Features
8+
9+
- [Add tweak_new_upstream_tcp_connection hook to invoke logic on new upstream TCP sockets prior to connection](https://github.com/cloudflare/pingora/commit/be4a023d18c2b061f64ad5efd0868f9498199c91)
10+
- [Add ability to configure max retries for upstream proxy failures](https://github.com/cloudflare/pingora/commit/6c5d6021a6e67c971e835bef269655d0db94c2d1)
11+
- [Allow tcp user timeout to be configurable](https://github.com/cloudflare/pingora/commit/e77ca63da58892281f36dcb97c51a8b1e882e2f6)
12+
- [Add peer address to downstream handshake error logs](https://github.com/cloudflare/pingora/commit/3f9e0a2fae8feaea12a1a9687e6b4bf4616f66c5)
13+
- [Allow proxy to set stream level downstream read timeout](https://github.com/cloudflare/pingora/commit/87ae8ce2e7883c0a924a776b193c8a4f858b9349)
14+
- [Improve support for sending custom response headers and bodies for error messages](https://github.com/cloudflare/pingora/commit/a8a6e77eef2c0f4d2a45f00c5b0e316dd373f2f2)
15+
- [Allow configuring multiple listener tasks per endpoint](https://github.com/cloudflare/pingora/commit/69254671148938f6bc467f6decc2fc89ee7f531e)
16+
- [Add get_stale and get_stale_while_update for memory-cache](https://github.com/cloudflare/pingora/commit/bb28044cbe9ac9251940b8a313d970c7d15aaff6)
17+
18+
### 🐛 Bug Fixes
19+
20+
- [Fix deadloop if proxy_handle_upstream exits earlier than proxy_handle_downstream](https://github.com/cloudflare/pingora/commit/bb111aaa92b3753e650957df3a68f56b0cffc65d)
21+
- [Check on h2 stream end if error occurred for forwarding HTTP tasks](https://github.com/cloudflare/pingora/commit/e18f41bb6ddb1d6354e824df3b91d77f3255bea2)
22+
- [Check for content-length underflow on end of stream h2 header](https://github.com/cloudflare/pingora/commit/575d1aafd7c679a50a443701a4c55dcfdbc443b2)
23+
- [Correctly send empty h2 data frames prior to capacity polling](https://github.com/cloudflare/pingora/commit/c54190432a2efea30c5a0187bb7d078d33570a43)
24+
- [Signal that the response is done when body write finishes to avoid h1 downstream/h2 upstream errors](https://github.com/cloudflare/pingora/commit/5750e4279e75b1e764dcfc5530aa7a7cebe3abef)
25+
- [Ignore h2 pipe error when finishing an H2 upstream](https://github.com/cloudflare/pingora/commit/8ad15031291eb5779e0e93e714eb969c4132f632)
26+
- [Add finish_request_body() for HTTP healthchecks so that H2 healthchecks succeed](https://github.com/cloudflare/pingora/commit/67bc7cc170e754d335cc1d6d526f203c4345eceb)
27+
- [Fix Windows compile errors by updating `impl<T> UniqueID` to use correct return type](https://github.com/cloudflare/pingora/commit/1756948df77d257bddf7ab798cc3fddf348a91c8)
28+
- [Fixed compilation errors on Windows](https://github.com/cloudflare/pingora/commit/906cb90864bf6e441727083c9cbd4f6fb289d6f5)
29+
- [Poll for H2 capacity before sending H2 body to propagate backpressure](https://github.com/cloudflare/pingora/commit/b6f24ff3725d9d8b6a740d87cad959d94befbe54)
30+
- [Fix for write_error_response for http2 downstreams to set EOS](https://github.com/cloudflare/pingora/commit/c0fa5065812d87e6e404c5624b26cd99c5194079)
31+
- [Always drain v1 request body before session reuse](https://github.com/cloudflare/pingora/commit/fda3317ec822678564d641e7cf1c9b77ee3759ff)
32+
- [Fixes HTTP1 client reads to properly timeout on initial read](https://github.com/cloudflare/pingora/commit/3c7db34acb0d930ae7043290a88bc56c1cd77e45)
33+
- [Fixes issue where if TLS client never sends any bytes, hangs forever](https://github.com/cloudflare/pingora/commit/d1bf0bcac98f943fd716278d674e7d10dce2223e)
34+
35+
### Everything Else
36+
37+
- [Add builder api for pingora listeners](https://github.com/cloudflare/pingora/commit/3f564af3ae56e898478e13e71d67d095d7f5dbbd)
38+
- [Better handling for h1 requests that contain both transfer-encoding and content-length](https://github.com/cloudflare/pingora/commit/9287b82645be4a52b0b63530ba38aa0c7ddc4b77)
39+
- [Allow setting raw path in request to support non-UTF8 use cases](https://github.com/cloudflare/pingora/commit/e6b823c5d89860bb97713fdf14f197f799aed6af)
40+
- [Allow reusing session on errors prior to proxy upstream](https://github.com/cloudflare/pingora/commit/f8d01278a586c60392b1e3b92e5ed97a415d8fe7)
41+
- [Avoid allocating large buffer in the accept() loop](https://github.com/cloudflare/pingora/commit/ef234f5baa45650be064c7dd34c2f17986361480)
42+
- [Ensure HTTP/1.1 when forcing chunked encoding](https://github.com/cloudflare/pingora/commit/9281cab8eab1b545f15f0e387d2ba4cd2ca27364)
43+
- [Reject if the HTTP header contains duplicated Content-Length values](https://github.com/cloudflare/pingora/commit/eef35768d11305d1293468a6c3ce91a3858dc0fc)
44+
- [proxy_upstream_filter tries to reuse downstream by default](https://github.com/cloudflare/pingora/commit/86293e65b5c7d8a96f3a333a1f191766dc95bee5)
45+
- [Allow building server that avoids std::process::exit during shutdown](https://github.com/cloudflare/pingora/commit/2d977d4eb808d8bcbc0ce87cabac4cf4854dfb80)
46+
- [Update Sentry crate to 0.36](https://github.com/cloudflare/pingora/commit/01a1f9a65c51a4351c29d6961ea3164a6a811958)
47+
- [Update the bounds on `MemoryCache` methods to accept broader key types](https://github.com/cloudflare/pingora/commit/d66923a9a41d00b326cef5dfb57d8c020d6a4abb)
48+
- [Flush already received data if upstream write errors](https://github.com/cloudflare/pingora/commit/aa7c2f1a89a652137a987e5f5dbdab228c2f4d06)
49+
- [Allow modules to receive HttpTask::Done, flush response compression on receiving Done task](https://github.com/cloudflare/pingora/commit/c82fb6ba57b95c256b58095881a33a9bc08f170a)
50+
- API signature changes as part of experimental proxy cache support
51+
- Note MSRV was effectively bumped to 1.82 from 1.72 due to a dependency update, though older compilers may still be able to build by pinning dependencies, e.g. `cargo update -p backtrace --precise 0.3.74`.
52+
553
## [0.4.0](https://github.com/cloudflare/pingora/compare/0.3.0...0.4.0) - 2024-11-01
654

755
### 🚀 Features

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ API docs are also available for all the crates.
4343
* Pingora-timeout: A more efficient async timer system
4444
* TinyUfo: The caching algorithm behind pingora-memory-cache
4545

46+
Note that Pingora proxy integration with caching should be considered experimental, and as such APIs related to caching are currently highly volatile.
47+
4648
# System requirements
4749

4850
## Systems
@@ -58,7 +60,9 @@ Both x86_64 and aarch64 architectures will be supported.
5860

5961
Pingora keeps a rolling MSRV (minimum supported Rust version) policy of 6 months. This means we will accept PRs that upgrade the MSRV as long as the new Rust version used is at least 6 months old.
6062

61-
Our current MSRV is 1.72.
63+
Our current MSRV is effectively 1.82.
64+
65+
Previously Pingora advertised an MSRV of 1.72. Older Rust versions may still be able to compile via `cargo update` pinning dependencies such as `[email protected]`. The advertised MSRV in config files will be officially bumped to 1.82 in an upcoming release.
6266

6367
Building with the optional feature `boringssl` with Boring >= 4.14 requires Rust 1.80.
6468

pingora-boringssl/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pingora-boringssl"
3-
version = "0.4.0"
3+
version = "0.5.0"
44
authors = ["Yuchen Wu <[email protected]>"]
55
license = "Apache-2.0"
66
edition = "2021"

pingora-cache/Cargo.toml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pingora-cache"
3-
version = "0.4.0"
3+
version = "0.5.0"
44
authors = ["Yuchen Wu <[email protected]>"]
55
license = "Apache-2.0"
66
edition = "2021"
@@ -17,12 +17,12 @@ name = "pingora_cache"
1717
path = "src/lib.rs"
1818

1919
[dependencies]
20-
pingora-core = { version = "0.4.0", path = "../pingora-core", default-features = false }
21-
pingora-error = { version = "0.4.0", path = "../pingora-error" }
22-
pingora-header-serde = { version = "0.4.0", path = "../pingora-header-serde" }
23-
pingora-http = { version = "0.4.0", path = "../pingora-http" }
24-
pingora-lru = { version = "0.4.0", path = "../pingora-lru" }
25-
pingora-timeout = { version = "0.4.0", path = "../pingora-timeout" }
20+
pingora-core = { version = "0.5.0", path = "../pingora-core", default-features = false }
21+
pingora-error = { version = "0.5.0", path = "../pingora-error" }
22+
pingora-header-serde = { version = "0.5.0", path = "../pingora-header-serde" }
23+
pingora-http = { version = "0.5.0", path = "../pingora-http" }
24+
pingora-lru = { version = "0.5.0", path = "../pingora-lru" }
25+
pingora-timeout = { version = "0.5.0", path = "../pingora-timeout" }
2626
http = { workspace = true }
2727
indexmap = "1"
2828
once_cell = { workspace = true }

pingora-core/Cargo.toml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pingora-core"
3-
version = "0.4.0"
3+
version = "0.5.0"
44
authors = ["Yuchen Wu <[email protected]>"]
55
license = "Apache-2.0"
66
edition = "2021"
@@ -19,14 +19,14 @@ name = "pingora_core"
1919
path = "src/lib.rs"
2020

2121
[dependencies]
22-
pingora-runtime = { version = "0.4.0", path = "../pingora-runtime" }
23-
pingora-openssl = { version = "0.4.0", path = "../pingora-openssl", optional = true }
24-
pingora-boringssl = { version = "0.4.0", path = "../pingora-boringssl", optional = true }
25-
pingora-pool = { version = "0.4.0", path = "../pingora-pool" }
26-
pingora-error = { version = "0.4.0", path = "../pingora-error" }
27-
pingora-timeout = { version = "0.4.0", path = "../pingora-timeout" }
28-
pingora-http = { version = "0.4.0", path = "../pingora-http" }
29-
pingora-rustls = { version = "0.4.0", path = "../pingora-rustls", optional = true }
22+
pingora-runtime = { version = "0.5.0", path = "../pingora-runtime" }
23+
pingora-openssl = { version = "0.5.0", path = "../pingora-openssl", optional = true }
24+
pingora-boringssl = { version = "0.5.0", path = "../pingora-boringssl", optional = true }
25+
pingora-pool = { version = "0.5.0", path = "../pingora-pool" }
26+
pingora-error = { version = "0.5.0", path = "../pingora-error" }
27+
pingora-timeout = { version = "0.5.0", path = "../pingora-timeout" }
28+
pingora-http = { version = "0.5.0", path = "../pingora-http" }
29+
pingora-rustls = { version = "0.5.0", path = "../pingora-rustls", optional = true }
3030
tokio = { workspace = true, features = ["net", "rt-multi-thread", "signal"] }
3131
futures = "0.3"
3232
async-trait = { workspace = true }

pingora-error/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pingora-error"
3-
version = "0.4.0"
3+
version = "0.5.0"
44
authors = ["Yuchen Wu <[email protected]>"]
55
license = "Apache-2.0"
66
edition = "2021"

pingora-header-serde/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pingora-header-serde"
3-
version = "0.4.0"
3+
version = "0.5.0"
44
authors = ["Yuchen Wu <[email protected]>"]
55
license = "Apache-2.0"
66
edition = "2021"
@@ -27,6 +27,6 @@ zstd-safe = { version = "7.1.0", features = ["std"] }
2727
http = { workspace = true }
2828
bytes = { workspace = true }
2929
httparse = { workspace = true }
30-
pingora-error = { version = "0.4.0", path = "../pingora-error" }
31-
pingora-http = { version = "0.4.0", path = "../pingora-http" }
30+
pingora-error = { version = "0.5.0", path = "../pingora-error" }
31+
pingora-http = { version = "0.5.0", path = "../pingora-http" }
3232
thread_local = "1.0"

pingora-http/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pingora-http"
3-
version = "0.4.0"
3+
version = "0.5.0"
44
authors = ["Yuchen Wu <[email protected]>"]
55
license = "Apache-2.0"
66
edition = "2021"
@@ -19,7 +19,7 @@ path = "src/lib.rs"
1919
[dependencies]
2020
http = { workspace = true }
2121
bytes = { workspace = true }
22-
pingora-error = { version = "0.4.0", path = "../pingora-error" }
22+
pingora-error = { version = "0.5.0", path = "../pingora-error" }
2323

2424
[features]
2525
default = []

0 commit comments

Comments
 (0)