Release 0.2.0

This commit is contained in:
Yuchen Wu 2024-05-10 10:40:14 -07:00 committed by Yuchen Wu
parent 7507b69683
commit 3dbdcc6b09
20 changed files with 89 additions and 56 deletions

2
.bleep
View file

@ -1 +1 @@
db858a34938d5a4f3eefbc5187cc225dde5c02de
28022cfd206a7dfa1670a9884eb5b8bf621e8bfd

View file

@ -2,6 +2,39 @@
All notable changes to this project will be documented in this file.
## [0.2.0](https://github.com/cloudflare/pingora/compare/0.1.1...0.2.0) - 2024-05-10
### 🚀 Features
- 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 `SSLKEYLOG` support for tls upstream
- Add `Service<HttpProxy<T>>` constructor for providing name
- Add `purge_response` callback
- Make `pop_closed` pub, to simplify DIY drains
### 🐛 Bug Fixes
- Fixed gRPC trailer proxying
- Fixed `response_body_filter` `end_of_stream` always 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 server` missing cert
- Fixed error log string interpolation outside of proper context
- Fixed tinylfu test flake
### ⚙️ Changes and Miscellaneous Tasks
- API change: `Server::run_forever` now takes ownership and ensures exit semantics
- API change: `cleanup()` method of `ServerApp` trait is now async
- Behavior change: Always return `HttpTask::Body` on body done instead of `HttpTask::done`
- Behavior change: HTTP/1 reason phrase is now parsed and proxied
- Updated `h2` dependency for RUSTSEC-2024-0332
- Updated zstd dependencies
- Code optimization and refactor in a few crates
- More examples and docs
## [0.1.1](https://github.com/cloudflare/pingora/compare/0.1.0...0.1.1) - 2024-04-05
### 🚀 Features

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-boringssl"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-cache"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"
@ -17,12 +17,12 @@ name = "pingora_cache"
path = "src/lib.rs"
[dependencies]
pingora-core = { version = "0.1.0", path = "../pingora-core", default-features = false }
pingora-error = { version = "0.1.0", path = "../pingora-error" }
pingora-header-serde = { version = "0.1.0", path = "../pingora-header-serde" }
pingora-http = { version = "0.1.0", path = "../pingora-http" }
pingora-lru = { version = "0.1.0", path = "../pingora-lru" }
pingora-timeout = { version = "0.1.0", path = "../pingora-timeout" }
pingora-core = { version = "0.2.0", path = "../pingora-core", default-features = false }
pingora-error = { version = "0.2.0", path = "../pingora-error" }
pingora-header-serde = { version = "0.2.0", path = "../pingora-header-serde" }
pingora-http = { version = "0.2.0", path = "../pingora-http" }
pingora-lru = { version = "0.2.0", path = "../pingora-lru" }
pingora-timeout = { version = "0.2.0", path = "../pingora-timeout" }
http = { workspace = true }
indexmap = "1"
once_cell = { workspace = true }

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-core"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"
@ -19,13 +19,13 @@ name = "pingora_core"
path = "src/lib.rs"
[dependencies]
pingora-runtime = { version = "0.1.0", path = "../pingora-runtime" }
pingora-openssl = { version = "0.1.0", path = "../pingora-openssl", optional = true }
pingora-boringssl = { version = "0.1.0", path = "../pingora-boringssl", optional = true }
pingora-pool = { version = "0.1.0", path = "../pingora-pool" }
pingora-error = { version = "0.1.0", path = "../pingora-error" }
pingora-timeout = { version = "0.1.0", path = "../pingora-timeout" }
pingora-http = { version = "0.1.0", path = "../pingora-http" }
pingora-runtime = { version = "0.2.0", path = "../pingora-runtime" }
pingora-openssl = { version = "0.2.0", path = "../pingora-openssl", optional = true }
pingora-boringssl = { version = "0.2.0", path = "../pingora-boringssl", optional = true }
pingora-pool = { version = "0.2.0", path = "../pingora-pool" }
pingora-error = { version = "0.2.0", path = "../pingora-error" }
pingora-timeout = { version = "0.2.0", path = "../pingora-timeout" }
pingora-http = { version = "0.2.0", path = "../pingora-http" }
tokio = { workspace = true, features = ["rt-multi-thread", "signal"] }
futures = "0.3"
async-trait = { workspace = true }

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-error"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-header-serde"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"
@ -27,6 +27,6 @@ zstd-safe = { version = "7.1.0", features = ["std"] }
http = { workspace = true }
bytes = { workspace = true }
httparse = { workspace = true }
pingora-error = { version = "0.1.0", path = "../pingora-error" }
pingora-http = { version = "0.1.0", path = "../pingora-http" }
pingora-error = { version = "0.2.0", path = "../pingora-error" }
pingora-http = { version = "0.2.0", path = "../pingora-http" }
thread_local = "1.0"

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-http"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"
@ -19,7 +19,7 @@ path = "src/lib.rs"
[dependencies]
http = { workspace = true }
bytes = { workspace = true }
pingora-error = { version = "0.1.0", path = "../pingora-error" }
pingora-error = { version = "0.2.0", path = "../pingora-error" }
[features]
default = []

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-ketama"
version = "0.1.0"
version = "0.2.0"
description = "Rust port of the nginx consistent hash function"
authors = ["Pingora Team <pingora@cloudflare.com>"]
license = "Apache-2.0"

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-limits"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
description = "A library for rate limiting and event frequency estimation"

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-load-balancing"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"
@ -18,11 +18,11 @@ path = "src/lib.rs"
[dependencies]
async-trait = { workspace = true }
pingora-http = { version = "0.1.0", path = "../pingora-http" }
pingora-error = { version = "0.1.0", path = "../pingora-error" }
pingora-core = { version = "0.1.0", path = "../pingora-core", default-features = false }
pingora-ketama = { version = "0.1.0", path = "../pingora-ketama" }
pingora-runtime = { version = "0.1.0", path = "../pingora-runtime" }
pingora-http = { version = "0.2.0", path = "../pingora-http" }
pingora-error = { version = "0.2.0", path = "../pingora-error" }
pingora-core = { version = "0.2.0", path = "../pingora-core", default-features = false }
pingora-ketama = { version = "0.2.0", path = "../pingora-ketama" }
pingora-runtime = { version = "0.2.0", path = "../pingora-runtime" }
arc-swap = "1"
fnv = "1"
rand = "0"

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-lru"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-memory-cache"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"
@ -17,11 +17,11 @@ name = "pingora_memory_cache"
path = "src/lib.rs"
[dependencies]
TinyUFO = { version = "0.1.0", path = "../tinyufo" }
TinyUFO = { version = "0.2.0", path = "../tinyufo" }
ahash = { workspace = true }
tokio = { workspace = true, features = ["sync"] }
async-trait = { workspace = true }
pingora-error = { version = "0.1.0", path = "../pingora-error" }
pingora-error = { version = "0.2.0", path = "../pingora-error" }
log = { workspace = true }
parking_lot = "0"
pingora-timeout = { version = "0.1.0", path = "../pingora-timeout" }
pingora-timeout = { version = "0.2.0", path = "../pingora-timeout" }

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-openssl"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-pool"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"
@ -23,7 +23,7 @@ lru = { workspace = true }
log = { workspace = true }
parking_lot = "0.12"
crossbeam-queue = "0.3"
pingora-timeout = { version = "0.1.0", path = "../pingora-timeout" }
pingora-timeout = { version = "0.2.0", path = "../pingora-timeout" }
[dev-dependencies]
tokio-test = "0.4"

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-proxy"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"
@ -18,12 +18,12 @@ name = "pingora_proxy"
path = "src/lib.rs"
[dependencies]
pingora-error = { version = "0.1.0", path = "../pingora-error" }
pingora-core = { version = "0.1.0", path = "../pingora-core", default-features = false }
pingora-timeout = { version = "0.1.0", path = "../pingora-timeout" }
pingora-cache = { version = "0.1.0", path = "../pingora-cache", default-features = false }
pingora-error = { version = "0.2.0", path = "../pingora-error" }
pingora-core = { version = "0.2.0", path = "../pingora-core", default-features = false }
pingora-timeout = { version = "0.2.0", path = "../pingora-timeout" }
pingora-cache = { version = "0.2.0", path = "../pingora-cache", default-features = false }
tokio = { workspace = true, features = ["macros", "net"] }
pingora-http = { version = "0.1.0", path = "../pingora-http" }
pingora-http = { version = "0.2.0", path = "../pingora-http" }
http = { workspace = true }
futures = "0.3"
bytes = { workspace = true }
@ -44,7 +44,7 @@ env_logger = "0.9"
hyperlocal = "0.8"
hyper = "0.14"
tokio-tungstenite = "0.20.1"
pingora-load-balancing = { version = "0.1.0", path = "../pingora-load-balancing" }
pingora-load-balancing = { version = "0.2.0", path = "../pingora-load-balancing" }
prometheus = "0"
futures-util = "0.3"
serde = { version = "1.0", features = ["derive"] }

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-runtime"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"

View file

@ -1,6 +1,6 @@
[package]
name = "pingora-timeout"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"

View file

@ -1,6 +1,6 @@
[package]
name = "pingora"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
license = "Apache-2.0"
edition = "2021"
@ -22,12 +22,12 @@ all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[dependencies]
pingora-core = { version = "0.1.0", path = "../pingora-core", default-features = false }
pingora-http = { version = "0.1.0", path = "../pingora-http" }
pingora-timeout = { version = "0.1.0", path = "../pingora-timeout" }
pingora-load-balancing = { version = "0.1.0", path = "../pingora-load-balancing", optional = true, default-features = false }
pingora-proxy = { version = "0.1.0", path = "../pingora-proxy", optional = true, default-features = false }
pingora-cache = { version = "0.1.0", path = "../pingora-cache", optional = true, default-features = false }
pingora-core = { version = "0.2.0", path = "../pingora-core", default-features = false }
pingora-http = { version = "0.2.0", path = "../pingora-http" }
pingora-timeout = { version = "0.2.0", path = "../pingora-timeout" }
pingora-load-balancing = { version = "0.2.0", path = "../pingora-load-balancing", optional = true, default-features = false }
pingora-proxy = { version = "0.2.0", path = "../pingora-proxy", optional = true, default-features = false }
pingora-cache = { version = "0.2.0", path = "../pingora-cache", optional = true, default-features = false }
[dev-dependencies]
structopt = "0.3"

View file

@ -1,6 +1,6 @@
[package]
name = "TinyUFO"
version = "0.1.0"
version = "0.2.0"
authors = ["Yuchen Wu <yuchen@cloudflare.com>"]
edition = "2021"
license = "Apache-2.0"