diff options
-rw-r--r-- | .bleep | 2 | ||||
-rw-r--r-- | CHANGELOG.md | 33 | ||||
-rw-r--r-- | pingora-boringssl/Cargo.toml | 2 | ||||
-rw-r--r-- | pingora-cache/Cargo.toml | 14 | ||||
-rw-r--r-- | pingora-core/Cargo.toml | 16 | ||||
-rw-r--r-- | pingora-error/Cargo.toml | 2 | ||||
-rw-r--r-- | pingora-header-serde/Cargo.toml | 6 | ||||
-rw-r--r-- | pingora-http/Cargo.toml | 4 | ||||
-rw-r--r-- | pingora-ketama/Cargo.toml | 2 | ||||
-rw-r--r-- | pingora-limits/Cargo.toml | 2 | ||||
-rw-r--r-- | pingora-load-balancing/Cargo.toml | 12 | ||||
-rw-r--r-- | pingora-lru/Cargo.toml | 2 | ||||
-rw-r--r-- | pingora-memory-cache/Cargo.toml | 8 | ||||
-rw-r--r-- | pingora-openssl/Cargo.toml | 2 | ||||
-rw-r--r-- | pingora-pool/Cargo.toml | 4 | ||||
-rw-r--r-- | pingora-proxy/Cargo.toml | 14 | ||||
-rw-r--r-- | pingora-runtime/Cargo.toml | 2 | ||||
-rw-r--r-- | pingora-timeout/Cargo.toml | 2 | ||||
-rw-r--r-- | pingora/Cargo.toml | 14 | ||||
-rw-r--r-- | tinyufo/Cargo.toml | 2 |
20 files changed, 89 insertions, 56 deletions
@@ -1 +1 @@ -db858a34938d5a4f3eefbc5187cc225dde5c02de
\ No newline at end of file +28022cfd206a7dfa1670a9884eb5b8bf621e8bfd
\ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index d0bfcee..281fee4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/pingora-boringssl/Cargo.toml b/pingora-boringssl/Cargo.toml index d84ed81..c674671 100644 --- a/pingora-boringssl/Cargo.toml +++ b/pingora-boringssl/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-boringssl" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] license = "Apache-2.0" edition = "2021" diff --git a/pingora-cache/Cargo.toml b/pingora-cache/Cargo.toml index 06bc864..eba68c7 100644 --- a/pingora-cache/Cargo.toml +++ b/pingora-cache/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-cache" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] 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 } diff --git a/pingora-core/Cargo.toml b/pingora-core/Cargo.toml index 936a7b9..5ced49d 100644 --- a/pingora-core/Cargo.toml +++ b/pingora-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-core" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] 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 } diff --git a/pingora-error/Cargo.toml b/pingora-error/Cargo.toml index cdbc619..707a660 100644 --- a/pingora-error/Cargo.toml +++ b/pingora-error/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-error" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] license = "Apache-2.0" edition = "2021" diff --git a/pingora-header-serde/Cargo.toml b/pingora-header-serde/Cargo.toml index eaaa643..da079a9 100644 --- a/pingora-header-serde/Cargo.toml +++ b/pingora-header-serde/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-header-serde" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] 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" diff --git a/pingora-http/Cargo.toml b/pingora-http/Cargo.toml index 6cf7f97..ebf90d7 100644 --- a/pingora-http/Cargo.toml +++ b/pingora-http/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-http" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] 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 = [] diff --git a/pingora-ketama/Cargo.toml b/pingora-ketama/Cargo.toml index 1e467b5..bf13e74 100644 --- a/pingora-ketama/Cargo.toml +++ b/pingora-ketama/Cargo.toml @@ -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 <[email protected]>"] license = "Apache-2.0" diff --git a/pingora-limits/Cargo.toml b/pingora-limits/Cargo.toml index 0a0ef99..8018a13 100644 --- a/pingora-limits/Cargo.toml +++ b/pingora-limits/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-limits" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] license = "Apache-2.0" description = "A library for rate limiting and event frequency estimation" diff --git a/pingora-load-balancing/Cargo.toml b/pingora-load-balancing/Cargo.toml index f405786..73a917b 100644 --- a/pingora-load-balancing/Cargo.toml +++ b/pingora-load-balancing/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-load-balancing" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] 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" diff --git a/pingora-lru/Cargo.toml b/pingora-lru/Cargo.toml index 69851c3..f263e46 100644 --- a/pingora-lru/Cargo.toml +++ b/pingora-lru/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-lru" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] license = "Apache-2.0" edition = "2021" diff --git a/pingora-memory-cache/Cargo.toml b/pingora-memory-cache/Cargo.toml index d51268b..3d8f549 100644 --- a/pingora-memory-cache/Cargo.toml +++ b/pingora-memory-cache/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-memory-cache" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] 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" } diff --git a/pingora-openssl/Cargo.toml b/pingora-openssl/Cargo.toml index 19b3349..cb0574a 100644 --- a/pingora-openssl/Cargo.toml +++ b/pingora-openssl/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-openssl" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] license = "Apache-2.0" edition = "2021" diff --git a/pingora-pool/Cargo.toml b/pingora-pool/Cargo.toml index 170e497..5282cf3 100644 --- a/pingora-pool/Cargo.toml +++ b/pingora-pool/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-pool" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] 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" diff --git a/pingora-proxy/Cargo.toml b/pingora-proxy/Cargo.toml index a1a49bd..c391196 100644 --- a/pingora-proxy/Cargo.toml +++ b/pingora-proxy/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-proxy" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] 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"] } diff --git a/pingora-runtime/Cargo.toml b/pingora-runtime/Cargo.toml index 7305129..abaac73 100644 --- a/pingora-runtime/Cargo.toml +++ b/pingora-runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-runtime" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] license = "Apache-2.0" edition = "2021" diff --git a/pingora-timeout/Cargo.toml b/pingora-timeout/Cargo.toml index 1b271e4..8f62476 100644 --- a/pingora-timeout/Cargo.toml +++ b/pingora-timeout/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora-timeout" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] license = "Apache-2.0" edition = "2021" diff --git a/pingora/Cargo.toml b/pingora/Cargo.toml index 2996d57..8ae3aba 100644 --- a/pingora/Cargo.toml +++ b/pingora/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pingora" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] 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" diff --git a/tinyufo/Cargo.toml b/tinyufo/Cargo.toml index 4b3b2c9..0326fe5 100644 --- a/tinyufo/Cargo.toml +++ b/tinyufo/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "TinyUFO" -version = "0.1.0" +version = "0.2.0" authors = ["Yuchen Wu <[email protected]>"] edition = "2021" license = "Apache-2.0" |