diff --git a/Cargo.lock b/Cargo.lock
index a69762df8..d94dfc246 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -151,7 +151,7 @@ checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3"
[[package]]
name = "anyspawn"
-version = "0.7.0"
+version = "0.8.0"
dependencies = [
"criterion",
"futures",
@@ -165,7 +165,7 @@ dependencies = [
[[package]]
name = "anyspawn_azure"
-version = "0.2.0"
+version = "0.3.0"
dependencies = [
"anyspawn",
"async-trait",
@@ -389,7 +389,7 @@ name = "automation"
version = "0.1.0"
dependencies = [
"duct",
- "ohno 0.4.0",
+ "ohno 0.5.0",
"serde",
"serde_json",
]
@@ -739,7 +739,7 @@ checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593"
[[package]]
name = "bytesbuf"
-version = "0.8.0"
+version = "0.9.0"
dependencies = [
"alloc_tracker",
"benchmarking",
@@ -760,21 +760,21 @@ dependencies = [
[[package]]
name = "bytesbuf_io"
-version = "0.8.0"
+version = "0.9.0"
dependencies = [
"bytesbuf",
"futures",
"futures-core",
"mutants",
"new_zealand",
- "ohno 0.4.0",
+ "ohno 0.5.0",
"testing_aids",
"trait-variant",
]
[[package]]
name = "cachet"
-version = "0.11.0"
+version = "0.12.0"
dependencies = [
"alloc_tracker",
"anyspawn",
@@ -805,21 +805,21 @@ dependencies = [
[[package]]
name = "cachet_memory"
-version = "0.6.0"
+version = "0.7.0"
dependencies = [
"cachet_tier",
"criterion",
"foldhash 0.2.0",
"moka",
"mutants",
- "ohno 0.4.0",
+ "ohno 0.5.0",
"thread_aware",
"tokio",
]
[[package]]
name = "cachet_service"
-version = "0.3.0"
+version = "0.4.0"
dependencies = [
"cachet_tier",
"layered",
@@ -828,10 +828,10 @@ dependencies = [
[[package]]
name = "cachet_tier"
-version = "0.3.0"
+version = "0.4.0"
dependencies = [
"dynosaur",
- "ohno 0.4.0",
+ "ohno 0.5.0",
"parking_lot",
"recoverable",
"tick",
@@ -1193,7 +1193,7 @@ dependencies = [
[[package]]
name = "data_privacy"
-version = "0.12.4"
+version = "0.13.0"
dependencies = [
"data_privacy_core",
"data_privacy_macros",
@@ -1210,7 +1210,7 @@ dependencies = [
[[package]]
name = "data_privacy_core"
-version = "0.1.2"
+version = "0.1.3"
dependencies = [
"insta",
"mutants",
@@ -1220,7 +1220,7 @@ dependencies = [
[[package]]
name = "data_privacy_macros"
-version = "0.10.3"
+version = "0.11.0"
dependencies = [
"data_privacy_macros_impl",
"mutants",
@@ -1228,7 +1228,7 @@ dependencies = [
[[package]]
name = "data_privacy_macros_impl"
-version = "0.10.3"
+version = "0.11.0"
dependencies = [
"insta",
"prettyplease 0.3.0",
@@ -1463,7 +1463,7 @@ checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
[[package]]
name = "fetch"
-version = "0.15.0"
+version = "0.16.0"
dependencies = [
"alloc_tracker",
"anyspawn",
@@ -1487,7 +1487,7 @@ dependencies = [
"layered",
"mutants",
"native-tls",
- "ohno 0.4.0",
+ "ohno 0.5.0",
"opentelemetry",
"opentelemetry-semantic-conventions",
"opentelemetry-stdout",
@@ -1513,7 +1513,7 @@ dependencies = [
[[package]]
name = "fetch_azure"
-version = "0.5.0"
+version = "0.6.0"
dependencies = [
"anyspawn",
"anyspawn_azure",
@@ -1533,7 +1533,7 @@ dependencies = [
[[package]]
name = "fetch_hyper"
-version = "0.6.0"
+version = "0.7.0"
dependencies = [
"anyspawn",
"bytes",
@@ -1553,7 +1553,7 @@ dependencies = [
"layered",
"mutants",
"native-tls",
- "ohno 0.4.0",
+ "ohno 0.5.0",
"opentelemetry",
"opentelemetry-semantic-conventions",
"opentelemetry_sdk",
@@ -1572,7 +1572,7 @@ dependencies = [
[[package]]
name = "fetch_options"
-version = "0.2.3"
+version = "0.2.4"
dependencies = [
"http",
"insta",
@@ -1582,14 +1582,14 @@ dependencies = [
[[package]]
name = "fetch_tls"
-version = "0.3.0"
+version = "0.4.0"
dependencies = [
"base64 0.23.0",
"http",
"insta",
"mutants",
"native-tls",
- "ohno 0.4.0",
+ "ohno 0.5.0",
"rstest",
"rustls",
"rustls-pki-types",
@@ -2040,7 +2040,7 @@ dependencies = [
[[package]]
name = "http_extensions"
-version = "0.9.0"
+version = "0.10.0"
dependencies = [
"alloc_tracker",
"benchmarking",
@@ -2056,7 +2056,7 @@ dependencies = [
"hyper-util",
"layered",
"mutants",
- "ohno 0.4.0",
+ "ohno 0.5.0",
"pin-project",
"recoverable",
"serde",
@@ -2072,7 +2072,7 @@ dependencies = [
[[package]]
name = "http_path_template"
-version = "0.2.0"
+version = "0.2.1"
dependencies = [
"criterion",
"gungraun",
@@ -2332,7 +2332,7 @@ dependencies = [
[[package]]
name = "internity"
-version = "0.1.0"
+version = "0.1.1"
dependencies = [
"bolero",
"criterion",
@@ -2825,7 +2825,7 @@ checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084"
[[package]]
name = "multitude"
-version = "0.8.0"
+version = "0.9.0"
dependencies = [
"alloc_tracker",
"allocator-api2 0.2.21",
@@ -3013,12 +3013,12 @@ dependencies = [
[[package]]
name = "ohno"
-version = "0.4.0"
+version = "0.5.0"
dependencies = [
"futures",
"insta",
"mutants",
- "ohno_macros 0.4.0",
+ "ohno_macros 0.5.0",
"regex",
"testing_aids",
"tokio",
@@ -3039,7 +3039,7 @@ dependencies = [
[[package]]
name = "ohno_macros"
-version = "0.4.0"
+version = "0.5.0"
dependencies = [
"insta",
"mutants",
@@ -3775,7 +3775,7 @@ name = "recoverable"
version = "0.2.0"
dependencies = [
"insta",
- "ohno 0.4.0",
+ "ohno 0.5.0",
"static_assertions",
"testing_aids",
]
@@ -3826,7 +3826,7 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2"
[[package]]
name = "rest_over_grpc"
-version = "0.2.0"
+version = "0.2.1"
dependencies = [
"axum-core",
"base64 0.23.0",
@@ -3934,7 +3934,7 @@ checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746"
[[package]]
name = "routerama"
-version = "0.1.0"
+version = "0.1.1"
dependencies = [
"alloc_tracker",
"axum",
@@ -3959,7 +3959,7 @@ dependencies = [
[[package]]
name = "routerama_build"
-version = "0.1.0"
+version = "0.1.1"
dependencies = [
"criterion",
"http_path_template",
@@ -3974,7 +3974,7 @@ dependencies = [
[[package]]
name = "routerama_macros"
-version = "0.1.0"
+version = "0.1.1"
dependencies = [
"mutants",
"routerama_build",
@@ -4158,7 +4158,7 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "seatbelt"
-version = "0.7.0"
+version = "0.8.0"
dependencies = [
"alloc_tracker",
"benchmarking",
@@ -4173,7 +4173,7 @@ dependencies = [
"jiff",
"layered",
"mutants",
- "ohno 0.4.0",
+ "ohno 0.5.0",
"opentelemetry",
"opentelemetry-stdout",
"opentelemetry_sdk",
@@ -4194,14 +4194,14 @@ dependencies = [
[[package]]
name = "seatbelt_http"
-version = "0.7.0"
+version = "0.8.0"
dependencies = [
"futures",
"http",
"http_extensions",
"layered",
"mutants",
- "ohno 0.4.0",
+ "ohno 0.5.0",
"seatbelt",
"templated_uri",
"tick",
@@ -4581,14 +4581,14 @@ dependencies = [
[[package]]
name = "templated_uri"
-version = "0.4.0"
+version = "0.5.0"
dependencies = [
"criterion",
"data_privacy",
"gungraun",
"http",
"mutants",
- "ohno 0.4.0",
+ "ohno 0.5.0",
"serde",
"serde_json",
"static_assertions",
@@ -4600,7 +4600,7 @@ dependencies = [
[[package]]
name = "templated_uri_macros"
-version = "0.4.0"
+version = "0.5.0"
dependencies = [
"mutants",
"templated_uri_macros_impl",
@@ -4608,13 +4608,13 @@ dependencies = [
[[package]]
name = "templated_uri_macros_impl"
-version = "0.4.0"
+version = "0.5.0"
dependencies = [
"chumsky",
"darling",
"insta",
"mutants",
- "ohno 0.4.0",
+ "ohno 0.5.0",
"prettyplease 0.3.0",
"proc-macro2",
"quote",
@@ -4665,7 +4665,7 @@ dependencies = [
[[package]]
name = "thread_aware"
-version = "0.9.0"
+version = "0.10.0"
dependencies = [
"bytes",
"criterion",
@@ -4682,7 +4682,7 @@ dependencies = [
[[package]]
name = "thread_aware_macros"
-version = "0.7.5"
+version = "0.8.0"
dependencies = [
"mutants",
"syn 3.0.3",
@@ -4691,7 +4691,7 @@ dependencies = [
[[package]]
name = "thread_aware_macros_impl"
-version = "0.7.4"
+version = "0.8.0"
dependencies = [
"insta",
"prettyplease 0.3.0",
@@ -4711,7 +4711,7 @@ dependencies = [
[[package]]
name = "tick"
-version = "0.5.0"
+version = "0.6.0"
dependencies = [
"alloc_tracker",
"chrono",
@@ -4723,7 +4723,7 @@ dependencies = [
"jiff",
"libc",
"mutants",
- "ohno 0.4.0",
+ "ohno 0.5.0",
"pin-project-lite",
"serde",
"serde_core",
@@ -5202,7 +5202,7 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
[[package]]
name = "uniflight"
-version = "0.4.0"
+version = "0.5.0"
dependencies = [
"ahash",
"async-once-cell",
diff --git a/Cargo.toml b/Cargo.toml
index e2d384c0a..9544c0987 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -61,8 +61,8 @@ backtrace = { version = "0.3.76", default-features = false }
# local dependencies
allocation_hints = { path = "crates/allocation_hints", default-features = false, version = "0.1.0" }
-anyspawn = { path = "crates/anyspawn", default-features = false, version = "0.7.0" }
-anyspawn_azure = { path = "crates/anyspawn_azure", default-features = false, version = "0.2.0" }
+anyspawn = { path = "crates/anyspawn", default-features = false, version = "0.8.0" }
+anyspawn_azure = { path = "crates/anyspawn_azure", default-features = false, version = "0.3.0" }
argh = { version = "0.1.13", default-features = false }
async-once-cell = { version = "0.5.0", default-features = false }
async-trait = { version = "0.1.89", default-features = false }
@@ -76,12 +76,12 @@ bolero = { version = "0.13.4", default-features = false }
bumpalo = { version = "3.20.2", default-features = false }
bytemuck = { version = "1.25.0", default-features = false }
bytes = { version = "1.11.1", default-features = false }
-bytesbuf = { path = "crates/bytesbuf", default-features = false, version = "0.8.0" }
-bytesbuf_io = { path = "crates/bytesbuf_io", default-features = false, version = "0.8.0" }
-cachet = { path = "crates/cachet", default-features = false, version = "0.11.0" }
-cachet_memory = { path = "crates/cachet_memory", default-features = false, version = "0.6.0" }
-cachet_service = { path = "crates/cachet_service", default-features = false, version = "0.3.0" }
-cachet_tier = { path = "crates/cachet_tier", default-features = false, version = "0.3.0" }
+bytesbuf = { path = "crates/bytesbuf", default-features = false, version = "0.9.0" }
+bytesbuf_io = { path = "crates/bytesbuf_io", default-features = false, version = "0.9.0" }
+cachet = { path = "crates/cachet", default-features = false, version = "0.12.0" }
+cachet_memory = { path = "crates/cachet_memory", default-features = false, version = "0.7.0" }
+cachet_service = { path = "crates/cachet_service", default-features = false, version = "0.4.0" }
+cachet_tier = { path = "crates/cachet_tier", default-features = false, version = "0.4.0" }
chrono = { version = "0.4.40", default-features = false }
chrono-tz = { version = "0.10.4", default-features = false }
chumsky = { version = "0.13.0", default-features = false }
@@ -90,20 +90,20 @@ criterion = { version = "0.8.1", default-features = false }
ctor = { version = "1.0.8", default-features = false, features = ["proc_macro"] }
darling = { version = "0.24.0", default-features = false }
dashmap = { version = "6.1.0", default-features = false }
-data_privacy = { path = "crates/data_privacy", default-features = false, version = "0.12.4" }
-data_privacy_core = { path = "crates/data_privacy_core", default-features = false, version = "0.1.2" }
-data_privacy_macros = { path = "crates/data_privacy_macros", default-features = false, version = "0.10.3" }
-data_privacy_macros_impl = { path = "crates/data_privacy_macros_impl", default-features = false, version = "0.10.3" }
+data_privacy = { path = "crates/data_privacy", default-features = false, version = "0.13.0" }
+data_privacy_core = { path = "crates/data_privacy_core", default-features = false, version = "0.1.3" }
+data_privacy_macros = { path = "crates/data_privacy_macros", default-features = false, version = "0.11.0" }
+data_privacy_macros_impl = { path = "crates/data_privacy_macros_impl", default-features = false, version = "0.11.0" }
deadpool = { version = "0.13.0", default-features = false }
derive_more = { version = "2.0.1", default-features = false }
duct = { version = "1.1.1", default-features = false }
dynosaur = { version = "0.3.0", default-features = false }
fastrand = { version = "2.3.0", default-features = false, features = ["std"] }
-fetch = { path = "crates/fetch", default-features = false, version = "0.15.0" }
-fetch_azure = { path = "crates/fetch_azure", default-features = false, version = "0.5.0" }
-fetch_hyper = { path = "crates/fetch_hyper", default-features = false, version = "0.6.0" }
-fetch_options = { path = "crates/fetch_options", default-features = false, version = "0.2.3" }
-fetch_tls = { path = "crates/fetch_tls", default-features = false, version = "0.3.0" }
+fetch = { path = "crates/fetch", default-features = false, version = "0.16.0" }
+fetch_azure = { path = "crates/fetch_azure", default-features = false, version = "0.6.0" }
+fetch_hyper = { path = "crates/fetch_hyper", default-features = false, version = "0.7.0" }
+fetch_options = { path = "crates/fetch_options", default-features = false, version = "0.2.4" }
+fetch_tls = { path = "crates/fetch_tls", default-features = false, version = "0.4.0" }
fetch_winhttp = { path = "crates/fetch_winhttp", default-features = false, version = "0.1.0" }
foldhash = { version = "0.2.0", default-features = false }
fundle = { path = "crates/fundle", default-features = false, version = "0.3.5" }
@@ -119,15 +119,15 @@ heck = { version = "0.5.0", default-features = false }
http = { version = "1.4.1", default-features = false, features = ["std"] }
http-body = { version = "1.0.1", default-features = false }
http-body-util = { version = "0.1.3", default-features = false }
-http_extensions = { path = "crates/http_extensions", default-features = false, version = "0.9.0" }
-http_path_template = { path = "crates/http_path_template", default-features = false, version = "0.2.0" }
+http_extensions = { path = "crates/http_extensions", default-features = false, version = "0.10.0" }
+http_path_template = { path = "crates/http_path_template", default-features = false, version = "0.2.1" }
hyper = { version = "1.10.1", default-features = false }
hyper-rustls = { version = "0.27.9", default-features = false }
hyper-tls = { version = "0.6.0", default-features = false }
hyper-util = { version = "0.1.20", default-features = false }
infinity_pool = { version = "0.8.1", default-features = false }
insta = { version = "1.44.1", default-features = false }
-internity = { path = "crates/internity", default-features = false, version = "0.1.0" }
+internity = { path = "crates/internity", default-features = false, version = "0.1.1" }
internity_macros = { path = "crates/internity_macros", default-features = false, version = "0.1.0" }
internity_macros_impl = { path = "crates/internity_macros_impl", default-features = false, version = "0.1.0" }
itoa = { version = "1.0.17", default-features = false }
@@ -141,7 +141,7 @@ matchit = { version = "0.9.2", default-features = false }
mimalloc = { version = "0.1.52", default-features = false }
mockall = { version = "0.14.0", default-features = false }
moka = { version = "0.12.14", default-features = false }
-multitude = { path = "crates/multitude", default-features = false, version = "0.8.0" }
+multitude = { path = "crates/multitude", default-features = false, version = "0.9.0" }
multitude_macros = { path = "crates/multitude_macros", default-features = false, version = "0.1.1" }
multitude_macros_impl = { path = "crates/multitude_macros_impl", default-features = false, version = "0.1.1" }
mutants = { version = "0.0.3", default-features = false }
@@ -149,8 +149,8 @@ native-tls = { version = "0.2.18", default-features = false }
new_zealand = { version = "1.0.4", default-features = false }
nm = { version = "0.1.21", default-features = false }
object-pool = { version = "0.6.0", default-features = false }
-ohno = { path = "crates/ohno", default-features = false, version = "0.4.0" }
-ohno_macros = { path = "crates/ohno_macros", default-features = false, version = "0.4.0" }
+ohno = { path = "crates/ohno", default-features = false, version = "0.5.0" }
+ohno_macros = { path = "crates/ohno_macros", default-features = false, version = "0.5.0" }
once_cell = { version = "1.21.3", default-features = false }
opentelemetry = { version = "0.32.0", default-features = false }
opentelemetry-semantic-conventions = { version = "0.32.0", default-features = false }
@@ -185,19 +185,19 @@ rallocator_wire = { path = "crates/rallocator_wire", default-features = false, v
rapidhash = { version = "4.1.1", default-features = false }
recoverable = { path = "crates/recoverable", default-features = false, version = "0.2.0" }
regex = { version = "1.12.2", default-features = false }
-rest_over_grpc = { path = "crates/rest_over_grpc", default-features = false, version = "0.2.0" }
+rest_over_grpc = { path = "crates/rest_over_grpc", default-features = false, version = "0.2.1" }
route-recognizer = { version = "0.3.1", default-features = false }
-routerama = { path = "crates/routerama", default-features = false, version = "0.1.0" }
-routerama_build = { path = "crates/routerama_build", default-features = false, version = "0.1.0" }
-routerama_macros = { path = "crates/routerama_macros", default-features = false, version = "0.1.0" }
+routerama = { path = "crates/routerama", default-features = false, version = "0.1.1" }
+routerama_build = { path = "crates/routerama_build", default-features = false, version = "0.1.1" }
+routerama_macros = { path = "crates/routerama_macros", default-features = false, version = "0.1.1" }
rstest = { version = "0.26.0", default-features = false }
rustc-hash = { version = "2.1.0", default-features = false }
rustls = { version = "0.23.40", default-features = false }
rustls-pki-types = { version = "1.14.1", default-features = false }
rustls-platform-verifier = { version = "0.7.0", default-features = false }
same-file = { version = "1.0.6", default-features = false }
-seatbelt = { path = "crates/seatbelt", default-features = false, version = "0.7.0" }
-seatbelt_http = { path = "crates/seatbelt_http", default-features = false, version = "0.7.0" }
+seatbelt = { path = "crates/seatbelt", default-features = false, version = "0.8.0" }
+seatbelt_http = { path = "crates/seatbelt_http", default-features = false, version = "0.8.0" }
serde = { version = "1.0.228", default-features = false }
serde_core = { version = "1.0.228", default-features = false }
serde_html_form = { version = "0.4.1", default-features = false }
@@ -214,15 +214,15 @@ string-interner = { version = "0.20.0", default-features = false }
string_cache = { version = "0.10.0", default-features = false }
symbol_table = { version = "0.5.0", default-features = false }
syn = { version = "3.0.2", default-features = false }
-templated_uri = { path = "crates/templated_uri", default-features = false, version = "0.4.0" }
-templated_uri_macros = { path = "crates/templated_uri_macros", default-features = false, version = "0.4.0" }
-templated_uri_macros_impl = { path = "crates/templated_uri_macros_impl", default-features = false, version = "0.4.0" }
+templated_uri = { path = "crates/templated_uri", default-features = false, version = "0.5.0" }
+templated_uri_macros = { path = "crates/templated_uri_macros", default-features = false, version = "0.5.0" }
+templated_uri_macros_impl = { path = "crates/templated_uri_macros_impl", default-features = false, version = "0.5.0" }
testing_aids = { path = "crates/testing_aids", default-features = false }
thiserror = { version = "2.0.17", default-features = false }
-thread_aware = { path = "crates/thread_aware", default-features = false, version = "0.9.0" }
-thread_aware_macros = { path = "crates/thread_aware_macros", default-features = false, version = "0.7.5" }
-thread_aware_macros_impl = { path = "crates/thread_aware_macros_impl", default-features = false, version = "0.7.4" }
-tick = { path = "crates/tick", default-features = false, version = "0.5.0" }
+thread_aware = { path = "crates/thread_aware", default-features = false, version = "0.10.0" }
+thread_aware_macros = { path = "crates/thread_aware_macros", default-features = false, version = "0.8.0" }
+thread_aware_macros_impl = { path = "crates/thread_aware_macros_impl", default-features = false, version = "0.8.0" }
+tick = { path = "crates/tick", default-features = false, version = "0.6.0" }
time = { version = "0.3.47", default-features = false }
tokio = { version = "1.48.0", default-features = false }
tokio-native-tls = { version = "0.3.1", default-features = false }
@@ -239,7 +239,7 @@ trait-variant = { version = "0.1.2", default-features = false }
trybuild = { version = "1.0.114", default-features = false }
typeid = { version = "1.0.3", default-features = false }
unicode-ident = { version = "1.0.22", default-features = false }
-uniflight = { path = "crates/uniflight", default-features = false, version = "0.4.0" }
+uniflight = { path = "crates/uniflight", default-features = false, version = "0.5.0" }
ustr = { version = "1.1.0", default-features = false }
uuid = { version = "1.21.0", default-features = false }
widestring = { version = "1.2.1", default-features = false }
diff --git a/crates/anyspawn/CHANGELOG.md b/crates/anyspawn/CHANGELOG.md
index ed490774d..02393f7fe 100644
--- a/crates/anyspawn/CHANGELOG.md
+++ b/crates/anyspawn/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## [0.8.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.10.0` of `thread_aware`
+
## [0.7.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/anyspawn/Cargo.toml b/crates/anyspawn/Cargo.toml
index 904f02ba2..b695d7b0e 100644
--- a/crates/anyspawn/Cargo.toml
+++ b/crates/anyspawn/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "anyspawn"
description = "A generic task spawner compatible with any async runtime."
-version = "0.7.0"
+version = "0.8.0"
readme = "README.md"
keywords = ["oxidizer", "async", "runtime", "futures"]
categories = ["asynchronous"]
diff --git a/crates/anyspawn/README.md b/crates/anyspawn/README.md
index 0caf133b3..9c59b1e93 100644
--- a/crates/anyspawn/README.md
+++ b/crates/anyspawn/README.md
@@ -54,11 +54,11 @@ contention-free, NUMA-friendly task dispatch.
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQblHE7Bl8YSN4bb97k0EOW-rkbZQa-GdodS-cbCkeYjGZgZ-BhZIKCaGFueXNwYXduZTAuNy4wgmx0aHJlYWRfYXdhcmVlMC45LjA
- [__link0]: https://docs.rs/anyspawn/0.7.0/anyspawn/?search=Spawner
- [__link1]: https://docs.rs/anyspawn/0.7.0/anyspawn/?search=SpawnCustom
- [__link2]: https://docs.rs/anyspawn/0.7.0/anyspawn/?search=CustomSpawnerBuilder
- [__link3]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=ThreadAware
- [__link4]: https://docs.rs/anyspawn/0.7.0/anyspawn/?search=SpawnCustom
- [__link5]: https://docs.rs/anyspawn/0.7.0/anyspawn/?search=Spawner::new_tokio
- [__link6]: https://docs.rs/anyspawn/0.7.0/anyspawn/?search=Spawner::new_tokio_with_handle
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQblHE7Bl8YSN4bb97k0EOW-rkbZQa-GdodS-cbCkeYjGZgZ-BhZIKCaGFueXNwYXduZTAuOC4wgmx0aHJlYWRfYXdhcmVmMC4xMC4w
+ [__link0]: https://docs.rs/anyspawn/0.8.0/anyspawn/?search=Spawner
+ [__link1]: https://docs.rs/anyspawn/0.8.0/anyspawn/?search=SpawnCustom
+ [__link2]: https://docs.rs/anyspawn/0.8.0/anyspawn/?search=CustomSpawnerBuilder
+ [__link3]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=ThreadAware
+ [__link4]: https://docs.rs/anyspawn/0.8.0/anyspawn/?search=SpawnCustom
+ [__link5]: https://docs.rs/anyspawn/0.8.0/anyspawn/?search=Spawner::new_tokio
+ [__link6]: https://docs.rs/anyspawn/0.8.0/anyspawn/?search=Spawner::new_tokio_with_handle
diff --git a/crates/anyspawn_azure/CHANGELOG.md b/crates/anyspawn_azure/CHANGELOG.md
index 2d438e858..437eb6eb5 100644
--- a/crates/anyspawn_azure/CHANGELOG.md
+++ b/crates/anyspawn_azure/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## [0.3.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.8.0` of `anyspawn`
+ - Now requires `0.6.0` of `tick`
+
## [0.2.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/anyspawn_azure/Cargo.toml b/crates/anyspawn_azure/Cargo.toml
index be0b239ef..700bb487b 100644
--- a/crates/anyspawn_azure/Cargo.toml
+++ b/crates/anyspawn_azure/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "anyspawn_azure"
description = "Azure SDK async runtime and process executor backed by an anyspawn spawner and a tick clock."
-version = "0.2.0"
+version = "0.3.0"
readme = "README.md"
keywords = ["oxidizer", "azure", "async", "runtime", "spawner"]
categories = ["asynchronous"]
diff --git a/crates/anyspawn_azure/README.md b/crates/anyspawn_azure/README.md
index 8d6eb0600..8e7d4c487 100644
--- a/crates/anyspawn_azure/README.md
+++ b/crates/anyspawn_azure/README.md
@@ -48,10 +48,10 @@ fn install_runtime(spawner: Spawner, clock: Clock) {
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbG3R9HTN6WQcb7BPkFt-c1lwbFJyoKmJddDMbd44aiRZ9MR1hZISCaGFueXNwYXduZTAuNy4wgm5hbnlzcGF3bl9henVyZWUwLjIuMIJqYXp1cmVfY29yZWUxLjAuMIJkdGlja2UwLjUuMA
- [__link0]: https://crates.io/crates/anyspawn/0.7.0
- [__link1]: https://crates.io/crates/tick/0.5.0
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbG3R9HTN6WQcb7BPkFt-c1lwbFJyoKmJddDMbd44aiRZ9MR1hZISCaGFueXNwYXduZTAuOC4wgm5hbnlzcGF3bl9henVyZWUwLjMuMIJqYXp1cmVfY29yZWUxLjAuMIJkdGlja2UwLjYuMA
+ [__link0]: https://crates.io/crates/anyspawn/0.8.0
+ [__link1]: https://crates.io/crates/tick/0.6.0
[__link2]: https://docs.rs/azure_core/1.0.0/azure_core/?search=async_runtime::AsyncRuntime
- [__link3]: https://docs.rs/anyspawn_azure/0.2.0/anyspawn_azure/?search=Runtime
- [__link4]: https://docs.rs/anyspawn/0.7.0/anyspawn/?search=Spawner
- [__link5]: https://docs.rs/tick/0.5.0/tick/?search=Clock
+ [__link3]: https://docs.rs/anyspawn_azure/0.3.0/anyspawn_azure/?search=Runtime
+ [__link4]: https://docs.rs/anyspawn/0.8.0/anyspawn/?search=Spawner
+ [__link5]: https://docs.rs/tick/0.6.0/tick/?search=Clock
diff --git a/crates/bytesbuf/CHANGELOG.md b/crates/bytesbuf/CHANGELOG.md
index 3f0967e35..f760a0cf0 100644
--- a/crates/bytesbuf/CHANGELOG.md
+++ b/crates/bytesbuf/CHANGELOG.md
@@ -1,5 +1,15 @@
# Changelog
+## [0.9.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.10.0` of `thread_aware`
+
+- 🐛 Bug Fixes
+
+ - declare dependency features where the API is used ([#659](https://github.com/microsoft/oxidizer/659))
+
## [0.8.0] - 2026-08-09
- ⚠️ Breaking
diff --git a/crates/bytesbuf/Cargo.toml b/crates/bytesbuf/Cargo.toml
index 9c1e5eb9f..8cb3dde9f 100644
--- a/crates/bytesbuf/Cargo.toml
+++ b/crates/bytesbuf/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "bytesbuf"
description = "Types for creating and manipulating byte sequences."
-version = "0.8.0"
+version = "0.9.0"
readme = "README.md"
keywords = ["oxidizer", "buffers", "io", "zero-copy"]
categories = ["data-structures", "network-programming"]
diff --git a/crates/bytesbuf/README.md b/crates/bytesbuf/README.md
index 8b5679fbb..81e454f39 100644
--- a/crates/bytesbuf/README.md
+++ b/crates/bytesbuf/README.md
@@ -487,70 +487,70 @@ See the `mem::testing` module for details (requires `test-util` Cargo feature).
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbfyF05lgqtFgbrQha6QGqA3AbwqFDXpFbd_wbL166axa7WHZhZIGCaGJ5dGVzYnVmZTAuOC4w
- [__link0]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf
- [__link1]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
- [__link10]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
- [__link11]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView::first_slice
- [__link12]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView::advance
- [__link13]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView::first_slice
- [__link14]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView::first_slice
- [__link15]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView::first_slice
- [__link16]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
- [__link17]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=mem::Memory
- [__link18]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=mem::HasMemory
- [__link19]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=mem::HasMemory::memory
- [__link2]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
- [__link20]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=mem::GlobalPool
- [__link21]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=mem::GlobalPool::new
- [__link22]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=mem::Memory
- [__link23]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=mem::Memory::reserve
- [__link24]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf
- [__link25]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf
- [__link26]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf
- [__link27]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf
- [__link28]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf::put_u64_le
- [__link29]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf::put_slice
- [__link3]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView::get_u64_le
- [__link30]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf::put_byte
- [__link31]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf::put_byte_repeated
- [__link32]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf::put_bytes
- [__link33]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
- [__link34]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf::first_unfilled_slice
- [__link35]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf::advance
- [__link36]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf::first_unfilled_slice
- [__link37]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf::first_unfilled_slice
- [__link38]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf
- [__link39]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf::reserve
- [__link4]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView::get_byte
- [__link40]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf::remaining_capacity
- [__link41]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf
- [__link42]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
- [__link43]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf
- [__link44]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
- [__link45]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf
- [__link46]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf::put_bytes
- [__link47]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=mem::HasMemory
- [__link48]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=mem::HasMemory
- [__link49]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
- [__link5]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView::copy_to_slice
- [__link50]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf
- [__link51]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=mem::HasMemory
- [__link52]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
- [__link53]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf
- [__link54]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=mem::HasMemory
- [__link55]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=mem::HasMemory
- [__link56]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=mem::GlobalPool
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbfyF05lgqtFgbrQha6QGqA3AbwqFDXpFbd_wbL166axa7WHZhZIGCaGJ5dGVzYnVmZTAuOS4w
+ [__link0]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf
+ [__link1]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
+ [__link10]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
+ [__link11]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView::first_slice
+ [__link12]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView::advance
+ [__link13]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView::first_slice
+ [__link14]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView::first_slice
+ [__link15]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView::first_slice
+ [__link16]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
+ [__link17]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=mem::Memory
+ [__link18]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=mem::HasMemory
+ [__link19]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=mem::HasMemory::memory
+ [__link2]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
+ [__link20]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=mem::GlobalPool
+ [__link21]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=mem::GlobalPool::new
+ [__link22]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=mem::Memory
+ [__link23]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=mem::Memory::reserve
+ [__link24]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf
+ [__link25]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf
+ [__link26]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf
+ [__link27]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf
+ [__link28]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf::put_u64_le
+ [__link29]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf::put_slice
+ [__link3]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView::get_u64_le
+ [__link30]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf::put_byte
+ [__link31]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf::put_byte_repeated
+ [__link32]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf::put_bytes
+ [__link33]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
+ [__link34]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf::first_unfilled_slice
+ [__link35]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf::advance
+ [__link36]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf::first_unfilled_slice
+ [__link37]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf::first_unfilled_slice
+ [__link38]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf
+ [__link39]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf::reserve
+ [__link4]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView::get_byte
+ [__link40]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf::remaining_capacity
+ [__link41]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf
+ [__link42]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
+ [__link43]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf
+ [__link44]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
+ [__link45]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf
+ [__link46]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf::put_bytes
+ [__link47]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=mem::HasMemory
+ [__link48]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=mem::HasMemory
+ [__link49]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
+ [__link5]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView::copy_to_slice
+ [__link50]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf
+ [__link51]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=mem::HasMemory
+ [__link52]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
+ [__link53]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf
+ [__link54]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=mem::HasMemory
+ [__link55]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=mem::HasMemory
+ [__link56]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=mem::GlobalPool
[__link57]: https://docs.rs/bytes/latest/bytes/struct.Bytes.html
- [__link58]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
+ [__link58]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
[__link59]: https://docs.rs/bytes/latest/bytes/struct.Bytes.html
- [__link6]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView::copy_to_uninit_slice
- [__link60]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
+ [__link6]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView::copy_to_uninit_slice
+ [__link60]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
[__link61]: https://docs.rs/bytes/latest/bytes/struct.Bytes.html
[__link62]: https://docs.rs/bytes/latest/bytes/struct.Bytes.html
- [__link63]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
+ [__link63]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
[__link64]: https://doc.rust-lang.org/stable/std/?search=sync::OnceLock
- [__link65]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
- [__link7]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
+ [__link65]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
+ [__link7]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
[__link8]: https://doc.rust-lang.org/stable/std/?search=io::Read
[__link9]: https://doc.rust-lang.org/stable/std/?search=io::BufRead
diff --git a/crates/bytesbuf_io/CHANGELOG.md b/crates/bytesbuf_io/CHANGELOG.md
index d364ee21e..3fcb408ab 100644
--- a/crates/bytesbuf_io/CHANGELOG.md
+++ b/crates/bytesbuf_io/CHANGELOG.md
@@ -1,5 +1,20 @@
# Changelog
+## [0.9.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.9.0` of `bytesbuf`
+ - Now requires `0.5.0` of `ohno`
+
+- ✨ Features
+
+ - add manual future-polling test helpers ([#655](https://github.com/microsoft/oxidizer/655))
+
+- 🐛 Bug Fixes
+
+ - declare dependency features where the API is used ([#659](https://github.com/microsoft/oxidizer/659))
+
## [0.8.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/bytesbuf_io/Cargo.toml b/crates/bytesbuf_io/Cargo.toml
index 34fa74bba..2bfc3377d 100644
--- a/crates/bytesbuf_io/Cargo.toml
+++ b/crates/bytesbuf_io/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "bytesbuf_io"
description = "Asynchronous I/O abstractions expressed via `bytesbuf` types."
-version = "0.8.0"
+version = "0.9.0"
readme = "README.md"
keywords = ["oxidizer", "io", "zero-copy", "performance", "async"]
categories = ["data-structures", "network-programming", "asynchronous", "filesystem"]
diff --git a/crates/bytesbuf_io/README.md b/crates/bytesbuf_io/README.md
index cfaac41f0..ee6f81d4f 100644
--- a/crates/bytesbuf_io/README.md
+++ b/crates/bytesbuf_io/README.md
@@ -35,9 +35,9 @@ types that produce or consume streams of bytes. These are in the `testing` modul
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbzALaooHm88wblzy9ny6Wy9IbBKVdX0-eOvkbIABdjy2GM0phZIGCa2J5dGVzYnVmX2lvZTAuOC4w
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbzALaooHm88wblzy9ny6Wy9IbBKVdX0-eOvkbIABdjy2GM0phZIGCa2J5dGVzYnVmX2lvZTAuOS4w
[__link0]: https://docs.io/bytesbuf
- [__link1]: https://docs.rs/bytesbuf_io/0.8.0/bytesbuf_io/?search=Read
- [__link2]: https://docs.rs/bytesbuf_io/0.8.0/bytesbuf_io/?search=Write
+ [__link1]: https://docs.rs/bytesbuf_io/0.9.0/bytesbuf_io/?search=Read
+ [__link2]: https://docs.rs/bytesbuf_io/0.9.0/bytesbuf_io/?search=Write
[__link3]: https://docs.io/bytesbuf
- [__link4]: https://docs.rs/bytesbuf_io/0.8.0/bytesbuf_io/?search=Read
+ [__link4]: https://docs.rs/bytesbuf_io/0.9.0/bytesbuf_io/?search=Read
diff --git a/crates/cachet/CHANGELOG.md b/crates/cachet/CHANGELOG.md
index 087a1d11c..da6f310b0 100644
--- a/crates/cachet/CHANGELOG.md
+++ b/crates/cachet/CHANGELOG.md
@@ -1,5 +1,21 @@
# Changelog
+## [0.12.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.8.0` of `anyspawn`
+ - Now requires `0.9.0` of `bytesbuf`
+ - Now requires `0.7.0` of `cachet_memory`
+ - Now requires `0.4.0` of `cachet_service`
+ - Now requires `0.4.0` of `cachet_tier`
+ - Now requires `0.6.0` of `tick`
+ - Now requires `0.5.0` of `uniflight`
+
+- ✨ Features
+
+ - add manual future-polling test helpers ([#655](https://github.com/microsoft/oxidizer/655))
+
## [0.11.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/cachet/Cargo.toml b/crates/cachet/Cargo.toml
index f74a21988..7742fcff5 100644
--- a/crates/cachet/Cargo.toml
+++ b/crates/cachet/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "cachet"
description = "A composable, customizable multi-tier caching library with rich feature support."
-version = "0.11.0"
+version = "0.12.0"
readme = "README.md"
keywords = ["oxidizer", "caching", "concurrency"]
categories = ["caching", "concurrency"]
diff --git a/crates/cachet/README.md b/crates/cachet/README.md
index bb7a29223..69466c45c 100644
--- a/crates/cachet/README.md
+++ b/crates/cachet/README.md
@@ -280,29 +280,29 @@ See the `telemetry_accumulator` example for a DashMap-based accumulation pattern
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQb_xlIDv3a6WgboIYzdhk5tYwbm8NaNvZXwrcbhIXs0eaeycFhZIiCaGJ5dGVzYnVmZTAuOC4wgmZjYWNoZXRmMC4xMS4wgm1jYWNoZXRfbWVtb3J5ZTAuNi4wgm5jYWNoZXRfc2VydmljZWUwLjMuMIJrY2FjaGV0X3RpZXJlMC4zLjCCZHRpY2tlMC41LjCCZ3RyYWNpbmdmMC4xLjQ0gml1bmlmbGlnaHRlMC40LjA
- [__link0]: https://docs.rs/cachet/0.11.0/cachet/?search=TimeToRefresh
- [__link1]: https://crates.io/crates/uniflight/0.4.0
- [__link10]: https://docs.rs/cachet_tier/0.3.0/cachet_tier/?search=CacheTier
- [__link11]: https://docs.rs/cachet/0.11.0/cachet/?search=InsertPolicy
- [__link12]: https://docs.rs/cachet/0.11.0/cachet/?search=TimeToRefresh
- [__link13]: https://docs.rs/cachet_tier/0.3.0/cachet_tier/?search=Error
- [__link14]: https://crates.io/crates/cachet_tier/0.3.0
- [__link15]: https://crates.io/crates/cachet_memory/0.6.0
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQb_xlIDv3a6WgboIYzdhk5tYwbm8NaNvZXwrcbhIXs0eaeycFhZIiCaGJ5dGVzYnVmZTAuOS4wgmZjYWNoZXRmMC4xMi4wgm1jYWNoZXRfbWVtb3J5ZTAuNy4wgm5jYWNoZXRfc2VydmljZWUwLjQuMIJrY2FjaGV0X3RpZXJlMC40LjCCZHRpY2tlMC42LjCCZ3RyYWNpbmdmMC4xLjQ0gml1bmlmbGlnaHRlMC41LjA
+ [__link0]: https://docs.rs/cachet/0.12.0/cachet/?search=TimeToRefresh
+ [__link1]: https://crates.io/crates/uniflight/0.5.0
+ [__link10]: https://docs.rs/cachet_tier/0.4.0/cachet_tier/?search=CacheTier
+ [__link11]: https://docs.rs/cachet/0.12.0/cachet/?search=InsertPolicy
+ [__link12]: https://docs.rs/cachet/0.12.0/cachet/?search=TimeToRefresh
+ [__link13]: https://docs.rs/cachet_tier/0.4.0/cachet_tier/?search=Error
+ [__link14]: https://crates.io/crates/cachet_tier/0.4.0
+ [__link15]: https://crates.io/crates/cachet_memory/0.7.0
[__link16]: https://docs.rs/moka
- [__link17]: https://crates.io/crates/cachet_service/0.3.0
- [__link18]: https://docs.rs/cachet/0.11.0/cachet/?search=telemetry::attributes
- [__link19]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
- [__link2]: https://docs.rs/cachet/0.11.0/cachet/?search=CacheBuilder::stampede_protection
+ [__link17]: https://crates.io/crates/cachet_service/0.4.0
+ [__link18]: https://docs.rs/cachet/0.12.0/cachet/?search=telemetry::attributes
+ [__link19]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
+ [__link2]: https://docs.rs/cachet/0.12.0/cachet/?search=CacheBuilder::stampede_protection
[__link20]: https://crates.io/crates/tracing/0.1.44
- [__link21]: https://docs.rs/cachet/0.11.0/cachet/?search=telemetry::attributes
- [__link22]: https://docs.rs/cachet/0.11.0/cachet/?search=telemetry::handler::CacheEventHandler
- [__link23]: https://docs.rs/cachet/0.11.0/cachet/?search=telemetry::handler::CacheTierEvent
- [__link24]: https://docs.rs/cachet/0.11.0/cachet/?search=telemetry::handler::CacheOperationEvent
- [__link3]: https://docs.rs/cachet_tier/0.3.0/cachet_tier/?search=CacheTier
- [__link4]: https://docs.rs/cachet_tier/0.3.0/cachet_tier/?search=DynamicCache
- [__link5]: https://docs.rs/cachet/0.11.0/cachet/?search=InsertPolicy
- [__link6]: https://docs.rs/tick/0.5.0/tick/?search=Clock
- [__link7]: https://docs.rs/cachet/0.11.0/cachet/?search=Cache
- [__link8]: https://docs.rs/cachet/0.11.0/cachet/?search=CacheBuilder
- [__link9]: https://docs.rs/cachet_tier/0.3.0/cachet_tier/?search=CacheEntry
+ [__link21]: https://docs.rs/cachet/0.12.0/cachet/?search=telemetry::attributes
+ [__link22]: https://docs.rs/cachet/0.12.0/cachet/?search=telemetry::handler::CacheEventHandler
+ [__link23]: https://docs.rs/cachet/0.12.0/cachet/?search=telemetry::handler::CacheTierEvent
+ [__link24]: https://docs.rs/cachet/0.12.0/cachet/?search=telemetry::handler::CacheOperationEvent
+ [__link3]: https://docs.rs/cachet_tier/0.4.0/cachet_tier/?search=CacheTier
+ [__link4]: https://docs.rs/cachet_tier/0.4.0/cachet_tier/?search=DynamicCache
+ [__link5]: https://docs.rs/cachet/0.12.0/cachet/?search=InsertPolicy
+ [__link6]: https://docs.rs/tick/0.6.0/tick/?search=Clock
+ [__link7]: https://docs.rs/cachet/0.12.0/cachet/?search=Cache
+ [__link8]: https://docs.rs/cachet/0.12.0/cachet/?search=CacheBuilder
+ [__link9]: https://docs.rs/cachet_tier/0.4.0/cachet_tier/?search=CacheEntry
diff --git a/crates/cachet_memory/CHANGELOG.md b/crates/cachet_memory/CHANGELOG.md
index f4a842576..17ae7f907 100644
--- a/crates/cachet_memory/CHANGELOG.md
+++ b/crates/cachet_memory/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## [0.7.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.4.0` of `cachet_tier`
+ - Now requires `0.5.0` of `ohno`
+ - Now requires `0.10.0` of `thread_aware`
+
## [0.6.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/cachet_memory/Cargo.toml b/crates/cachet_memory/Cargo.toml
index f77381e21..d85f6aac2 100644
--- a/crates/cachet_memory/Cargo.toml
+++ b/crates/cachet_memory/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "cachet_memory"
description = "In-memory cache tier backed by Moka for the cachet caching library."
-version = "0.6.0"
+version = "0.7.0"
readme = "README.md"
keywords = ["oxidizer", "caching", "concurrency"]
categories = ["caching", "concurrency"]
diff --git a/crates/cachet_memory/README.md b/crates/cachet_memory/README.md
index fe1ddea2f..7a695ba19 100644
--- a/crates/cachet_memory/README.md
+++ b/crates/cachet_memory/README.md
@@ -91,17 +91,17 @@ TTL/TTI unset or set them to a sufficiently high ceiling.
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbejeJIJ3wjSIbQ4FD8_ZrIe0bdNSA5y85nYcbNmCiuslgqq1hZIKCbWNhY2hldF9tZW1vcnllMC42LjCCa2NhY2hldF90aWVyZTAuMy4w
- [__link0]: https://docs.rs/cachet_memory/0.6.0/cachet_memory/?search=InMemoryCache
- [__link1]: https://docs.rs/cachet_memory/0.6.0/cachet_memory/?search=InMemoryCacheBuilder
- [__link10]: https://docs.rs/cachet_tier/0.3.0/cachet_tier/?search=CacheEntry::expires_after
- [__link11]: https://docs.rs/cachet_memory/0.6.0/cachet_memory/?search=InMemoryCacheBuilder::time_to_live
- [__link12]: https://docs.rs/cachet_memory/0.6.0/cachet_memory/?search=InMemoryCacheBuilder::time_to_idle
- [__link2]: https://docs.rs/cachet_memory/0.6.0/cachet_memory/?search=policy::EvictionPolicy
- [__link3]: https://docs.rs/cachet_tier/0.3.0/cachet_tier/?search=CacheEntry::expires_after
- [__link4]: https://docs.rs/cachet_memory/0.6.0/cachet_memory/?search=InMemoryCacheBuilder::on_eviction
- [__link5]: https://docs.rs/cachet_memory/0.6.0/cachet_memory/?search=InMemoryCacheBuilder::with_eviction_telemetry
- [__link6]: https://docs.rs/cachet_memory/0.6.0/cachet_memory/?search=InMemoryCacheBuilder::on_eviction
- [__link7]: https://docs.rs/cachet_memory/0.6.0/cachet_memory/?search=notification::RemovalCause
- [__link8]: https://docs.rs/cachet_memory/0.6.0/cachet_memory/?search=InMemoryCacheBuilder::with_eviction_telemetry
- [__link9]: https://docs.rs/cachet_memory/0.6.0/cachet_memory/?search=InMemoryCache
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbejeJIJ3wjSIbQ4FD8_ZrIe0bdNSA5y85nYcbNmCiuslgqq1hZIKCbWNhY2hldF9tZW1vcnllMC43LjCCa2NhY2hldF90aWVyZTAuNC4w
+ [__link0]: https://docs.rs/cachet_memory/0.7.0/cachet_memory/?search=InMemoryCache
+ [__link1]: https://docs.rs/cachet_memory/0.7.0/cachet_memory/?search=InMemoryCacheBuilder
+ [__link10]: https://docs.rs/cachet_tier/0.4.0/cachet_tier/?search=CacheEntry::expires_after
+ [__link11]: https://docs.rs/cachet_memory/0.7.0/cachet_memory/?search=InMemoryCacheBuilder::time_to_live
+ [__link12]: https://docs.rs/cachet_memory/0.7.0/cachet_memory/?search=InMemoryCacheBuilder::time_to_idle
+ [__link2]: https://docs.rs/cachet_memory/0.7.0/cachet_memory/?search=policy::EvictionPolicy
+ [__link3]: https://docs.rs/cachet_tier/0.4.0/cachet_tier/?search=CacheEntry::expires_after
+ [__link4]: https://docs.rs/cachet_memory/0.7.0/cachet_memory/?search=InMemoryCacheBuilder::on_eviction
+ [__link5]: https://docs.rs/cachet_memory/0.7.0/cachet_memory/?search=InMemoryCacheBuilder::with_eviction_telemetry
+ [__link6]: https://docs.rs/cachet_memory/0.7.0/cachet_memory/?search=InMemoryCacheBuilder::on_eviction
+ [__link7]: https://docs.rs/cachet_memory/0.7.0/cachet_memory/?search=notification::RemovalCause
+ [__link8]: https://docs.rs/cachet_memory/0.7.0/cachet_memory/?search=InMemoryCacheBuilder::with_eviction_telemetry
+ [__link9]: https://docs.rs/cachet_memory/0.7.0/cachet_memory/?search=InMemoryCache
diff --git a/crates/cachet_service/CHANGELOG.md b/crates/cachet_service/CHANGELOG.md
index 01a78d94f..107c8f339 100644
--- a/crates/cachet_service/CHANGELOG.md
+++ b/crates/cachet_service/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## [0.4.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.4.0` of `cachet_tier`
+
## [0.3.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/cachet_service/Cargo.toml b/crates/cachet_service/Cargo.toml
index d36b726a1..61803d43e 100644
--- a/crates/cachet_service/Cargo.toml
+++ b/crates/cachet_service/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "cachet_service"
description = "Layered service integration for the cachet caching library."
-version = "0.3.0"
+version = "0.4.0"
readme = "README.md"
keywords = ["oxidizer", "caching", "concurrency"]
categories = ["caching", "concurrency"]
diff --git a/crates/cachet_service/README.md b/crates/cachet_service/README.md
index 17157f89b..8776b2ab8 100644
--- a/crates/cachet_service/README.md
+++ b/crates/cachet_service/README.md
@@ -45,7 +45,7 @@ let tier = ServiceAdapter::new(my_service);
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbcrlL8sHnAG4b1ofYj6gT3UEbqnvnufpKEjIbZAmyA7kxTiRhZIKCbmNhY2hldF9zZXJ2aWNlZTAuMy4wgmtjYWNoZXRfdGllcmUwLjMuMA
- [__link0]: https://docs.rs/cachet_service/0.3.0/cachet_service/?search=ServiceAdapter
- [__link1]: https://docs.rs/cachet_tier/0.3.0/cachet_tier/?search=CacheTier
- [__link2]: https://docs.rs/cachet_service/0.3.0/cachet_service/?search=ServiceAdapter
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbcrlL8sHnAG4b1ofYj6gT3UEbqnvnufpKEjIbZAmyA7kxTiRhZIKCbmNhY2hldF9zZXJ2aWNlZTAuNC4wgmtjYWNoZXRfdGllcmUwLjQuMA
+ [__link0]: https://docs.rs/cachet_service/0.4.0/cachet_service/?search=ServiceAdapter
+ [__link1]: https://docs.rs/cachet_tier/0.4.0/cachet_tier/?search=CacheTier
+ [__link2]: https://docs.rs/cachet_service/0.4.0/cachet_service/?search=ServiceAdapter
diff --git a/crates/cachet_tier/CHANGELOG.md b/crates/cachet_tier/CHANGELOG.md
index 5ecd2baa3..e89c19613 100644
--- a/crates/cachet_tier/CHANGELOG.md
+++ b/crates/cachet_tier/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## [0.4.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - document pub(crate) constructors, reject #[no_constructors] under #[ohno::error] ([#653](https://github.com/microsoft/oxidizer/653))
+ - Now requires `0.5.0` of `ohno`
+
## [0.3.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/cachet_tier/Cargo.toml b/crates/cachet_tier/Cargo.toml
index f050b28a7..a5202f239 100644
--- a/crates/cachet_tier/Cargo.toml
+++ b/crates/cachet_tier/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "cachet_tier"
description = "Core cache tier trait and abstractions for building cache backends."
-version = "0.3.0"
+version = "0.4.0"
readme = "README.md"
keywords = ["oxidizer", "caching", "concurrency"]
categories = ["caching", "concurrency"]
diff --git a/crates/cachet_tier/README.md b/crates/cachet_tier/README.md
index 3522873d2..b581fdf3e 100644
--- a/crates/cachet_tier/README.md
+++ b/crates/cachet_tier/README.md
@@ -74,10 +74,10 @@ for multi-tier caches with heterogeneous storage backends.
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbSFGoN9aDWgMbkFPVkj7eiZMblYTgYHQyDnsb4bh5vMZ5KTlhZIGCa2NhY2hldF90aWVyZTAuMy4w
- [__link0]: https://docs.rs/cachet_tier/0.3.0/cachet_tier/?search=CacheTier
- [__link1]: https://docs.rs/cachet_tier/0.3.0/cachet_tier/?search=CacheEntry
- [__link2]: https://docs.rs/cachet_tier/0.3.0/cachet_tier/?search=Error
- [__link3]: https://docs.rs/cachet_tier/0.3.0/cachet_tier/?search=CacheTier
- [__link4]: https://docs.rs/cachet_tier/0.3.0/cachet_tier/?search=CacheTier
- [__link5]: https://docs.rs/cachet_tier/0.3.0/cachet_tier/?search=DynamicCache
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbSFGoN9aDWgMbkFPVkj7eiZMblYTgYHQyDnsb4bh5vMZ5KTlhZIGCa2NhY2hldF90aWVyZTAuNC4w
+ [__link0]: https://docs.rs/cachet_tier/0.4.0/cachet_tier/?search=CacheTier
+ [__link1]: https://docs.rs/cachet_tier/0.4.0/cachet_tier/?search=CacheEntry
+ [__link2]: https://docs.rs/cachet_tier/0.4.0/cachet_tier/?search=Error
+ [__link3]: https://docs.rs/cachet_tier/0.4.0/cachet_tier/?search=CacheTier
+ [__link4]: https://docs.rs/cachet_tier/0.4.0/cachet_tier/?search=CacheTier
+ [__link5]: https://docs.rs/cachet_tier/0.4.0/cachet_tier/?search=DynamicCache
diff --git a/crates/data_privacy/CHANGELOG.md b/crates/data_privacy/CHANGELOG.md
index 0f0fdab11..6e310eddc 100644
--- a/crates/data_privacy/CHANGELOG.md
+++ b/crates/data_privacy/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## [0.13.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.1.3` of `data_privacy_core`
+ - Now requires `0.11.0` of `data_privacy_macros`
+
## [0.12.4] - 2026-07-24
- ✨ Features
diff --git a/crates/data_privacy/Cargo.toml b/crates/data_privacy/Cargo.toml
index 17c597c3a..b800024fa 100644
--- a/crates/data_privacy/Cargo.toml
+++ b/crates/data_privacy/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "data_privacy"
description = "Data annotation and redaction system providing a robust way to manipulate sensitive information."
-version = "0.12.4"
+version = "0.13.0"
readme = "README.md"
keywords = ["oxidizer", "compliance", "privacy", "redaction", "scrubbing"]
categories = ["data-structures"]
diff --git a/crates/data_privacy/README.md b/crates/data_privacy/README.md
index bfc1975f1..8fd5b14ae 100644
--- a/crates/data_privacy/README.md
+++ b/crates/data_privacy/README.md
@@ -192,19 +192,19 @@ assert_eq!(output_buffer, "********");
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbfPAU5OoNavUbRy0yQBG8se0b5QdS3UiPpR4bCQr6vjqou8phZIOCbGRhdGFfcHJpdmFjeWYwLjEyLjSCcWRhdGFfcHJpdmFjeV9jb3JlZTAuMS4ygnNkYXRhX3ByaXZhY3lfbWFjcm9zZjAuMTAuMw
- [__link0]: https://docs.rs/data_privacy_core/0.1.2/data_privacy_core/?search=Classified
- [__link1]: https://docs.rs/data_privacy_core/0.1.2/data_privacy_core/?search=Redactor
- [__link10]: https://docs.rs/data_privacy_macros/0.10.3/data_privacy_macros/?search=classified
- [__link11]: https://docs.rs/data_privacy_macros/0.10.3/data_privacy_macros/?search=taxonomy
- [__link12]: https://docs.rs/data_privacy_macros/0.10.3/data_privacy_macros/?search=classified
- [__link13]: https://docs.rs/data_privacy/0.12.4/data_privacy/?search=RedactionEngine
- [__link14]: https://docs.rs/data_privacy/0.12.4/data_privacy/?search=RedactionEngine::builder
- [__link2]: https://docs.rs/data_privacy/0.12.4/data_privacy/?search=RedactionEngine
- [__link3]: https://docs.rs/data_privacy_core/0.1.2/data_privacy_core/?search=Classified
- [__link4]: https://docs.rs/data_privacy_macros/0.10.3/data_privacy_macros/?search=RedactedDebug
- [__link5]: https://docs.rs/data_privacy_macros/0.10.3/data_privacy_macros/?search=RedactedDisplay
- [__link6]: https://docs.rs/data_privacy_core/0.1.2/data_privacy_core/?search=RedactedToString
- [__link7]: https://docs.rs/data_privacy_macros/0.10.3/data_privacy_macros/?search=taxonomy
- [__link8]: https://docs.rs/data_privacy_core/0.1.2/data_privacy_core/?search=DataClass
- [__link9]: https://docs.rs/data_privacy_core/0.1.2/data_privacy_core/?search=Classified
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbfPAU5OoNavUbRy0yQBG8se0b5QdS3UiPpR4bCQr6vjqou8phZIOCbGRhdGFfcHJpdmFjeWYwLjEzLjCCcWRhdGFfcHJpdmFjeV9jb3JlZTAuMS4zgnNkYXRhX3ByaXZhY3lfbWFjcm9zZjAuMTEuMA
+ [__link0]: https://docs.rs/data_privacy_core/0.1.3/data_privacy_core/?search=Classified
+ [__link1]: https://docs.rs/data_privacy_core/0.1.3/data_privacy_core/?search=Redactor
+ [__link10]: https://docs.rs/data_privacy_macros/0.11.0/data_privacy_macros/?search=classified
+ [__link11]: https://docs.rs/data_privacy_macros/0.11.0/data_privacy_macros/?search=taxonomy
+ [__link12]: https://docs.rs/data_privacy_macros/0.11.0/data_privacy_macros/?search=classified
+ [__link13]: https://docs.rs/data_privacy/0.13.0/data_privacy/?search=RedactionEngine
+ [__link14]: https://docs.rs/data_privacy/0.13.0/data_privacy/?search=RedactionEngine::builder
+ [__link2]: https://docs.rs/data_privacy/0.13.0/data_privacy/?search=RedactionEngine
+ [__link3]: https://docs.rs/data_privacy_core/0.1.3/data_privacy_core/?search=Classified
+ [__link4]: https://docs.rs/data_privacy_macros/0.11.0/data_privacy_macros/?search=RedactedDebug
+ [__link5]: https://docs.rs/data_privacy_macros/0.11.0/data_privacy_macros/?search=RedactedDisplay
+ [__link6]: https://docs.rs/data_privacy_core/0.1.3/data_privacy_core/?search=RedactedToString
+ [__link7]: https://docs.rs/data_privacy_macros/0.11.0/data_privacy_macros/?search=taxonomy
+ [__link8]: https://docs.rs/data_privacy_core/0.1.3/data_privacy_core/?search=DataClass
+ [__link9]: https://docs.rs/data_privacy_core/0.1.3/data_privacy_core/?search=Classified
diff --git a/crates/data_privacy_core/CHANGELOG.md b/crates/data_privacy_core/CHANGELOG.md
index 35c3f180f..b8ef0d6bc 100644
--- a/crates/data_privacy_core/CHANGELOG.md
+++ b/crates/data_privacy_core/CHANGELOG.md
@@ -1,5 +1,27 @@
# Changelog
+## [0.1.3] - 2026-08-13
+
+- ✨ Features
+
+ - add REST transcoding for gRPC services ([#600](https://github.com/microsoft/oxidizer/600))
+
+- 🐛 Bug Fixes
+
+ - exclude non-source artifacts from published crates via include allowlist ([#526](https://github.com/microsoft/oxidizer/526))
+
+- ✔️ Tasks
+
+ - re-release all packages with LFS-free tarballs ([#531](https://github.com/microsoft/oxidizer/531))
+
+- 🏗️ Build System
+
+ - adopt cargo-anvil check catalog (github backend) ([#534](https://github.com/microsoft/oxidizer/534))
+
+- 🔄 Continuous Integration
+
+ - add cargo-machete for workspace-wide unused-dependency detection ([#578](https://github.com/microsoft/oxidizer/578))
+
## [0.1.2] - 2026-06-26
- 🐛 Bug Fixes
diff --git a/crates/data_privacy_core/Cargo.toml b/crates/data_privacy_core/Cargo.toml
index c4f83678e..f639f825d 100644
--- a/crates/data_privacy_core/Cargo.toml
+++ b/crates/data_privacy_core/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "data_privacy_core"
description = "Core data classification types and traits for the data_privacy ecosystem."
-version = "0.1.2"
+version = "0.1.3"
readme = "README.md"
keywords = ["oxidizer", "compliance", "privacy", "classification"]
categories = ["data-structures"]
diff --git a/crates/data_privacy_core/README.md b/crates/data_privacy_core/README.md
index f30d58ce6..dfeaf44db 100644
--- a/crates/data_privacy_core/README.md
+++ b/crates/data_privacy_core/README.md
@@ -40,12 +40,12 @@ and always use `data_privacy`.**
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbJMSGY2z7YbEblsBSe-58K48b62Bomn7PG1Ebw8HBurz5KcZhZIGCcWRhdGFfcHJpdmFjeV9jb3JlZTAuMS4y
- [__link0]: https://docs.rs/data_privacy_core/0.1.2/data_privacy_core/?search=DataClass
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbJMSGY2z7YbEblsBSe-58K48b62Bomn7PG1Ebw8HBurz5KcZhZIGCcWRhdGFfcHJpdmFjeV9jb3JlZTAuMS4z
+ [__link0]: https://docs.rs/data_privacy_core/0.1.3/data_privacy_core/?search=DataClass
[__link1]: https://docs.rs/data_privacy
- [__link2]: https://docs.rs/data_privacy_core/0.1.2/data_privacy_core/?search=DataClass
- [__link3]: https://docs.rs/data_privacy_core/0.1.2/data_privacy_core/?search=Classified
- [__link4]: https://docs.rs/data_privacy_core/0.1.2/data_privacy_core/?search=Redactor
- [__link5]: https://docs.rs/data_privacy_core/0.1.2/data_privacy_core/?search=RedactedDebug
- [__link6]: https://docs.rs/data_privacy_core/0.1.2/data_privacy_core/?search=RedactedDisplay
- [__link7]: https://docs.rs/data_privacy_core/0.1.2/data_privacy_core/?search=RedactedToString
+ [__link2]: https://docs.rs/data_privacy_core/0.1.3/data_privacy_core/?search=DataClass
+ [__link3]: https://docs.rs/data_privacy_core/0.1.3/data_privacy_core/?search=Classified
+ [__link4]: https://docs.rs/data_privacy_core/0.1.3/data_privacy_core/?search=Redactor
+ [__link5]: https://docs.rs/data_privacy_core/0.1.3/data_privacy_core/?search=RedactedDebug
+ [__link6]: https://docs.rs/data_privacy_core/0.1.3/data_privacy_core/?search=RedactedDisplay
+ [__link7]: https://docs.rs/data_privacy_core/0.1.3/data_privacy_core/?search=RedactedToString
diff --git a/crates/data_privacy_macros/CHANGELOG.md b/crates/data_privacy_macros/CHANGELOG.md
index 8679c1685..ae67095ea 100644
--- a/crates/data_privacy_macros/CHANGELOG.md
+++ b/crates/data_privacy_macros/CHANGELOG.md
@@ -1,5 +1,27 @@
# Changelog
+## [0.11.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.11.0` of `data_privacy_macros_impl`
+
+- ✨ Features
+
+ - add REST transcoding for gRPC services ([#600](https://github.com/microsoft/oxidizer/600))
+
+- 🐛 Bug Fixes
+
+ - exclude non-source artifacts from published crates via include allowlist ([#526](https://github.com/microsoft/oxidizer/526))
+
+- ✔️ Tasks
+
+ - re-release all packages with LFS-free tarballs ([#531](https://github.com/microsoft/oxidizer/531))
+
+- 🏗️ Build System
+
+ - adopt cargo-anvil check catalog (github backend) ([#534](https://github.com/microsoft/oxidizer/534))
+
## [0.10.3] - 2026-06-26
- 🔧 Maintenance
diff --git a/crates/data_privacy_macros/Cargo.toml b/crates/data_privacy_macros/Cargo.toml
index 9f015af15..5bd5ccdc1 100644
--- a/crates/data_privacy_macros/Cargo.toml
+++ b/crates/data_privacy_macros/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "data_privacy_macros"
description = "Macros for the data_privacy crate."
-version = "0.10.3"
+version = "0.11.0"
readme = "README.md"
keywords = ["oxidizer", "compliance", "privacy", "redaction", "scrubbing"]
categories = ["data-structures"]
diff --git a/crates/data_privacy_macros_impl/CHANGELOG.md b/crates/data_privacy_macros_impl/CHANGELOG.md
index 0c566924c..8dcee73b2 100644
--- a/crates/data_privacy_macros_impl/CHANGELOG.md
+++ b/crates/data_privacy_macros_impl/CHANGELOG.md
@@ -1,5 +1,28 @@
# Changelog
+## [0.11.0] - 2026-08-13
+
+- ✨ Features
+
+ - add REST transcoding for gRPC services ([#600](https://github.com/microsoft/oxidizer/600))
+ - support type erasure of pooled handles to unsized types ([#585](https://github.com/microsoft/oxidizer/585))
+
+- 🐛 Bug Fixes
+
+ - exclude non-source artifacts from published crates via include allowlist ([#526](https://github.com/microsoft/oxidizer/526))
+
+- ✔️ Tasks
+
+ - re-release all packages with LFS-free tarballs ([#531](https://github.com/microsoft/oxidizer/531))
+
+- 🏗️ Build System
+
+ - adopt cargo-anvil check catalog (github backend) ([#534](https://github.com/microsoft/oxidizer/534))
+
+- 🔄 Continuous Integration
+
+ - run cargo udeps with and without --all-targets; remove unused dev-dependencies ([#527](https://github.com/microsoft/oxidizer/527))
+
## [0.10.3] - 2026-06-26
- ✨ Features
diff --git a/crates/data_privacy_macros_impl/Cargo.toml b/crates/data_privacy_macros_impl/Cargo.toml
index e323f184f..40d85ae61 100644
--- a/crates/data_privacy_macros_impl/Cargo.toml
+++ b/crates/data_privacy_macros_impl/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "data_privacy_macros_impl"
description = "Macros for the data_privacy crate."
-version = "0.10.3"
+version = "0.11.0"
readme = "README.md"
keywords = ["oxidizer", "compliance", "privacy", "redaction", "scrubbing"]
categories = ["data-structures"]
diff --git a/crates/fetch/CHANGELOG.md b/crates/fetch/CHANGELOG.md
index a8c5976a7..a0b9c8e2a 100644
--- a/crates/fetch/CHANGELOG.md
+++ b/crates/fetch/CHANGELOG.md
@@ -1,5 +1,27 @@
# Changelog
+## [0.16.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.8.0` of `anyspawn`
+ - Now requires `0.9.0` of `bytesbuf`
+ - Now requires `0.13.0` of `data_privacy`
+ - Now requires `0.7.0` of `fetch_hyper`
+ - Now requires `0.2.4` of `fetch_options`
+ - Now requires `0.4.0` of `fetch_tls`
+ - Now requires `0.10.0` of `http_extensions`
+ - Now requires `0.5.0` of `ohno`
+ - Now requires `0.8.0` of `seatbelt`
+ - Now requires `0.8.0` of `seatbelt_http`
+ - Now requires `0.5.0` of `templated_uri`
+ - Now requires `0.10.0` of `thread_aware`
+ - Now requires `0.6.0` of `tick`
+
+- 🐛 Bug Fixes
+
+ - declare dependency features where the API is used ([#659](https://github.com/microsoft/oxidizer/659))
+
## [0.15.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/fetch/Cargo.toml b/crates/fetch/Cargo.toml
index 72ea9c287..b33419d0d 100644
--- a/crates/fetch/Cargo.toml
+++ b/crates/fetch/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "fetch"
description = "HTTP client with resilience, observability, and Tokio runtime support."
-version = "0.15.0"
+version = "0.16.0"
readme = "README.md"
keywords = ["http", "client", "async", "resilience", "observability"]
categories = ["network-programming"]
diff --git a/crates/fetch/README.md b/crates/fetch/README.md
index 3fd450183..3837af272 100644
--- a/crates/fetch/README.md
+++ b/crates/fetch/README.md
@@ -712,86 +712,86 @@ fetch = { version = "*", features = ["json", "tokio"] }
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbRcdYrc3P77cbVjz14MYzPFkbTKiKwHYuBbcbSr09Rcd_lPZhZIeCZWJ5dGVzZjEuMTIuMIJoYnl0ZXNidWZlMC44LjCCZWZldGNoZjAuMTUuMIJvaHR0cF9leHRlbnNpb25zZTAuOS4wgmdsYXllcmVkZTAuMy42gmhzZWF0YmVsdGUwLjcuMIJtdGVtcGxhdGVkX3VyaWUwLjQuMA
- [__link0]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpClient
- [__link1]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=RequestHandler
- [__link10]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpClient::post
- [__link11]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpClient::put
- [__link12]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpClient::delete
- [__link13]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpClient::request
- [__link14]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpRequestBuilder
- [__link15]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpClientBuilder::base_uri
- [__link16]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=BaseUri
- [__link17]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpRequestBuilder::fetch
- [__link18]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpResponse
- [__link19]: https://docs.rs/fetch/0.15.0/fetch/?search=http::Response
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbRcdYrc3P77cbVjz14MYzPFkbTKiKwHYuBbcbSr09Rcd_lPZhZIeCZWJ5dGVzZjEuMTIuMIJoYnl0ZXNidWZlMC45LjCCZWZldGNoZjAuMTYuMIJvaHR0cF9leHRlbnNpb25zZjAuMTAuMIJnbGF5ZXJlZGUwLjMuNoJoc2VhdGJlbHRlMC44LjCCbXRlbXBsYXRlZF91cmllMC41LjA
+ [__link0]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpClient
+ [__link1]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=RequestHandler
+ [__link10]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpClient::post
+ [__link11]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpClient::put
+ [__link12]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpClient::delete
+ [__link13]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpClient::request
+ [__link14]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpRequestBuilder
+ [__link15]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpClientBuilder::base_uri
+ [__link16]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=BaseUri
+ [__link17]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpRequestBuilder::fetch
+ [__link18]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpResponse
+ [__link19]: https://docs.rs/fetch/0.16.0/fetch/?search=http::Response
[__link2]: https://docs.rs/reqwest/
- [__link20]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpResponse::ensure_success
- [__link21]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpResponse::status
- [__link22]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpResponse::headers
- [__link23]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpResponse::into_body
- [__link24]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpBody::into_text
- [__link25]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpBody::into_bytes
- [__link26]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpBody::into_json
- [__link27]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpRequestBuilder::fetch
- [__link28]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpRequestBuilder::fetch_text
- [__link29]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpRequestBuilder::fetch_bytes
- [__link3]: https://docs.rs/fetch/0.15.0/fetch/custom/index.html
- [__link30]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpRequestBuilder::fetch_json
- [__link31]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpRequestBuilder::fetch_json_ref
- [__link32]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpBody
- [__link33]: https://docs.rs/fetch/0.15.0/fetch/?search=http::Response
- [__link34]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpResponse::ensure_success
- [__link35]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpRequestBuilder::fetch_text_body
- [__link36]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpRequestBuilder::fetch_bytes_body
- [__link37]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpRequestBuilder::fetch_json_body
- [__link38]: https://crates.io/crates/templated_uri/0.4.0
- [__link39]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=Uri
- [__link4]: https://docs.rs/fetch/0.15.0/fetch/?search=custom::create_builder
+ [__link20]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpResponse::ensure_success
+ [__link21]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpResponse::status
+ [__link22]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpResponse::headers
+ [__link23]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpResponse::into_body
+ [__link24]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpBody::into_text
+ [__link25]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpBody::into_bytes
+ [__link26]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpBody::into_json
+ [__link27]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpRequestBuilder::fetch
+ [__link28]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpRequestBuilder::fetch_text
+ [__link29]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpRequestBuilder::fetch_bytes
+ [__link3]: https://docs.rs/fetch/0.16.0/fetch/custom/index.html
+ [__link30]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpRequestBuilder::fetch_json
+ [__link31]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpRequestBuilder::fetch_json_ref
+ [__link32]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpBody
+ [__link33]: https://docs.rs/fetch/0.16.0/fetch/?search=http::Response
+ [__link34]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpResponse::ensure_success
+ [__link35]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpRequestBuilder::fetch_text_body
+ [__link36]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpRequestBuilder::fetch_bytes_body
+ [__link37]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpRequestBuilder::fetch_json_body
+ [__link38]: https://crates.io/crates/templated_uri/0.5.0
+ [__link39]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=Uri
+ [__link4]: https://docs.rs/fetch/0.16.0/fetch/?search=custom::create_builder
[__link40]: https://datatracker.ietf.org/doc/html/rfc6570
- [__link41]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=Uri
- [__link42]: https://docs.rs/fetch/0.15.0/fetch/?search=handlers::Logging
- [__link43]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=Uri
- [__link44]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=PathAndQueryTemplate
- [__link45]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpRequestBuilder::json
- [__link46]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpRequestBuilder::fetch_json
- [__link47]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpRequestBuilder::fetch_json_ref
- [__link48]: https://docs.rs/fetch/0.15.0/fetch/?search=Json
- [__link49]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpBody::into_json
+ [__link41]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=Uri
+ [__link42]: https://docs.rs/fetch/0.16.0/fetch/?search=handlers::Logging
+ [__link43]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=Uri
+ [__link44]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=PathAndQueryTemplate
+ [__link45]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpRequestBuilder::json
+ [__link46]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpRequestBuilder::fetch_json
+ [__link47]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpRequestBuilder::fetch_json_ref
+ [__link48]: https://docs.rs/fetch/0.16.0/fetch/?search=Json
+ [__link49]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpBody::into_json
[__link5]: https://docs.rs/reqwest/
- [__link50]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpRequestBuilder::fetch_json_body
- [__link51]: https://docs.rs/fetch/0.15.0/fetch/?search=Json
- [__link52]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=RequestHandler
- [__link53]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=RequestHandler
+ [__link50]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpRequestBuilder::fetch_json_body
+ [__link51]: https://docs.rs/fetch/0.16.0/fetch/?search=Json
+ [__link52]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=RequestHandler
+ [__link53]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=RequestHandler
[__link54]: https://docs.rs/reqwest/
- [__link55]: https://docs.rs/fetch/0.15.0/fetch/custom/index.html
- [__link56]: https://docs.rs/fetch/0.15.0/fetch/?search=custom::create_builder
- [__link57]: https://docs.rs/fetch/0.15.0/fetch/?search=pipeline::StandardRequestPipeline
- [__link58]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpClientBuilder::standard_pipeline
- [__link59]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpClientBuilder::custom_pipeline
+ [__link55]: https://docs.rs/fetch/0.16.0/fetch/custom/index.html
+ [__link56]: https://docs.rs/fetch/0.16.0/fetch/?search=custom::create_builder
+ [__link57]: https://docs.rs/fetch/0.16.0/fetch/?search=pipeline::StandardRequestPipeline
+ [__link58]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpClientBuilder::standard_pipeline
+ [__link59]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpClientBuilder::custom_pipeline
[__link6]: https://docs.rs/hyper/
- [__link60]: https://docs.rs/fetch/0.15.0/fetch/?search=handlers::Dispatch
- [__link61]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=RequestHandler
- [__link62]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
+ [__link60]: https://docs.rs/fetch/0.16.0/fetch/?search=handlers::Dispatch
+ [__link61]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=RequestHandler
+ [__link62]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
[__link63]: https://docs.rs/bytes
- [__link64]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
+ [__link64]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
[__link65]: https://docs.rs/bytes/1.12.0/bytes/?search=Buf
[__link66]: https://docs.rs/bytes/1.12.0/bytes/?search=BufMut
[__link67]: https://docs.rs/bytes
- [__link68]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpClient
- [__link69]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=Uri
- [__link7]: https://docs.rs/fetch/0.15.0/fetch/custom/index.html
- [__link70]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
- [__link71]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
- [__link72]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesView
- [__link73]: https://docs.rs/fetch/0.15.0/fetch/http/index.html
- [__link74]: https://crates.io/crates/http_extensions/0.9.0
- [__link75]: https://crates.io/crates/seatbelt/0.7.0
+ [__link68]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpClient
+ [__link69]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=Uri
+ [__link7]: https://docs.rs/fetch/0.16.0/fetch/custom/index.html
+ [__link70]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
+ [__link71]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
+ [__link72]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesView
+ [__link73]: https://docs.rs/fetch/0.16.0/fetch/http/index.html
+ [__link74]: https://crates.io/crates/http_extensions/0.10.0
+ [__link75]: https://crates.io/crates/seatbelt/0.8.0
[__link76]: https://docs.rs/layered/0.3.6/layered/?search=Service
- [__link77]: https://docs.rs/fetch/0.15.0/fetch/?search=pipeline::StandardRequestPipeline
+ [__link77]: https://docs.rs/fetch/0.16.0/fetch/?search=pipeline::StandardRequestPipeline
[__link78]: https://docs.rs/rustls
[__link79]: https://docs.rs/aws-lc-rs
- [__link8]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpClient::builder_tokio
+ [__link8]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpClient::builder_tokio
[__link80]: https://docs.rs/rustls-platform-verifier
- [__link81]: https://docs.rs/fetch/0.15.0/fetch/?search=tls::TlsOptions::builder_rustls
- [__link9]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpClient::get
+ [__link81]: https://docs.rs/fetch/0.16.0/fetch/?search=tls::TlsOptions::builder_rustls
+ [__link9]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpClient::get
diff --git a/crates/fetch_azure/CHANGELOG.md b/crates/fetch_azure/CHANGELOG.md
index 7de431e40..7aed9177e 100644
--- a/crates/fetch_azure/CHANGELOG.md
+++ b/crates/fetch_azure/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## [0.6.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.9.0` of `bytesbuf`
+ - Now requires `0.16.0` of `fetch`
+
## [0.5.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/fetch_azure/Cargo.toml b/crates/fetch_azure/Cargo.toml
index 307ee574e..2cfcb8004 100644
--- a/crates/fetch_azure/Cargo.toml
+++ b/crates/fetch_azure/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "fetch_azure"
description = "Azure SDK HTTP transport backed by the fetch HTTP client."
-version = "0.5.0"
+version = "0.6.0"
readme = "README.md"
keywords = ["oxidizer", "azure", "fetch", "http", "transport"]
categories = ["network-programming"]
diff --git a/crates/fetch_azure/README.md b/crates/fetch_azure/README.md
index 20700f175..cb27d3a31 100644
--- a/crates/fetch_azure/README.md
+++ b/crates/fetch_azure/README.md
@@ -43,7 +43,7 @@ let options = ClientOptions {
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbbmImiFehOUcbSWj7AJ0Zo0QbEU03KDZjzxUbIR9apRz2JO5hZIOCamF6dXJlX2NvcmVlMS4wLjCCZWZldGNoZjAuMTUuMIJrZmV0Y2hfYXp1cmVlMC41LjA
- [__link0]: https://docs.rs/fetch/0.15.0/fetch/?search=HttpClient
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbbmImiFehOUcbSWj7AJ0Zo0QbEU03KDZjzxUbIR9apRz2JO5hZIOCamF6dXJlX2NvcmVlMS4wLjCCZWZldGNoZjAuMTYuMIJrZmV0Y2hfYXp1cmVlMC42LjA
+ [__link0]: https://docs.rs/fetch/0.16.0/fetch/?search=HttpClient
[__link1]: https://docs.rs/azure_core/1.0.0/azure_core/?search=http::HttpClient
- [__link2]: https://docs.rs/fetch_azure/0.5.0/fetch_azure/?search=HttpClient
+ [__link2]: https://docs.rs/fetch_azure/0.6.0/fetch_azure/?search=HttpClient
diff --git a/crates/fetch_hyper/CHANGELOG.md b/crates/fetch_hyper/CHANGELOG.md
index eb351f8fd..054b70e31 100644
--- a/crates/fetch_hyper/CHANGELOG.md
+++ b/crates/fetch_hyper/CHANGELOG.md
@@ -1,5 +1,19 @@
# Changelog
+## [0.7.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.8.0` of `anyspawn`
+ - Now requires `0.9.0` of `bytesbuf`
+ - Now requires `0.2.4` of `fetch_options`
+ - Now requires `0.4.0` of `fetch_tls`
+ - Now requires `0.10.0` of `http_extensions`
+ - Now requires `0.5.0` of `ohno`
+ - Now requires `0.8.0` of `seatbelt`
+ - Now requires `0.5.0` of `templated_uri`
+ - Now requires `0.6.0` of `tick`
+
## [0.6.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/fetch_hyper/Cargo.toml b/crates/fetch_hyper/Cargo.toml
index f3659b60f..e7e7d1cd5 100644
--- a/crates/fetch_hyper/Cargo.toml
+++ b/crates/fetch_hyper/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "fetch_hyper"
description = "Hyper-based HTTP transport utilities for fetch."
-version = "0.6.0"
+version = "0.7.0"
readme = "README.md"
keywords = ["oxidizer", "hyper", "fetch", "http", "tls"]
categories = ["network-programming"]
diff --git a/crates/fetch_hyper/README.md b/crates/fetch_hyper/README.md
index f14d1e750..57c2bd3e8 100644
--- a/crates/fetch_hyper/README.md
+++ b/crates/fetch_hyper/README.md
@@ -39,11 +39,11 @@ The runtime is supplied by the caller via an [`anyspawn::Spawner`][__link6].
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQb1PafKPRqQnMbycEo89Tdc1Ibs7VR1QL49eUbNVExL_GkLMNhZISCaGFueXNwYXduZTAuNy4wgmtmZXRjaF9oeXBlcmUwLjYuMIJtZmV0Y2hfb3B0aW9uc2UwLjIuM4JvaHR0cF9leHRlbnNpb25zZTAuOS4w
- [__link0]: https://docs.rs/fetch_hyper/0.6.0/fetch_hyper/?search=HyperTransportBuilder
- [__link1]: https://docs.rs/fetch_hyper/0.6.0/fetch_hyper/?search=Connect
- [__link2]: https://docs.rs/fetch_options/0.2.3/fetch_options/?search=TransportOptions
- [__link3]: https://docs.rs/fetch_hyper/0.6.0/fetch_hyper/?search=HyperTransport
- [__link4]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=RequestHandler
- [__link5]: https://docs.rs/fetch_hyper/0.6.0/fetch_hyper/?search=HyperTransportBuilder::build
- [__link6]: https://docs.rs/anyspawn/0.7.0/anyspawn/?search=Spawner
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQb1PafKPRqQnMbycEo89Tdc1Ibs7VR1QL49eUbNVExL_GkLMNhZISCaGFueXNwYXduZTAuOC4wgmtmZXRjaF9oeXBlcmUwLjcuMIJtZmV0Y2hfb3B0aW9uc2UwLjIuNIJvaHR0cF9leHRlbnNpb25zZjAuMTAuMA
+ [__link0]: https://docs.rs/fetch_hyper/0.7.0/fetch_hyper/?search=HyperTransportBuilder
+ [__link1]: https://docs.rs/fetch_hyper/0.7.0/fetch_hyper/?search=Connect
+ [__link2]: https://docs.rs/fetch_options/0.2.4/fetch_options/?search=TransportOptions
+ [__link3]: https://docs.rs/fetch_hyper/0.7.0/fetch_hyper/?search=HyperTransport
+ [__link4]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=RequestHandler
+ [__link5]: https://docs.rs/fetch_hyper/0.7.0/fetch_hyper/?search=HyperTransportBuilder::build
+ [__link6]: https://docs.rs/anyspawn/0.8.0/anyspawn/?search=Spawner
diff --git a/crates/fetch_options/CHANGELOG.md b/crates/fetch_options/CHANGELOG.md
index 0bc2f4483..12a7ec2f2 100644
--- a/crates/fetch_options/CHANGELOG.md
+++ b/crates/fetch_options/CHANGELOG.md
@@ -1,5 +1,23 @@
# Changelog
+## [0.2.4] - 2026-08-13
+
+- ✨ Features
+
+ - add REST transcoding for gRPC services ([#600](https://github.com/microsoft/oxidizer/600))
+
+- 🐛 Bug Fixes
+
+ - exclude non-source artifacts from published crates via include allowlist ([#526](https://github.com/microsoft/oxidizer/526))
+
+- ✔️ Tasks
+
+ - re-release all packages with LFS-free tarballs ([#531](https://github.com/microsoft/oxidizer/531))
+
+- 🏗️ Build System
+
+ - adopt cargo-anvil check catalog (github backend) ([#534](https://github.com/microsoft/oxidizer/534))
+
## [0.2.3] - 2026-06-26
- 🐛 Bug Fixes
diff --git a/crates/fetch_options/Cargo.toml b/crates/fetch_options/Cargo.toml
index bd6f8a3c3..931a57227 100644
--- a/crates/fetch_options/Cargo.toml
+++ b/crates/fetch_options/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "fetch_options"
description = "Options types for 'fetch' crate."
-version = "0.2.3"
+version = "0.2.4"
readme = "README.md"
keywords = ["oxidizer", "http", "options", "fetch", "transport"]
categories = ["network-programming"]
diff --git a/crates/fetch_tls/CHANGELOG.md b/crates/fetch_tls/CHANGELOG.md
index 933e6cb24..f11d8f15d 100644
--- a/crates/fetch_tls/CHANGELOG.md
+++ b/crates/fetch_tls/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## [0.4.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.5.0` of `ohno`
+
## [0.3.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/fetch_tls/Cargo.toml b/crates/fetch_tls/Cargo.toml
index 313dc7ffe..0f814d6f7 100644
--- a/crates/fetch_tls/Cargo.toml
+++ b/crates/fetch_tls/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "fetch_tls"
description = "TLS configurations and APIs used by 'fetch' crate."
-version = "0.3.0"
+version = "0.4.0"
readme = "README.md"
keywords = ["oxidizer", "tls", "fetch", "http", "client"]
categories = ["network-programming"]
diff --git a/crates/fetch_tls/README.md b/crates/fetch_tls/README.md
index f1c09699e..1bf964984 100644
--- a/crates/fetch_tls/README.md
+++ b/crates/fetch_tls/README.md
@@ -52,12 +52,12 @@ a [`BackendError`][__link7].
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbQA960tEbzWQbaOpko_VXWgAbMI3Hi90EGwIb3WsswbPp-xVhZIGCaWZldGNoX3Rsc2UwLjMuMA
- [__link0]: https://docs.rs/fetch_tls/0.3.0/fetch_tls/?search=TlsOptions
- [__link1]: https://docs.rs/fetch_tls/0.3.0/fetch_tls/?search=TlsOptionsBuilder
- [__link2]: https://docs.rs/fetch_tls/0.3.0/fetch_tls/?search=TlsOptions::builder
- [__link3]: https://docs.rs/fetch_tls/0.3.0/fetch_tls/?search=TlsOptions::default
- [__link4]: https://docs.rs/fetch_tls/0.3.0/fetch_tls/?search=TlsBackendBuilder
- [__link5]: https://docs.rs/fetch_tls/0.3.0/fetch_tls/?search=TlsOptions
- [__link6]: https://docs.rs/fetch_tls/0.3.0/fetch_tls/?search=TlsBackend
- [__link7]: https://docs.rs/fetch_tls/0.3.0/fetch_tls/?search=BackendError
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbQA960tEbzWQbaOpko_VXWgAbMI3Hi90EGwIb3WsswbPp-xVhZIGCaWZldGNoX3Rsc2UwLjQuMA
+ [__link0]: https://docs.rs/fetch_tls/0.4.0/fetch_tls/?search=TlsOptions
+ [__link1]: https://docs.rs/fetch_tls/0.4.0/fetch_tls/?search=TlsOptionsBuilder
+ [__link2]: https://docs.rs/fetch_tls/0.4.0/fetch_tls/?search=TlsOptions::builder
+ [__link3]: https://docs.rs/fetch_tls/0.4.0/fetch_tls/?search=TlsOptions::default
+ [__link4]: https://docs.rs/fetch_tls/0.4.0/fetch_tls/?search=TlsBackendBuilder
+ [__link5]: https://docs.rs/fetch_tls/0.4.0/fetch_tls/?search=TlsOptions
+ [__link6]: https://docs.rs/fetch_tls/0.4.0/fetch_tls/?search=TlsBackend
+ [__link7]: https://docs.rs/fetch_tls/0.4.0/fetch_tls/?search=BackendError
diff --git a/crates/http_extensions/CHANGELOG.md b/crates/http_extensions/CHANGELOG.md
index 9f156e77b..0432c984b 100644
--- a/crates/http_extensions/CHANGELOG.md
+++ b/crates/http_extensions/CHANGELOG.md
@@ -1,5 +1,19 @@
# Changelog
+## [0.10.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.9.0` of `bytesbuf`
+ - Now requires `0.5.0` of `ohno`
+ - Now requires `0.5.0` of `templated_uri`
+ - Now requires `0.10.0` of `thread_aware`
+ - Now requires `0.6.0` of `tick`
+
+- 🐛 Bug Fixes
+
+ - declare dependency features where the API is used ([#659](https://github.com/microsoft/oxidizer/659))
+
## [0.9.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/http_extensions/Cargo.toml b/crates/http_extensions/Cargo.toml
index e574e9989..af4c6111a 100644
--- a/crates/http_extensions/Cargo.toml
+++ b/crates/http_extensions/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "http_extensions"
description = "Shared HTTP types and extension traits for clients and servers."
-version = "0.9.0"
+version = "0.10.0"
readme = "README.md"
keywords = ["oxidizer", "http", "extensions", "client", "server"]
categories = ["network-programming"]
diff --git a/crates/http_extensions/README.md b/crates/http_extensions/README.md
index 16fef6474..a64e05eb1 100644
--- a/crates/http_extensions/README.md
+++ b/crates/http_extensions/README.md
@@ -170,23 +170,23 @@ for future requests. This makes the crate particularly efficient for high-throug
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQb8ws5BCyJXrMbtKOqwMaB35YbTeUgtnVoxOMbl-5qQusDAothZIWCZWJ5dGVzZjEuMTIuMIJoYnl0ZXNidWZlMC44LjCCZGh0dHBlMS40LjKCaWh0dHBfYm9keWUxLjAuMYJvaHR0cF9leHRlbnNpb25zZTAuOS4w
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQb8ws5BCyJXrMbtKOqwMaB35YbTeUgtnVoxOMbl-5qQusDAothZIWCZWJ5dGVzZjEuMTIuMIJoYnl0ZXNidWZlMC45LjCCZGh0dHBlMS40LjKCaWh0dHBfYm9keWUxLjAuMYJvaHR0cF9leHRlbnNpb25zZjAuMTAuMA
[__link0]: https://crates.io/crates/http/1.4.2
- [__link1]: https://docs.rs/http_extensions/0.9.0/http_extensions/type.HttpRequest.html
- [__link10]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=StatusExt
- [__link11]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=RequestExt
- [__link12]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=ResponseExt
- [__link13]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpRequestExt
- [__link14]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HeaderMapExt
- [__link15]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HeaderValueExt
+ [__link1]: https://docs.rs/http_extensions/0.10.0/http_extensions/type.HttpRequest.html
+ [__link10]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=StatusExt
+ [__link11]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=RequestExt
+ [__link12]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=ResponseExt
+ [__link13]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpRequestExt
+ [__link14]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HeaderMapExt
+ [__link15]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HeaderValueExt
[__link16]: https://docs.rs/http/1.4.2/http/?search=HeaderValue
[__link17]: https://docs.rs/bytes/1.12.0/bytes/?search=Bytes
- [__link18]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=ExtensionsExt
+ [__link18]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=ExtensionsExt
[__link19]: https://docs.rs/http/1.4.2/http/?search=Extensions
- [__link2]: https://docs.rs/http_extensions/0.9.0/http_extensions/type.HttpResponse.html
- [__link20]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=RequestHandler
- [__link21]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpRequestBuilder
- [__link22]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=StatusExt::ensure_success
+ [__link2]: https://docs.rs/http_extensions/0.10.0/http_extensions/type.HttpResponse.html
+ [__link20]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=RequestHandler
+ [__link21]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpRequestBuilder
+ [__link22]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=StatusExt::ensure_success
[__link23]: https://crates.io/crates/http/1.4.2
[__link24]: https://docs.rs/http/1.4.2/http/?search=Request
[__link25]: https://docs.rs/http/1.4.2/http/?search=Response
@@ -194,12 +194,12 @@ This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbi6Iwi6yia9cb-_nab-IwSV0bii4s3u_Erlgbh-UNpgxvX8phZIGCcmh0dHBfcGF0aF90ZW1wbGF0ZWUwLjIuMA
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbi6Iwi6yia9cb-_nab-IwSV0bii4s3u_Erlgbh-UNpgxvX8phZIGCcmh0dHBfcGF0aF90ZW1wbGF0ZWUwLjIuMQ
[__link0]: https://github.com/googleapis/googleapis/blob/master/google/api/http.proto
- [__link1]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=PathTemplate
- [__link10]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Grammar
- [__link11]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Grammar
- [__link12]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Grammar::with_segment_affixes
- [__link13]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Segment::Affix
- [__link14]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Segment
- [__link15]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Segment::Literal
- [__link16]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Segment::Variable
- [__link17]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Segment::Single
- [__link18]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Segment::Literal
- [__link19]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Segment::Variable
- [__link2]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Segment
- [__link20]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Segment::Rest
- [__link21]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=ParseError
- [__link3]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Variable
- [__link4]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=PathTemplate
+ [__link1]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=PathTemplate
+ [__link10]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Grammar
+ [__link11]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Grammar
+ [__link12]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Grammar::with_segment_affixes
+ [__link13]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Segment::Affix
+ [__link14]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Segment
+ [__link15]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Segment::Literal
+ [__link16]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Segment::Variable
+ [__link17]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Segment::Single
+ [__link18]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Segment::Literal
+ [__link19]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Segment::Variable
+ [__link2]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Segment
+ [__link20]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Segment::Rest
+ [__link21]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=ParseError
+ [__link3]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Variable
+ [__link4]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=PathTemplate
[__link5]: https://github.com/googleapis/googleapis/blob/master/google/api/http.proto
- [__link6]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Segment::Single
- [__link7]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Segment::Rest
- [__link8]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=Segment::Variable
- [__link9]: https://docs.rs/http_path_template/0.2.0/http_path_template/?search=PathTemplate::parse
+ [__link6]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Segment::Single
+ [__link7]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Segment::Rest
+ [__link8]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=Segment::Variable
+ [__link9]: https://docs.rs/http_path_template/0.2.1/http_path_template/?search=PathTemplate::parse
diff --git a/crates/internity/CHANGELOG.md b/crates/internity/CHANGELOG.md
index 9a0b4375c..9f241f400 100644
--- a/crates/internity/CHANGELOG.md
+++ b/crates/internity/CHANGELOG.md
@@ -1,10 +1,6 @@
# Changelog
-All notable changes to this crate are documented here. The format is based on
-[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres
-to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-## [Unreleased]
+## [0.1.1] - 2026-08-13
### Added
@@ -20,6 +16,14 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
`&str` incurs. All unchecked-UTF-8 conversion now lives in one `storage` module —
every other module, including the frozen readers, is `#![forbid(unsafe_code)]`.
+- ✨ Features
+
+ - export frozen readers and guarantee dense handles ([#657](https://github.com/microsoft/oxidizer/657))
+
+All notable changes to this crate are documented here. The format is based on
+[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres
+to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
## [0.1.0]
Initial release.
diff --git a/crates/internity/Cargo.toml b/crates/internity/Cargo.toml
index b0e59d427..42d634767 100644
--- a/crates/internity/Cargo.toml
+++ b/crates/internity/Cargo.toml
@@ -3,7 +3,7 @@
[package]
name = "internity"
-version = "0.1.0"
+version = "0.1.1"
description = "Blazingly fast string interning with compact handles, compact storage, and concurrent fill support"
readme = "README.md"
keywords = ["intern", "interner", "string", "symbol", "concurrent"]
diff --git a/crates/internity/README.md b/crates/internity/README.md
index b793ab3f8..437059fe7 100644
--- a/crates/internity/README.md
+++ b/crates/internity/README.md
@@ -156,41 +156,41 @@ the number of distinct strings is bounded by the 4-byte handle (approximately
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQb7Wo6zSnZb7MbtFe4cwDf5usbN_sAG3Pv03ob1pthCFchtBBhZIKCaWludGVybml0eWUwLjEuMIJlc2VyZGVnMS4wLjIyOA
- [__link0]: https://docs.rs/internity/0.1.0/internity/?search=Sym
- [__link1]: https://docs.rs/internity/0.1.0/internity/?search=LocalLexicon
- [__link10]: https://docs.rs/internity/0.1.0/internity/?search=LocalLexicon
- [__link11]: https://docs.rs/internity/0.1.0/internity/?search=LocalLexicon::freeze
- [__link12]: https://docs.rs/internity/0.1.0/internity/?search=LocalLexicon::index_of
- [__link13]: https://docs.rs/internity/0.1.0/internity/?search=LocalLexicon::sym_at
- [__link14]: https://docs.rs/internity/0.1.0/internity/?search=Sym::as_u32
- [__link15]: https://docs.rs/internity/0.1.0/internity/?search=ThreadedLexicon
- [__link16]: https://docs.rs/internity/0.1.0/internity/?search=Sym
- [__link17]: https://docs.rs/internity/0.1.0/internity/?search=LocalLexicon::freeze
- [__link18]: https://docs.rs/internity/0.1.0/internity/?search=Sym
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQb7Wo6zSnZb7MbtFe4cwDf5usbN_sAG3Pv03ob1pthCFchtBBhZIKCaWludGVybml0eWUwLjEuMYJlc2VyZGVnMS4wLjIyOA
+ [__link0]: https://docs.rs/internity/0.1.1/internity/?search=Sym
+ [__link1]: https://docs.rs/internity/0.1.1/internity/?search=LocalLexicon
+ [__link10]: https://docs.rs/internity/0.1.1/internity/?search=LocalLexicon
+ [__link11]: https://docs.rs/internity/0.1.1/internity/?search=LocalLexicon::freeze
+ [__link12]: https://docs.rs/internity/0.1.1/internity/?search=LocalLexicon::index_of
+ [__link13]: https://docs.rs/internity/0.1.1/internity/?search=LocalLexicon::sym_at
+ [__link14]: https://docs.rs/internity/0.1.1/internity/?search=Sym::as_u32
+ [__link15]: https://docs.rs/internity/0.1.1/internity/?search=ThreadedLexicon
+ [__link16]: https://docs.rs/internity/0.1.1/internity/?search=Sym
+ [__link17]: https://docs.rs/internity/0.1.1/internity/?search=LocalLexicon::freeze
+ [__link18]: https://docs.rs/internity/0.1.1/internity/?search=Sym
[__link19]: https://docs.rs/serde/1.0.228/serde/?search=Serialize
- [__link2]: https://docs.rs/internity/0.1.0/internity/?search=ThreadedLexicon
- [__link20]: https://docs.rs/internity/0.1.0/internity/?search=se::SerializeIn
- [__link21]: https://docs.rs/internity/0.1.0/internity/?search=de::DeserializeIn
- [__link22]: https://docs.rs/internity/0.1.0/internity/?search=Reader
- [__link23]: https://docs.rs/internity/0.1.0/internity/?search=se::SerializeReader
- [__link24]: https://docs.rs/internity/0.1.0/internity/?search=LocalLexicon
- [__link25]: https://docs.rs/internity/0.1.0/internity/?search=ThreadedLexicon
- [__link26]: https://docs.rs/internity/0.1.0/internity/?search=ThreadedLexicon
- [__link27]: https://docs.rs/internity/0.1.0/internity/?search=ThreadedReader
- [__link28]: https://docs.rs/internity/0.1.0/internity/?search=LocalLexicon
- [__link29]: https://docs.rs/internity/0.1.0/internity/?search=LocalReader
- [__link3]: https://docs.rs/internity/0.1.0/internity/?search=Lexicon
- [__link30]: https://docs.rs/internity/0.1.0/internity/?search=Lexicon
- [__link31]: https://docs.rs/internity/0.1.0/internity/?search=Sym
- [__link32]: https://docs.rs/internity/0.1.0/internity/?search=Reader
- [__link33]: https://docs.rs/internity/0.1.0/internity/?search=se::SerializeIn
- [__link34]: https://docs.rs/internity/0.1.0/internity/?search=de::DeserializeIn
- [__link35]: https://docs.rs/internity/0.1.0/internity/?search=se::SerializeReader
- [__link36]: https://docs.rs/internity/0.1.0/internity/?search=ThreadedLexicon
- [__link4]: https://docs.rs/internity/0.1.0/internity/?search=LocalLexicon::freeze
- [__link5]: https://docs.rs/internity/0.1.0/internity/?search=Reader
- [__link6]: https://docs.rs/internity/0.1.0/internity/?search=LocalReader
- [__link7]: https://docs.rs/internity/0.1.0/internity/?search=ThreadedReader
+ [__link2]: https://docs.rs/internity/0.1.1/internity/?search=ThreadedLexicon
+ [__link20]: https://docs.rs/internity/0.1.1/internity/?search=se::SerializeIn
+ [__link21]: https://docs.rs/internity/0.1.1/internity/?search=de::DeserializeIn
+ [__link22]: https://docs.rs/internity/0.1.1/internity/?search=Reader
+ [__link23]: https://docs.rs/internity/0.1.1/internity/?search=se::SerializeReader
+ [__link24]: https://docs.rs/internity/0.1.1/internity/?search=LocalLexicon
+ [__link25]: https://docs.rs/internity/0.1.1/internity/?search=ThreadedLexicon
+ [__link26]: https://docs.rs/internity/0.1.1/internity/?search=ThreadedLexicon
+ [__link27]: https://docs.rs/internity/0.1.1/internity/?search=ThreadedReader
+ [__link28]: https://docs.rs/internity/0.1.1/internity/?search=LocalLexicon
+ [__link29]: https://docs.rs/internity/0.1.1/internity/?search=LocalReader
+ [__link3]: https://docs.rs/internity/0.1.1/internity/?search=Lexicon
+ [__link30]: https://docs.rs/internity/0.1.1/internity/?search=Lexicon
+ [__link31]: https://docs.rs/internity/0.1.1/internity/?search=Sym
+ [__link32]: https://docs.rs/internity/0.1.1/internity/?search=Reader
+ [__link33]: https://docs.rs/internity/0.1.1/internity/?search=se::SerializeIn
+ [__link34]: https://docs.rs/internity/0.1.1/internity/?search=de::DeserializeIn
+ [__link35]: https://docs.rs/internity/0.1.1/internity/?search=se::SerializeReader
+ [__link36]: https://docs.rs/internity/0.1.1/internity/?search=ThreadedLexicon
+ [__link4]: https://docs.rs/internity/0.1.1/internity/?search=LocalLexicon::freeze
+ [__link5]: https://docs.rs/internity/0.1.1/internity/?search=Reader
+ [__link6]: https://docs.rs/internity/0.1.1/internity/?search=LocalReader
+ [__link7]: https://docs.rs/internity/0.1.1/internity/?search=ThreadedReader
[__link8]: https://doc.rust-lang.org/stable/core/?search=hash::BuildHasher
- [__link9]: https://docs.rs/internity/0.1.0/internity/?search=LocalLexicon
+ [__link9]: https://docs.rs/internity/0.1.1/internity/?search=LocalLexicon
diff --git a/crates/multitude/CHANGELOG.md b/crates/multitude/CHANGELOG.md
index 0f7e23719..44a4c2a7a 100644
--- a/crates/multitude/CHANGELOG.md
+++ b/crates/multitude/CHANGELOG.md
@@ -1,5 +1,15 @@
# Changelog
+## [0.9.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.9.0` of `bytesbuf`
+
+- 🐛 Bug Fixes
+
+ - declare dependency features where the API is used ([#659](https://github.com/microsoft/oxidizer/659))
+
## [0.8.0] - 2026-08-09
- ⚠️ Breaking
diff --git a/crates/multitude/Cargo.toml b/crates/multitude/Cargo.toml
index 4455c5f3d..ad87c1139 100644
--- a/crates/multitude/Cargo.toml
+++ b/crates/multitude/Cargo.toml
@@ -3,7 +3,7 @@
[package]
name = "multitude"
-version = "0.8.0"
+version = "0.9.0"
description = "Fast and flexible arena allocator."
readme = "README.md"
keywords = ["arena", "memory", "allocator", "bump"]
diff --git a/crates/multitude/README.md b/crates/multitude/README.md
index 6c1bea759..07e80a4ad 100644
--- a/crates/multitude/README.md
+++ b/crates/multitude/README.md
@@ -469,117 +469,117 @@ including a custom DST with a trait-object tail.
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQboB0ATxJR-IsbzzBMueWRYhcbDZf0PEttIM8b893i_v4GCwRhZIaCaGJ5dGVtdWNrZjEuMjUuMIJlYnl0ZXNmMS4xMi4wgmhieXRlc2J1ZmUwLjguMIJpbXVsdGl0dWRlZTAuOC4wgmVzZXJkZWcxLjAuMjI4gmh6ZXJvY29weWYwLjguNTI
- [__link0]: https://docs.rs/multitude/0.8.0/multitude/?search=Alloc
- [__link1]: https://docs.rs/multitude/0.8.0/multitude/?search=Arc
- [__link10]: https://docs.rs/multitude/0.8.0/multitude/?search=vec::Vec
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQboB0ATxJR-IsbzzBMueWRYhcbDZf0PEttIM8b893i_v4GCwRhZIaCaGJ5dGVtdWNrZjEuMjUuMIJlYnl0ZXNmMS4xMi4wgmhieXRlc2J1ZmUwLjkuMIJpbXVsdGl0dWRlZTAuOS4wgmVzZXJkZWcxLjAuMjI4gmh6ZXJvY29weWYwLjguNTI
+ [__link0]: https://docs.rs/multitude/0.9.0/multitude/?search=Alloc
+ [__link1]: https://docs.rs/multitude/0.9.0/multitude/?search=Arc
+ [__link10]: https://docs.rs/multitude/0.9.0/multitude/?search=vec::Vec
[__link100]: https://doc.rust-lang.org/stable/std/convert/trait.From.html
- [__link101]: https://docs.rs/multitude/0.8.0/multitude/?search=Arc
- [__link102]: https://docs.rs/multitude/0.8.0/multitude/?search=Arc
+ [__link101]: https://docs.rs/multitude/0.9.0/multitude/?search=Arc
+ [__link102]: https://docs.rs/multitude/0.9.0/multitude/?search=Arc
[__link103]: https://docs.rs/bytes/1.12.0/bytes/?search=Bytes
- [__link104]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=mem::Memory
- [__link105]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena
- [__link106]: https://docs.rs/bytesbuf/0.8.0/bytesbuf/?search=BytesBuf
- [__link107]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena
+ [__link104]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=mem::Memory
+ [__link105]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena
+ [__link106]: https://docs.rs/bytesbuf/0.9.0/bytesbuf/?search=BytesBuf
+ [__link107]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena
[__link108]: https://crates.io/crates/hashbrown
- [__link109]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc_hash_map
- [__link11]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::format
- [__link110]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc_hash_map_with_capacity
- [__link111]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc_set
- [__link112]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc_set_with_capacity
+ [__link109]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc_hash_map
+ [__link11]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::format
+ [__link110]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc_hash_map_with_capacity
+ [__link111]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc_set
+ [__link112]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc_set_with_capacity
[__link12]: https://github.com/microsoft/oxidizer/blob/main/crates/multitude/docs/BUMPALO.md
[__link13]: https://crates.io/crates/bumpalo
- [__link14]: https://docs.rs/multitude/0.8.0/multitude/?search=Alloc
- [__link15]: https://docs.rs/multitude/0.8.0/multitude/?search=Box
- [__link16]: https://docs.rs/multitude/0.8.0/multitude/?search=Rc
- [__link17]: https://docs.rs/multitude/0.8.0/multitude/?search=Arc
- [__link18]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc
- [__link19]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc_box
- [__link2]: https://docs.rs/multitude/0.8.0/multitude/?search=Rc
- [__link20]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc_rc
- [__link21]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc_arc
- [__link22]: https://docs.rs/multitude/0.8.0/multitude/?search=Alloc
- [__link23]: https://docs.rs/multitude/0.8.0/multitude/?search=Arc
- [__link24]: https://docs.rs/multitude/0.8.0/multitude/?search=Rc
- [__link25]: https://docs.rs/multitude/0.8.0/multitude/?search=Arc
+ [__link14]: https://docs.rs/multitude/0.9.0/multitude/?search=Alloc
+ [__link15]: https://docs.rs/multitude/0.9.0/multitude/?search=Box
+ [__link16]: https://docs.rs/multitude/0.9.0/multitude/?search=Rc
+ [__link17]: https://docs.rs/multitude/0.9.0/multitude/?search=Arc
+ [__link18]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc
+ [__link19]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc_box
+ [__link2]: https://docs.rs/multitude/0.9.0/multitude/?search=Rc
+ [__link20]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc_rc
+ [__link21]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc_arc
+ [__link22]: https://docs.rs/multitude/0.9.0/multitude/?search=Alloc
+ [__link23]: https://docs.rs/multitude/0.9.0/multitude/?search=Arc
+ [__link24]: https://docs.rs/multitude/0.9.0/multitude/?search=Rc
+ [__link25]: https://docs.rs/multitude/0.9.0/multitude/?search=Arc
[__link26]: https://doc.rust-lang.org/stable/std/marker/trait.Send.html
[__link27]: https://doc.rust-lang.org/stable/std/marker/trait.Sync.html
- [__link28]: https://docs.rs/multitude/0.8.0/multitude/?search=Arc
- [__link29]: https://docs.rs/multitude/0.8.0/multitude/?search=Box
- [__link3]: https://docs.rs/multitude/0.8.0/multitude/?search=Box
+ [__link28]: https://docs.rs/multitude/0.9.0/multitude/?search=Arc
+ [__link29]: https://docs.rs/multitude/0.9.0/multitude/?search=Box
+ [__link3]: https://docs.rs/multitude/0.9.0/multitude/?search=Box
[__link30]: https://doc.rust-lang.org/stable/alloc/?search=boxed::Box
- [__link31]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena
+ [__link31]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena
[__link32]: https://doc.rust-lang.org/stable/std/marker/trait.Send.html
- [__link33]: https://docs.rs/multitude/0.8.0/multitude/?search=Alloc
- [__link34]: https://docs.rs/multitude/0.8.0/multitude/?search=Arc
- [__link35]: https://docs.rs/multitude/0.8.0/multitude/?search=vec::Vec
- [__link36]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::String
- [__link37]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::Utf16String
+ [__link33]: https://docs.rs/multitude/0.9.0/multitude/?search=Alloc
+ [__link34]: https://docs.rs/multitude/0.9.0/multitude/?search=Arc
+ [__link35]: https://docs.rs/multitude/0.9.0/multitude/?search=vec::Vec
+ [__link36]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::String
+ [__link37]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::Utf16String
[__link38]: https://crates.io/crates/allocator-api2
- [__link39]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::String
- [__link4]: https://docs.rs/multitude/0.8.0/multitude/?search=Arc
- [__link40]: https://docs.rs/multitude/0.8.0/multitude/?search=vec::Vec
- [__link41]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::String::into_boxed_str
- [__link42]: https://docs.rs/multitude/0.8.0/multitude/?search=Box
- [__link43]: https://docs.rs/multitude/0.8.0/multitude/?search=Box
- [__link44]: https://docs.rs/multitude/0.8.0/multitude/?search=vec::Vec::into_boxed_slice
- [__link45]: https://docs.rs/multitude/0.8.0/multitude/?search=Box
- [__link46]: https://docs.rs/multitude/0.8.0/multitude/?search=Box
- [__link47]: https://docs.rs/multitude/0.8.0/multitude/?search=Arc
- [__link48]: https://docs.rs/multitude/0.8.0/multitude/?search=Arc
- [__link49]: https://docs.rs/multitude/0.8.0/multitude/?search=vec::Vec::leak
- [__link5]: https://docs.rs/multitude/0.8.0/multitude/?search=Rc
- [__link50]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena
+ [__link39]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::String
+ [__link4]: https://docs.rs/multitude/0.9.0/multitude/?search=Arc
+ [__link40]: https://docs.rs/multitude/0.9.0/multitude/?search=vec::Vec
+ [__link41]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::String::into_boxed_str
+ [__link42]: https://docs.rs/multitude/0.9.0/multitude/?search=Box
+ [__link43]: https://docs.rs/multitude/0.9.0/multitude/?search=Box
+ [__link44]: https://docs.rs/multitude/0.9.0/multitude/?search=vec::Vec::into_boxed_slice
+ [__link45]: https://docs.rs/multitude/0.9.0/multitude/?search=Box
+ [__link46]: https://docs.rs/multitude/0.9.0/multitude/?search=Box
+ [__link47]: https://docs.rs/multitude/0.9.0/multitude/?search=Arc
+ [__link48]: https://docs.rs/multitude/0.9.0/multitude/?search=Arc
+ [__link49]: https://docs.rs/multitude/0.9.0/multitude/?search=vec::Vec::leak
+ [__link5]: https://docs.rs/multitude/0.9.0/multitude/?search=Rc
+ [__link50]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena
[__link51]: https://crates.io/crates/hashbrown
- [__link52]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc_hash_map
- [__link53]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc_hash_map_with_capacity
- [__link54]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc_set
- [__link55]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc_set_with_capacity
- [__link56]: https://docs.rs/multitude/0.8.0/multitude/strings/index.html
- [__link57]: https://docs.rs/multitude/0.8.0/multitude/?search=Arc
- [__link58]: https://docs.rs/multitude/0.8.0/multitude/?search=Rc
- [__link59]: https://docs.rs/multitude/0.8.0/multitude/?search=Box
- [__link6]: https://docs.rs/multitude/0.8.0/multitude/?search=Box
- [__link60]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena
- [__link61]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::String
- [__link62]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::Utf16String
- [__link63]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::format
- [__link64]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::format_utf16
- [__link65]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::String
- [__link66]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::String::into_boxed_str
- [__link67]: https://docs.rs/multitude/0.8.0/multitude/?search=Box
- [__link68]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::Utf16String
- [__link69]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::Utf16String::into_boxed_utf16_str
- [__link7]: https://docs.rs/multitude/0.8.0/multitude/?search=Alloc
- [__link70]: https://docs.rs/multitude/0.8.0/multitude/?search=de::DeserializeIn
- [__link71]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena
+ [__link52]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc_hash_map
+ [__link53]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc_hash_map_with_capacity
+ [__link54]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc_set
+ [__link55]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc_set_with_capacity
+ [__link56]: https://docs.rs/multitude/0.9.0/multitude/strings/index.html
+ [__link57]: https://docs.rs/multitude/0.9.0/multitude/?search=Arc
+ [__link58]: https://docs.rs/multitude/0.9.0/multitude/?search=Rc
+ [__link59]: https://docs.rs/multitude/0.9.0/multitude/?search=Box
+ [__link6]: https://docs.rs/multitude/0.9.0/multitude/?search=Box
+ [__link60]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena
+ [__link61]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::String
+ [__link62]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::Utf16String
+ [__link63]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::format
+ [__link64]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::format_utf16
+ [__link65]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::String
+ [__link66]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::String::into_boxed_str
+ [__link67]: https://docs.rs/multitude/0.9.0/multitude/?search=Box
+ [__link68]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::Utf16String
+ [__link69]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::Utf16String::into_boxed_utf16_str
+ [__link7]: https://docs.rs/multitude/0.9.0/multitude/?search=Alloc
+ [__link70]: https://docs.rs/multitude/0.9.0/multitude/?search=de::DeserializeIn
+ [__link71]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena
[__link72]: https://docs.rs/serde/1.0.228/serde/?search=Deserialize
- [__link73]: https://docs.rs/multitude/0.8.0/multitude/?search=de::DeserializeIn
- [__link74]: https://docs.rs/multitude/0.8.0/multitude/de/index.html
- [__link75]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena
- [__link76]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc_dst_arc
- [__link77]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc_dst_rc
- [__link78]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::alloc_dst_box
+ [__link73]: https://docs.rs/multitude/0.9.0/multitude/?search=de::DeserializeIn
+ [__link74]: https://docs.rs/multitude/0.9.0/multitude/de/index.html
+ [__link75]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena
+ [__link76]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc_dst_arc
+ [__link77]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc_dst_rc
+ [__link78]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::alloc_dst_box
[__link79]: https://doc.rust-lang.org/stable/core/?search=alloc::Layout
- [__link8]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::String
+ [__link8]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::String
[__link80]: https://crates.io/crates/dst-factory
- [__link81]: https://docs.rs/multitude/0.8.0/multitude/?search=Box
- [__link82]: https://docs.rs/multitude/0.8.0/multitude/?search=Rc
- [__link83]: https://docs.rs/multitude/0.8.0/multitude/?search=Arc
+ [__link81]: https://docs.rs/multitude/0.9.0/multitude/?search=Box
+ [__link82]: https://docs.rs/multitude/0.9.0/multitude/?search=Rc
+ [__link83]: https://docs.rs/multitude/0.9.0/multitude/?search=Arc
[__link84]: `coerce!`
[__link85]: `coerce!`
[__link86]: https://doc.rust-lang.org/stable/std/?search=io::Write
- [__link87]: https://docs.rs/multitude/0.8.0/multitude/?search=vec::Vec
- [__link88]: https://docs.rs/multitude/0.8.0/multitude/?search=de::DeserializeIn
- [__link89]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::deserialize
- [__link9]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::Utf16String
- [__link90]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::deserialize_json
- [__link91]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::Utf16String
- [__link92]: https://docs.rs/multitude/0.8.0/multitude/?search=strings::format_utf16
+ [__link87]: https://docs.rs/multitude/0.9.0/multitude/?search=vec::Vec
+ [__link88]: https://docs.rs/multitude/0.9.0/multitude/?search=de::DeserializeIn
+ [__link89]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::deserialize
+ [__link9]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::Utf16String
+ [__link90]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::deserialize_json
+ [__link91]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::Utf16String
+ [__link92]: https://docs.rs/multitude/0.9.0/multitude/?search=strings::format_utf16
[__link93]: https://crates.io/crates/widestring
- [__link94]: https://docs.rs/multitude/0.8.0/multitude/?search=zerocopy::ZerocopyView
+ [__link94]: https://docs.rs/multitude/0.9.0/multitude/?search=zerocopy::ZerocopyView
[__link95]: https://docs.rs/zerocopy/0.8.52/zerocopy/?search=FromZeros
- [__link96]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::zerocopy
- [__link97]: https://docs.rs/multitude/0.8.0/multitude/?search=bytemuck::BytemuckView
+ [__link96]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::zerocopy
+ [__link97]: https://docs.rs/multitude/0.9.0/multitude/?search=bytemuck::BytemuckView
[__link98]: https://docs.rs/bytemuck/1.25.0/bytemuck/?search=Zeroable
- [__link99]: https://docs.rs/multitude/0.8.0/multitude/?search=Arena::bytemuck
+ [__link99]: https://docs.rs/multitude/0.9.0/multitude/?search=Arena::bytemuck
diff --git a/crates/ohno/CHANGELOG.md b/crates/ohno/CHANGELOG.md
index a340d1e39..0b175acce 100644
--- a/crates/ohno/CHANGELOG.md
+++ b/crates/ohno/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## [0.5.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - document pub(crate) constructors, reject #[no_constructors] under #[ohno::error] ([#653](https://github.com/microsoft/oxidizer/653))
+ - Now requires `0.5.0` of `ohno_macros`
+
## [0.4.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/ohno/Cargo.toml b/crates/ohno/Cargo.toml
index db97bb4ad..53d210b90 100644
--- a/crates/ohno/Cargo.toml
+++ b/crates/ohno/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "ohno"
description = "High-quality Rust error handling."
-version = "0.4.0"
+version = "0.5.0"
readme = "README.md"
keywords = ["oxidizer", "error", "backtrace"]
categories = ["data-structures"]
diff --git a/crates/ohno/README.md b/crates/ohno/README.md
index 05f932a23..2a3716df7 100644
--- a/crates/ohno/README.md
+++ b/crates/ohno/README.md
@@ -340,25 +340,25 @@ uniformly via [`Labeled::label`][__link21].
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbv-Hzd015wccb3QHVUUNfzdYbgkSSUDnsKTUbn3uKf5ryHu1hZIKCZG9obm9lMC40LjCCa29obm9fbWFjcm9zZTAuNC4w
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbv-Hzd015wccb3QHVUUNfzdYbgkSSUDnsKTUbn3uKf5ryHu1hZIKCZG9obm9lMC41LjCCa29obm9fbWFjcm9zZTAuNS4w
[__link0]: https://doc.rust-lang.org/stable/std/?search=fmt::Display
[__link1]: https://doc.rust-lang.org/stable/std/?search=fmt::Debug
[__link10]: https://doc.rust-lang.org/stable/std/macro.unreachable.html
- [__link11]: https://docs.rs/ohno_macros/0.4.0/ohno_macros/?search=enrich_err
- [__link12]: https://docs.rs/ohno_macros/0.4.0/ohno_macros/?search=enrich_err
- [__link13]: https://docs.rs/ohno/0.4.0/ohno/?search=Enrichable
- [__link14]: https://docs.rs/ohno/0.4.0/ohno/?search=AppError
- [__link15]: https://docs.rs/ohno/0.4.0/ohno/?search=AppError
- [__link16]: https://docs.rs/ohno/0.4.0/ohno/?search=ErrorLabel
- [__link17]: https://docs.rs/ohno/0.4.0/ohno/?search=ErrorLabel::from_error_chain
+ [__link11]: https://docs.rs/ohno_macros/0.5.0/ohno_macros/?search=enrich_err
+ [__link12]: https://docs.rs/ohno_macros/0.5.0/ohno_macros/?search=enrich_err
+ [__link13]: https://docs.rs/ohno/0.5.0/ohno/?search=Enrichable
+ [__link14]: https://docs.rs/ohno/0.5.0/ohno/?search=AppError
+ [__link15]: https://docs.rs/ohno/0.5.0/ohno/?search=AppError
+ [__link16]: https://docs.rs/ohno/0.5.0/ohno/?search=ErrorLabel
+ [__link17]: https://docs.rs/ohno/0.5.0/ohno/?search=ErrorLabel::from_error_chain
[__link18]: https://doc.rust-lang.org/stable/std/?search=error::Error::source
- [__link19]: https://docs.rs/ohno/0.4.0/ohno/?search=ErrorLabel
- [__link2]: https://docs.rs/ohno/0.4.0/ohno/?search=ErrorExt
- [__link20]: https://docs.rs/ohno/0.4.0/ohno/?search=Labeled
- [__link21]: https://docs.rs/ohno/0.4.0/ohno/?search=Labeled::label
- [__link3]: https://docs.rs/ohno/0.4.0/ohno/?search=OhnoCore
- [__link4]: https://docs.rs/ohno/0.4.0/ohno/?search=AppError
- [__link5]: https://docs.rs/ohno/0.4.0/ohno/?search=OhnoCore
+ [__link19]: https://docs.rs/ohno/0.5.0/ohno/?search=ErrorLabel
+ [__link2]: https://docs.rs/ohno/0.5.0/ohno/?search=ErrorExt
+ [__link20]: https://docs.rs/ohno/0.5.0/ohno/?search=Labeled
+ [__link21]: https://docs.rs/ohno/0.5.0/ohno/?search=Labeled::label
+ [__link3]: https://docs.rs/ohno/0.5.0/ohno/?search=OhnoCore
+ [__link4]: https://docs.rs/ohno/0.5.0/ohno/?search=AppError
+ [__link5]: https://docs.rs/ohno/0.5.0/ohno/?search=OhnoCore
[__link6]: https://doc.rust-lang.org/stable/std/?search=error::Error
[__link7]: https://doc.rust-lang.org/stable/std/?search=fmt::Display
[__link8]: https://doc.rust-lang.org/stable/std/?search=fmt::Debug
diff --git a/crates/ohno_macros/CHANGELOG.md b/crates/ohno_macros/CHANGELOG.md
index 25e1c7f95..6549672b8 100644
--- a/crates/ohno_macros/CHANGELOG.md
+++ b/crates/ohno_macros/CHANGELOG.md
@@ -1,5 +1,15 @@
# Changelog
+## [0.5.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - document pub(crate) constructors, reject #[no_constructors] under #[ohno::error] ([#653](https://github.com/microsoft/oxidizer/653))
+
+- 🐛 Bug Fixes
+
+ - declare dependency features where the API is used ([#659](https://github.com/microsoft/oxidizer/659))
+
## [0.4.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/ohno_macros/Cargo.toml b/crates/ohno_macros/Cargo.toml
index 15aa9a5e8..d695ce95f 100644
--- a/crates/ohno_macros/Cargo.toml
+++ b/crates/ohno_macros/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "ohno_macros"
description = "Macros for the ohno crate."
-version = "0.4.0"
+version = "0.5.0"
readme = "README.md"
keywords = ["oxidizer", "error", "backtrace"]
categories = ["data-structures"]
diff --git a/crates/rest_over_grpc/CHANGELOG.md b/crates/rest_over_grpc/CHANGELOG.md
index c379a15a9..d9073d452 100644
--- a/crates/rest_over_grpc/CHANGELOG.md
+++ b/crates/rest_over_grpc/CHANGELOG.md
@@ -1,5 +1,17 @@
# Changelog
+## [0.2.1] - 2026-08-13
+
+- 🔧 Maintenance
+
+ - Now requires `0.2.1` of `http_path_template`
+ - Now requires `0.1.1` of `routerama`
+ - Now requires `0.1.1` of `routerama_build`
+
+- ✔️ Tasks
+
+ - release bytesbuf v0.7.0 and 23 additional packages ([#599](https://github.com/microsoft/oxidizer/599))
+
All notable changes to this project are documented here.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
diff --git a/crates/rest_over_grpc/Cargo.toml b/crates/rest_over_grpc/Cargo.toml
index 85df68a8b..f7edc7955 100644
--- a/crates/rest_over_grpc/Cargo.toml
+++ b/crates/rest_over_grpc/Cargo.toml
@@ -3,7 +3,7 @@
[package]
name = "rest_over_grpc"
-version = "0.2.0"
+version = "0.2.1"
description = "Automatically transcode gRPC services to REST/JSON endpoints"
documentation = "https://docs.rs/rest_over_grpc"
readme = "README.md"
diff --git a/crates/rest_over_grpc/README.md b/crates/rest_over_grpc/README.md
index df56d8725..5d45271ed 100644
--- a/crates/rest_over_grpc/README.md
+++ b/crates/rest_over_grpc/README.md
@@ -218,44 +218,44 @@ as an Axum fallback service.
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQb4yyDbhLmywUbUgoeDyjY0hYb_gBd7xtnrJEbm_ruDQCrgu9hZIOCZ2xheWVyZWRlMC4zLjaCbnJlc3Rfb3Zlcl9ncnBjZTAuMi4wgm10b3dlcl9zZXJ2aWNlZTAuMy4z
- [__link0]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=handling::Status
- [__link1]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=serving::RestService::new
- [__link10]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=transcoding::Transcode::try_transcode
- [__link11]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=transcoding::HttpResponse
- [__link12]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=transcoding::StreamingResponse
- [__link13]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=transcoding::Transcode::transcode
- [__link14]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=transcoding::Transcode::try_transcode
- [__link15]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=handling::Context
- [__link16]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/build/index.html
- [__link17]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=handling::ResponseStream
- [__link18]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=handling::Status
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQb4yyDbhLmywUbUgoeDyjY0hYb_gBd7xtnrJEbm_ruDQCrgu9hZIOCZ2xheWVyZWRlMC4zLjaCbnJlc3Rfb3Zlcl9ncnBjZTAuMi4xgm10b3dlcl9zZXJ2aWNlZTAuMy4z
+ [__link0]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=handling::Status
+ [__link1]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=serving::RestService::new
+ [__link10]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=transcoding::Transcode::try_transcode
+ [__link11]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=transcoding::HttpResponse
+ [__link12]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=transcoding::StreamingResponse
+ [__link13]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=transcoding::Transcode::transcode
+ [__link14]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=transcoding::Transcode::try_transcode
+ [__link15]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=handling::Context
+ [__link16]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/build/index.html
+ [__link17]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=handling::ResponseStream
+ [__link18]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=handling::Status
[__link19]: https://github.com/microsoft/oxidizer/blob/main/crates/rest_over_grpc_examples/Cargo.toml
[__link2]: https://docs.rs/tower_service/0.3.3/tower_service/?search=Service
- [__link20]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=build::Generator::builder
- [__link21]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=build::GeneratorBuilder::emit_tonic_bridge
+ [__link20]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=build::Generator::builder
+ [__link21]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=build::GeneratorBuilder::emit_tonic_bridge
[__link22]: https://github.com/microsoft/oxidizer/blob/main/crates/rest_over_grpc_examples/build.rs
[__link23]: https://github.com/microsoft/oxidizer/blob/main/crates/rest_over_grpc_examples/src/tonic_bridge.rs
[__link24]: https://github.com/microsoft/oxidizer/blob/main/crates/rest_over_grpc_examples/src/tonic_bridge.rs
[__link25]: https://github.com/microsoft/oxidizer/tree/main/crates/rest_over_grpc_examples#examples
[__link26]: https://github.com/microsoft/oxidizer/blob/main/crates/rest_over_grpc/examples/generate_service.rs
[__link27]: https://github.com/microsoft/oxidizer/blob/main/crates/rest_over_grpc_examples/build.rs
- [__link28]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/build/index.html
- [__link29]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=serving::serve_http
- [__link3]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=serving::RestService
- [__link30]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=serving::serve_http_fn
- [__link31]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=serving::RestBody
- [__link32]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=serving::RestService
+ [__link28]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/build/index.html
+ [__link29]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=serving::serve_http
+ [__link3]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=serving::RestService
+ [__link30]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=serving::serve_http_fn
+ [__link31]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=serving::RestBody
+ [__link32]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=serving::RestService
[__link33]: https://docs.rs/tower_service/0.3.3/tower_service/?search=Service
- [__link34]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=serving::RestService
+ [__link34]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=serving::RestService
[__link35]: https://docs.rs/layered/0.3.6/layered/?search=Service
- [__link36]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=transcoding::HttpResponse
- [__link37]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=transcoding::StreamingResponse
- [__link38]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=transcoding::TranscodeResponse
- [__link39]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=serving::RestService
+ [__link36]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=transcoding::HttpResponse
+ [__link37]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=transcoding::StreamingResponse
+ [__link38]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=transcoding::TranscodeResponse
+ [__link39]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=serving::RestService
[__link4]: https://docs.rs/layered/0.3.6/layered/?search=Service
- [__link5]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=serving::RestService
+ [__link5]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=serving::RestService
[__link6]: https://docs.rs/axum-core/latest/axum_core/response/trait.IntoResponse.html
- [__link7]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=serving::serve_http
- [__link8]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=serving::serve_http_fn
- [__link9]: https://docs.rs/rest_over_grpc/0.2.0/rest_over_grpc/?search=transcoding::Transcode::transcode
+ [__link7]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=serving::serve_http
+ [__link8]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=serving::serve_http_fn
+ [__link9]: https://docs.rs/rest_over_grpc/0.2.1/rest_over_grpc/?search=transcoding::Transcode::transcode
diff --git a/crates/routerama/CHANGELOG.md b/crates/routerama/CHANGELOG.md
index 4dc68c6ff..9b1727dee 100644
--- a/crates/routerama/CHANGELOG.md
+++ b/crates/routerama/CHANGELOG.md
@@ -1,2 +1,18 @@
# Changelog
+## [0.1.1] - 2026-08-13
+
+- 🔧 Maintenance
+
+ - Now requires `0.2.1` of `http_path_template`
+ - Now requires `0.1.1` of `routerama_build`
+ - Now requires `0.1.1` of `routerama_macros`
+
+- ✨ Features
+
+ - add REST transcoding for gRPC services ([#600](https://github.com/microsoft/oxidizer/600))
+
+- 🐛 Bug Fixes
+
+ - migrate to alloc_tracker 0.7 ([#568](https://github.com/microsoft/oxidizer/568))
+
diff --git a/crates/routerama/Cargo.toml b/crates/routerama/Cargo.toml
index f2adf762c..5beb8da5d 100644
--- a/crates/routerama/Cargo.toml
+++ b/crates/routerama/Cargo.toml
@@ -3,7 +3,7 @@
[package]
name = "routerama"
-version = "0.1.0"
+version = "0.1.1"
description = "Blazingly fast HTTP route resolution and query string processing"
readme = "README.md"
keywords = ["http", "router", "routing", "path", "url"]
diff --git a/crates/routerama/README.md b/crates/routerama/README.md
index 135d63802..709f12d78 100644
--- a/crates/routerama/README.md
+++ b/crates/routerama/README.md
@@ -177,10 +177,10 @@ requires `std`.
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbr5-IsDAswPcbjrjUKkRECAkbANwTnhwOkuUbLetNhGHuvgVhZIGCaXJvdXRlcmFtYWUwLjEuMA
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbr5-IsDAswPcbjrjUKkRECAkbANwTnhwOkuUbLetNhGHuvgVhZIGCaXJvdXRlcmFtYWUwLjEuMQ
[__link0]: macro@resolver
- [__link1]: https://docs.rs/routerama/0.1.0/routerama/?search=Resolver
- [__link2]: https://docs.rs/routerama/0.1.0/routerama/?search=Resolver::resolve
+ [__link1]: https://docs.rs/routerama/0.1.1/routerama/?search=Resolver
+ [__link2]: https://docs.rs/routerama/0.1.1/routerama/?search=Resolver::resolve
[__link3]: https://docs.rs/routerama/latest/routerama/query/derive.FromQuery.html
[__link4]: https://docs.rs/routerama/latest/routerama/query/derive.ToQuery.html
[__link5]: https://docs.rs/routerama/latest/routerama/query/derive.FromQuery.html
diff --git a/crates/routerama_build/CHANGELOG.md b/crates/routerama_build/CHANGELOG.md
index 4dc68c6ff..0470a3247 100644
--- a/crates/routerama_build/CHANGELOG.md
+++ b/crates/routerama_build/CHANGELOG.md
@@ -1,2 +1,16 @@
# Changelog
+## [0.1.1] - 2026-08-13
+
+- 🔧 Maintenance
+
+ - Now requires `0.2.1` of `http_path_template`
+
+- ✨ Features
+
+ - add REST transcoding for gRPC services ([#600](https://github.com/microsoft/oxidizer/600))
+
+- ✔️ Tasks
+
+ - bump syn to 3.0.2 and align proc-macro dependencies ([#621](https://github.com/microsoft/oxidizer/621))
+
diff --git a/crates/routerama_build/Cargo.toml b/crates/routerama_build/Cargo.toml
index 05cde6329..a78512d04 100644
--- a/crates/routerama_build/Cargo.toml
+++ b/crates/routerama_build/Cargo.toml
@@ -3,7 +3,7 @@
[package]
name = "routerama_build"
-version = "0.1.0"
+version = "0.1.1"
description = "Build-time code generator for routerama."
readme = "README.md"
keywords = ["http", "router", "routing", "codegen", "build"]
diff --git a/crates/routerama_build/README.md b/crates/routerama_build/README.md
index 52bed572a..c810a9561 100644
--- a/crates/routerama_build/README.md
+++ b/crates/routerama_build/README.md
@@ -49,8 +49,8 @@ assert!(generated.contains("GetBook"));
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbhew8pv6r7HAblYEJpTRkXpAbADOjUkxD6robydXdnodrq0xhZIGCb3JvdXRlcmFtYV9idWlsZGUwLjEuMA
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbhew8pv6r7HAblYEJpTRkXpAbADOjUkxD6robydXdnodrq0xhZIGCb3JvdXRlcmFtYV9idWlsZGUwLjEuMQ
[__link0]: https://docs.rs/routerama
- [__link1]: https://docs.rs/routerama_build/0.1.0/routerama_build/?search=Route
+ [__link1]: https://docs.rs/routerama_build/0.1.1/routerama_build/?search=Route
[__link2]: https://docs.rs/routerama_build/latest/routerama_build/?search=Generator
[__link3]: https://docs.rs/proc-macro2/latest/proc_macro2/struct.TokenStream.html
diff --git a/crates/routerama_macros/CHANGELOG.md b/crates/routerama_macros/CHANGELOG.md
index 825c32f0d..275a05f45 100644
--- a/crates/routerama_macros/CHANGELOG.md
+++ b/crates/routerama_macros/CHANGELOG.md
@@ -1 +1,10 @@
# Changelog
+## [0.1.1] - 2026-08-13
+
+- 🔧 Maintenance
+
+ - Now requires `0.1.1` of `routerama_build`
+
+- ✨ Features
+
+ - add REST transcoding for gRPC services ([#600](https://github.com/microsoft/oxidizer/600))
diff --git a/crates/routerama_macros/Cargo.toml b/crates/routerama_macros/Cargo.toml
index 6bfe075c4..002a87f23 100644
--- a/crates/routerama_macros/Cargo.toml
+++ b/crates/routerama_macros/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "routerama_macros"
description = "Procedural macros for the routerama crate."
-version = "0.1.0"
+version = "0.1.1"
readme = "README.md"
keywords = ["http", "router", "routing", "macro", "codegen"]
categories = ["web-programming", "development-tools::procedural-macro-helpers"]
diff --git a/crates/seatbelt/CHANGELOG.md b/crates/seatbelt/CHANGELOG.md
index 579a6104b..0308c6114 100644
--- a/crates/seatbelt/CHANGELOG.md
+++ b/crates/seatbelt/CHANGELOG.md
@@ -1,5 +1,16 @@
# Changelog
+## [0.8.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.10.0` of `thread_aware`
+ - Now requires `0.6.0` of `tick`
+
+- 🐛 Bug Fixes
+
+ - declare dependency features where the API is used ([#659](https://github.com/microsoft/oxidizer/659))
+
## [0.7.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/seatbelt/Cargo.toml b/crates/seatbelt/Cargo.toml
index 718f64474..053805eed 100644
--- a/crates/seatbelt/Cargo.toml
+++ b/crates/seatbelt/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "seatbelt"
description = "Resilience and recovery mechanisms for fallible operations."
-version = "0.7.0"
+version = "0.8.0"
readme = "README.md"
keywords = ["oxidizer", "resilience", "layered", "recovery", "retry"]
categories = ["data-structures"]
diff --git a/crates/seatbelt/README.md b/crates/seatbelt/README.md
index c008c2aaa..cb9c71a76 100644
--- a/crates/seatbelt/README.md
+++ b/crates/seatbelt/README.md
@@ -199,20 +199,20 @@ This crate provides several optional features that can be enabled in your `Cargo
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbYvFWrvv8310bVH74l03n0WQbkisnDrQ6OyIbDoEzq0lVXmRhZIWCZ2xheWVyZWRlMC4zLjaCa3JlY292ZXJhYmxlZTAuMi4wgmhzZWF0YmVsdGUwLjcuMIJkdGlja2UwLjUuMIJtdG93ZXJfc2VydmljZWUwLjMuMw
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbYvFWrvv8310bVH74l03n0WQbkisnDrQ6OyIbDoEzq0lVXmRhZIWCZ2xheWVyZWRlMC4zLjaCa3JlY292ZXJhYmxlZTAuMi4wgmhzZWF0YmVsdGUwLjguMIJkdGlja2UwLjYuMIJtdG93ZXJfc2VydmljZWUwLjMuMw
[__link0]: https://crates.io/crates/layered/0.3.6
[__link1]: https://docs.rs/layered/0.3.6/layered/?search=Stack
- [__link10]: https://docs.rs/seatbelt/0.7.0/seatbelt/hedging/index.html
- [__link11]: https://docs.rs/seatbelt/0.7.0/seatbelt/breaker/index.html
- [__link12]: https://docs.rs/seatbelt/0.7.0/seatbelt/fallback/index.html
- [__link13]: https://docs.rs/seatbelt/0.7.0/seatbelt/chaos/index.html
- [__link14]: https://docs.rs/seatbelt/0.7.0/seatbelt/?search=chaos::injection
- [__link15]: https://docs.rs/seatbelt/0.7.0/seatbelt/?search=chaos::latency
+ [__link10]: https://docs.rs/seatbelt/0.8.0/seatbelt/hedging/index.html
+ [__link11]: https://docs.rs/seatbelt/0.8.0/seatbelt/breaker/index.html
+ [__link12]: https://docs.rs/seatbelt/0.8.0/seatbelt/fallback/index.html
+ [__link13]: https://docs.rs/seatbelt/0.8.0/seatbelt/chaos/index.html
+ [__link14]: https://docs.rs/seatbelt/0.8.0/seatbelt/?search=chaos::injection
+ [__link15]: https://docs.rs/seatbelt/0.8.0/seatbelt/?search=chaos::latency
[__link16]: https://github.com/microsoft/oxidizer/blob/main/crates/seatbelt/examples/timeout.rs
[__link17]: https://github.com/microsoft/oxidizer/blob/main/crates/seatbelt/examples/timeout_advanced.rs
[__link18]: https://github.com/microsoft/oxidizer/blob/main/crates/seatbelt/examples/retry.rs
[__link19]: https://github.com/microsoft/oxidizer/blob/main/crates/seatbelt/examples/retry_advanced.rs
- [__link2]: https://docs.rs/tick/0.5.0/tick/?search=Clock
+ [__link2]: https://docs.rs/tick/0.6.0/tick/?search=Clock
[__link20]: https://github.com/microsoft/oxidizer/blob/main/crates/seatbelt/examples/retry_outage.rs
[__link21]: https://github.com/microsoft/oxidizer/blob/main/crates/seatbelt/examples/breaker.rs
[__link22]: https://github.com/microsoft/oxidizer/blob/main/crates/seatbelt/examples/hedging.rs
@@ -223,19 +223,19 @@ This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbTOk4e6Z0lGUbu-9zWu8YZcwbyVvoEicMTCUbJQkpemmNhqlhZIOCb2h0dHBfZXh0ZW5zaW9uc2UwLjkuMIJoc2VhdGJlbHRlMC43LjCCbXNlYXRiZWx0X2h0dHBlMC43LjA
- [__link0]: https://crates.io/crates/seatbelt/0.7.0
- [__link1]: https://crates.io/crates/seatbelt/0.7.0
- [__link2]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=HttpRequest
- [__link3]: https://docs.rs/http_extensions/0.9.0/http_extensions/?search=Result
- [__link4]: https://docs.rs/seatbelt_http/0.7.0/seatbelt_http/?search=HttpRecovery
- [__link5]: https://docs.rs/seatbelt_http/0.7.0/seatbelt_http/?search=HttpClone
- [__link6]: https://docs.rs/seatbelt_http/0.7.0/seatbelt_http/type.HttpResilienceContext.html
- [__link7]: https://docs.rs/seatbelt/0.7.0/seatbelt/?search=ResilienceContext
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbTOk4e6Z0lGUbu-9zWu8YZcwbyVvoEicMTCUbJQkpemmNhqlhZIOCb2h0dHBfZXh0ZW5zaW9uc2YwLjEwLjCCaHNlYXRiZWx0ZTAuOC4wgm1zZWF0YmVsdF9odHRwZTAuOC4w
+ [__link0]: https://crates.io/crates/seatbelt/0.8.0
+ [__link1]: https://crates.io/crates/seatbelt/0.8.0
+ [__link2]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=HttpRequest
+ [__link3]: https://docs.rs/http_extensions/0.10.0/http_extensions/?search=Result
+ [__link4]: https://docs.rs/seatbelt_http/0.8.0/seatbelt_http/?search=HttpRecovery
+ [__link5]: https://docs.rs/seatbelt_http/0.8.0/seatbelt_http/?search=HttpClone
+ [__link6]: https://docs.rs/seatbelt_http/0.8.0/seatbelt_http/type.HttpResilienceContext.html
+ [__link7]: https://docs.rs/seatbelt/0.8.0/seatbelt/?search=ResilienceContext
diff --git a/crates/templated_uri/CHANGELOG.md b/crates/templated_uri/CHANGELOG.md
index 68996bfb8..e1f09e7c8 100644
--- a/crates/templated_uri/CHANGELOG.md
+++ b/crates/templated_uri/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## [0.5.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.13.0` of `data_privacy`
+ - Now requires `0.5.0` of `ohno`
+ - Now requires `0.5.0` of `templated_uri_macros`
+
## [0.4.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/templated_uri/Cargo.toml b/crates/templated_uri/Cargo.toml
index ef1540e6a..4929b296d 100644
--- a/crates/templated_uri/Cargo.toml
+++ b/crates/templated_uri/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "templated_uri"
description = "Standards-compliant URI handling with templating, validation, and data classification"
-version = "0.4.0"
+version = "0.5.0"
readme = "README.md"
keywords = ["oxidizer", "url", "parsing", "templates", "uri"]
categories = ["encoding", "parser-implementations", "template-engine", "web-programming"]
diff --git a/crates/templated_uri/README.md b/crates/templated_uri/README.md
index 7864ab68b..7c8790743 100644
--- a/crates/templated_uri/README.md
+++ b/crates/templated_uri/README.md
@@ -198,22 +198,22 @@ and servers based on [`hyper`][__link16] like [`reqwest`][__link17].
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbreJMElgxp0kbqex4QSgBMK8bdglL8RqN6aobvSfumN6CAithZIKCZGh0dHBlMS40LjKCbXRlbXBsYXRlZF91cmllMC40LjA
- [__link0]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=Uri
- [__link1]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=BaseUri
- [__link10]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=Escape
- [__link11]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=Raw
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbreJMElgxp0kbqex4QSgBMK8bdglL8RqN6aobvSfumN6CAithZIKCZGh0dHBlMS40LjKCbXRlbXBsYXRlZF91cmllMC41LjA
+ [__link0]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=Uri
+ [__link1]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=BaseUri
+ [__link10]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=Escape
+ [__link11]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=Raw
[__link12]: https://datatracker.ietf.org/doc/html/rfc6570#section-2.3
[__link13]: https://docs.rs/http/latest/http/
- [__link14]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=Uri
+ [__link14]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=Uri
[__link15]: https://docs.rs/http/1.4.2/http/?search=Uri
[__link16]: https://docs.rs/hyper/latest/hyper/
[__link17]: https://docs.rs/reqwest/latest/reqwest/
- [__link2]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=BaseUri
- [__link3]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=BasePath
- [__link4]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=PathAndQueryTemplate
- [__link5]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=Escaped
- [__link6]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=EscapedString
- [__link7]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=Escaped
- [__link8]: https://docs.rs/templated_uri/0.4.0/templated_uri/?search=EscapedString
+ [__link2]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=BaseUri
+ [__link3]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=BasePath
+ [__link4]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=PathAndQueryTemplate
+ [__link5]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=Escaped
+ [__link6]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=EscapedString
+ [__link7]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=Escaped
+ [__link8]: https://docs.rs/templated_uri/0.5.0/templated_uri/?search=EscapedString
[__link9]: https://datatracker.ietf.org/doc/html/rfc6570
diff --git a/crates/templated_uri_macros/CHANGELOG.md b/crates/templated_uri_macros/CHANGELOG.md
index 040102f22..894a0a901 100644
--- a/crates/templated_uri_macros/CHANGELOG.md
+++ b/crates/templated_uri_macros/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## [0.5.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.5.0` of `templated_uri_macros_impl`
+
## [0.4.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/templated_uri_macros/Cargo.toml b/crates/templated_uri_macros/Cargo.toml
index 74b9a8b1f..1882aed66 100644
--- a/crates/templated_uri_macros/Cargo.toml
+++ b/crates/templated_uri_macros/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "templated_uri_macros"
description = "Macros for the templated_uri crate."
-version = "0.4.0"
+version = "0.5.0"
readme = "README.md"
keywords = ["oxidizer", "url", "parsing", "templates", "uri"]
categories = ["encoding", "parser-implementations", "template-engine", "web-programming"]
diff --git a/crates/templated_uri_macros_impl/CHANGELOG.md b/crates/templated_uri_macros_impl/CHANGELOG.md
index e30e4d02b..64414a268 100644
--- a/crates/templated_uri_macros_impl/CHANGELOG.md
+++ b/crates/templated_uri_macros_impl/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## [0.5.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.5.0` of `ohno`
+
## [0.4.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/templated_uri_macros_impl/Cargo.toml b/crates/templated_uri_macros_impl/Cargo.toml
index 40df96646..18e6f021b 100644
--- a/crates/templated_uri_macros_impl/Cargo.toml
+++ b/crates/templated_uri_macros_impl/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "templated_uri_macros_impl"
description = "Macros for the templated_uri crate."
-version = "0.4.0"
+version = "0.5.0"
readme = "README.md"
keywords = ["oxidizer", "url", "parsing", "templates", "uri"]
categories = ["encoding", "parser-implementations", "template-engine", "web-programming"]
diff --git a/crates/thread_aware/CHANGELOG.md b/crates/thread_aware/CHANGELOG.md
index e6f1afedd..148704e9d 100644
--- a/crates/thread_aware/CHANGELOG.md
+++ b/crates/thread_aware/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## [0.10.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.8.0` of `thread_aware_macros`
+
## [0.9.0] - 2026-08-09
### ⚠ Breaking Changes
diff --git a/crates/thread_aware/Cargo.toml b/crates/thread_aware/Cargo.toml
index 59176a48b..4a83bf461 100644
--- a/crates/thread_aware/Cargo.toml
+++ b/crates/thread_aware/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "thread_aware"
description = "Facilities to support thread-isolated state."
-version = "0.9.0"
+version = "0.10.0"
readme = "README.md"
keywords = ["oxidizer", "thread", "aware"]
categories = ["data-structures", "no-std"]
diff --git a/crates/thread_aware/README.md b/crates/thread_aware/README.md
index 9af983159..9c5bb3c03 100644
--- a/crates/thread_aware/README.md
+++ b/crates/thread_aware/README.md
@@ -195,36 +195,36 @@ impl Service {
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbUpEHEN0wyqMbT69q7SZ3jhAb-itdqiIRp1EbkJGs8OCz_nBhZIKCbHRocmVhZF9hd2FyZWUwLjkuMIJzdGhyZWFkX2F3YXJlX21hY3Jvc2UwLjcuNQ
- [__link0]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
- [__link1]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbUpEHEN0wyqMbT69q7SZ3jhAb-itdqiIRp1EbkJGs8OCz_nBhZIKCbHRocmVhZF9hd2FyZWYwLjEwLjCCc3RocmVhZF9hd2FyZV9tYWNyb3NlMC44LjA
+ [__link0]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
+ [__link1]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
[__link10]: https://doc.rust-lang.org/stable/std/marker/trait.Send.html
- [__link11]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
+ [__link11]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
[__link12]: https://doc.rust-lang.org/stable/std/marker/trait.Send.html
- [__link13]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
- [__link14]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
- [__link15]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=Unaware
- [__link16]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=Unaware
- [__link17]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
- [__link18]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
- [__link19]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
+ [__link13]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
+ [__link14]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
+ [__link15]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=Unaware
+ [__link16]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=Unaware
+ [__link17]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
+ [__link18]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
+ [__link19]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
[__link2]: https://doc.rust-lang.org/stable/std/clone/trait.Clone.html
- [__link20]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
+ [__link20]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
[__link21]: https://doc.rust-lang.org/stable/std/?search=thread::spawn
- [__link22]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
+ [__link22]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
[__link23]: https://doc.rust-lang.org/stable/alloc/?search=sync::Arc
- [__link24]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
- [__link25]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
- [__link26]: https://docs.rs/thread_aware_macros/0.7.5/thread_aware_macros/?search=ThreadAware
- [__link27]: https://docs.rs/thread_aware_macros/0.7.5/thread_aware_macros/?search=ThreadAware
- [__link28]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
- [__link29]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
- [__link3]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
- [__link30]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=Arc
- [__link31]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=Arc
- [__link4]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
- [__link5]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
- [__link6]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=Arc
+ [__link24]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
+ [__link25]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
+ [__link26]: https://docs.rs/thread_aware_macros/0.8.0/thread_aware_macros/?search=ThreadAware
+ [__link27]: https://docs.rs/thread_aware_macros/0.8.0/thread_aware_macros/?search=ThreadAware
+ [__link28]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
+ [__link29]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
+ [__link3]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
+ [__link30]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=Arc
+ [__link31]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=Arc
+ [__link4]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
+ [__link5]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
+ [__link6]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=Arc
[__link7]: https://doc.rust-lang.org/stable/alloc/?search=sync::Arc
- [__link8]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=storage::Strategy
- [__link9]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=core::ThreadAware
+ [__link8]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=storage::Strategy
+ [__link9]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=core::ThreadAware
diff --git a/crates/thread_aware_macros/CHANGELOG.md b/crates/thread_aware_macros/CHANGELOG.md
index bef85f51c..d697199c6 100644
--- a/crates/thread_aware_macros/CHANGELOG.md
+++ b/crates/thread_aware_macros/CHANGELOG.md
@@ -1,5 +1,27 @@
# Changelog
+## [0.8.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.8.0` of `thread_aware_macros_impl`
+
+- ✨ Features
+
+ - add REST transcoding for gRPC services ([#600](https://github.com/microsoft/oxidizer/600))
+
+- 🐛 Bug Fixes
+
+ - exclude non-source artifacts from published crates via include allowlist ([#526](https://github.com/microsoft/oxidizer/526))
+
+- ✔️ Tasks
+
+ - re-release all packages with LFS-free tarballs ([#531](https://github.com/microsoft/oxidizer/531))
+
+- 🏗️ Build System
+
+ - adopt cargo-anvil check catalog (github backend) ([#534](https://github.com/microsoft/oxidizer/534))
+
## [0.7.5] - 2026-06-26
- 🔧 Maintenance
diff --git a/crates/thread_aware_macros/Cargo.toml b/crates/thread_aware_macros/Cargo.toml
index 357a7f49d..cbb803db8 100644
--- a/crates/thread_aware_macros/Cargo.toml
+++ b/crates/thread_aware_macros/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "thread_aware_macros"
description = "Macros for the thread_aware crate."
-version = "0.7.5"
+version = "0.8.0"
readme = "README.md"
keywords = ["oxidizer", "thread", "aware", "macro", "derive"]
categories = ["data-structures"]
diff --git a/crates/thread_aware_macros_impl/CHANGELOG.md b/crates/thread_aware_macros_impl/CHANGELOG.md
index a872730d9..65180d69f 100644
--- a/crates/thread_aware_macros_impl/CHANGELOG.md
+++ b/crates/thread_aware_macros_impl/CHANGELOG.md
@@ -1,5 +1,24 @@
# Changelog
+## [0.8.0] - 2026-08-13
+
+- ✨ Features
+
+ - add REST transcoding for gRPC services ([#600](https://github.com/microsoft/oxidizer/600))
+
+- 🐛 Bug Fixes
+
+ - exclude non-source artifacts from published crates via include allowlist ([#526](https://github.com/microsoft/oxidizer/526))
+
+- ✔️ Tasks
+
+ - bump syn to 3.0.2 and align proc-macro dependencies ([#621](https://github.com/microsoft/oxidizer/621))
+ - re-release all packages with LFS-free tarballs ([#531](https://github.com/microsoft/oxidizer/531))
+
+- 🏗️ Build System
+
+ - adopt cargo-anvil check catalog (github backend) ([#534](https://github.com/microsoft/oxidizer/534))
+
## [0.7.4] - 2026-06-26
- ✨ Features
diff --git a/crates/thread_aware_macros_impl/Cargo.toml b/crates/thread_aware_macros_impl/Cargo.toml
index 2a1a75333..24b951833 100644
--- a/crates/thread_aware_macros_impl/Cargo.toml
+++ b/crates/thread_aware_macros_impl/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "thread_aware_macros_impl"
description = "Macros for the thread_aware crate."
-version = "0.7.4"
+version = "0.8.0"
readme = "README.md"
keywords = ["oxidizer", "thread", "aware", "macro", "derive"]
categories = ["data-structures"]
diff --git a/crates/tick/CHANGELOG.md b/crates/tick/CHANGELOG.md
index c4dbe811a..cc1e334e7 100644
--- a/crates/tick/CHANGELOG.md
+++ b/crates/tick/CHANGELOG.md
@@ -1,5 +1,23 @@
# Changelog
+## [0.6.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.10.0` of `thread_aware`
+
+- ✨ Features
+
+ - add configurable fast instant retrieval ([#648](https://github.com/microsoft/oxidizer/648))
+
+- 🐛 Bug Fixes
+
+ - declare dependency features where the API is used ([#659](https://github.com/microsoft/oxidizer/659))
+
+- ⚡ Performance
+
+ - avoid allocations when deserializing timestamps ([#654](https://github.com/microsoft/oxidizer/654))
+
## [0.5.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/tick/Cargo.toml b/crates/tick/Cargo.toml
index 402c283d5..d0e5b0be2 100644
--- a/crates/tick/Cargo.toml
+++ b/crates/tick/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "tick"
description = "Provides primitives to interact with and manipulate machine time."
-version = "0.5.0"
+version = "0.6.0"
readme = "README.md"
keywords = ["time", "clock", "tick", "stopwatch"]
categories = ["data-structures"]
diff --git a/crates/tick/README.md b/crates/tick/README.md
index 455488caf..770f59edd 100644
--- a/crates/tick/README.md
+++ b/crates/tick/README.md
@@ -291,53 +291,53 @@ contain additional examples of how to use the time primitives.
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbyb3-aFGC5KAbJcla10Ve5zcbhtxTPShzY-8bjBP3DyvGe3BhZIKCbHRocmVhZF9hd2FyZWUwLjkuMIJkdGlja2UwLjUuMA
- [__link0]: https://docs.rs/tick/0.5.0/tick/?search=ClockControl
- [__link1]: https://docs.rs/tick/0.5.0/tick/?search=Clock
- [__link10]: https://docs.rs/tick/0.5.0/tick/?search=Error
- [__link11]: https://docs.rs/tick/0.5.0/tick/fmt/index.html
- [__link12]: https://docs.rs/tick/0.5.0/tick/runtime/index.html
- [__link13]: https://docs.rs/tick/0.5.0/tick/?search=FutureExt
- [__link14]: https://docs.rs/tick/0.5.0/tick/?search=SystemTimeExt
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQbyb3-aFGC5KAbJcla10Ve5zcbhtxTPShzY-8bjBP3DyvGe3BhZIKCbHRocmVhZF9hd2FyZWYwLjEwLjCCZHRpY2tlMC42LjA
+ [__link0]: https://docs.rs/tick/0.6.0/tick/?search=ClockControl
+ [__link1]: https://docs.rs/tick/0.6.0/tick/?search=Clock
+ [__link10]: https://docs.rs/tick/0.6.0/tick/?search=Error
+ [__link11]: https://docs.rs/tick/0.6.0/tick/fmt/index.html
+ [__link12]: https://docs.rs/tick/0.6.0/tick/runtime/index.html
+ [__link13]: https://docs.rs/tick/0.6.0/tick/?search=FutureExt
+ [__link14]: https://docs.rs/tick/0.6.0/tick/?search=SystemTimeExt
[__link15]: https://doc.rust-lang.org/stable/std/?search=time::SystemTime
- [__link16]: https://docs.rs/tick/0.5.0/tick/?search=SimpleClock
- [__link17]: https://docs.rs/tick/0.5.0/tick/?search=Clock
- [__link18]: https://docs.rs/tick/0.5.0/tick/?search=SimpleClock::new_system
- [__link19]: https://docs.rs/tick/0.5.0/tick/?search=SimpleClock
- [__link2]: https://docs.rs/tick/0.5.0/tick/?search=Clock
- [__link20]: https://docs.rs/tick/0.5.0/tick/?search=Clock
+ [__link16]: https://docs.rs/tick/0.6.0/tick/?search=SimpleClock
+ [__link17]: https://docs.rs/tick/0.6.0/tick/?search=Clock
+ [__link18]: https://docs.rs/tick/0.6.0/tick/?search=SimpleClock::new_system
+ [__link19]: https://docs.rs/tick/0.6.0/tick/?search=SimpleClock
+ [__link2]: https://docs.rs/tick/0.6.0/tick/?search=Clock
+ [__link20]: https://docs.rs/tick/0.6.0/tick/?search=Clock
[__link21]: https://doc.rust-lang.org/stable/std/convert/trait.AsRef.html
- [__link22]: https://docs.rs/tick/0.5.0/tick/?search=Clock::simple_clock
- [__link23]: https://docs.rs/tick/0.5.0/tick/?search=ClockControl::to_simple_clock
- [__link24]: https://docs.rs/tick/0.5.0/tick/?search=ClockControl
- [__link25]: https://docs.rs/tick/0.5.0/tick/?search=Clock
- [__link26]: https://docs.rs/tick/0.5.0/tick/?search=Stopwatch
+ [__link22]: https://docs.rs/tick/0.6.0/tick/?search=Clock::simple_clock
+ [__link23]: https://docs.rs/tick/0.6.0/tick/?search=ClockControl::to_simple_clock
+ [__link24]: https://docs.rs/tick/0.6.0/tick/?search=ClockControl
+ [__link25]: https://docs.rs/tick/0.6.0/tick/?search=Clock
+ [__link26]: https://docs.rs/tick/0.6.0/tick/?search=Stopwatch
[__link27]: https://doc.rust-lang.org/stable/std/convert/trait.AsRef.html
[__link28]: https://crates.io/crates/jiff
[__link29]: https://crates.io/crates/chrono
- [__link3]: https://docs.rs/tick/0.5.0/tick/?search=SimpleClock
+ [__link3]: https://docs.rs/tick/0.6.0/tick/?search=SimpleClock
[__link30]: https://crates.io/crates/time
- [__link31]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=ThreadAware
- [__link32]: https://docs.rs/tick/0.5.0/tick/?search=runtime::InactiveClock
- [__link33]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=ThreadAware::relocate
- [__link34]: https://docs.rs/tick/0.5.0/tick/?search=Clock
- [__link35]: https://docs.rs/tick/0.5.0/tick/?search=runtime::ClockDriver
- [__link36]: https://docs.rs/tick/0.5.0/tick/?search=ClockControl
- [__link37]: https://docs.rs/tick/0.5.0/tick/runtime/index.html
- [__link38]: https://docs.rs/tick/0.5.0/tick/?search=Clock
- [__link39]: https://docs.rs/tick/0.5.0/tick/?search=Clock::instant
+ [__link31]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=ThreadAware
+ [__link32]: https://docs.rs/tick/0.6.0/tick/?search=runtime::InactiveClock
+ [__link33]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=ThreadAware::relocate
+ [__link34]: https://docs.rs/tick/0.6.0/tick/?search=Clock
+ [__link35]: https://docs.rs/tick/0.6.0/tick/?search=runtime::ClockDriver
+ [__link36]: https://docs.rs/tick/0.6.0/tick/?search=ClockControl
+ [__link37]: https://docs.rs/tick/0.6.0/tick/runtime/index.html
+ [__link38]: https://docs.rs/tick/0.6.0/tick/?search=Clock
+ [__link39]: https://docs.rs/tick/0.6.0/tick/?search=Clock::instant
[__link4]: https://doc.rust-lang.org/stable/std/convert/trait.AsRef.html
- [__link40]: https://docs.rs/tick/0.5.0/tick/?search=Stopwatch
+ [__link40]: https://docs.rs/tick/0.6.0/tick/?search=Stopwatch
[__link41]: https://tokio.rs/
- [__link42]: https://docs.rs/tick/0.5.0/tick/?search=Clock::new_tokio
- [__link43]: https://docs.rs/tick/0.5.0/tick/?search=ClockControl
+ [__link42]: https://docs.rs/tick/0.6.0/tick/?search=Clock::new_tokio
+ [__link43]: https://docs.rs/tick/0.6.0/tick/?search=ClockControl
[__link44]: https://serde.rs/
- [__link45]: https://docs.rs/tick/0.5.0/tick/fmt/index.html
+ [__link45]: https://docs.rs/tick/0.6.0/tick/fmt/index.html
[__link46]: https://doc.rust-lang.org/stable/std/?search=time::Instant::now
- [__link47]: https://docs.rs/tick/0.5.0/tick/?search=Clock
+ [__link47]: https://docs.rs/tick/0.6.0/tick/?search=Clock
[__link48]: https://github.com/microsoft/oxidizer/tree/main/crates/tick/examples
- [__link5]: https://docs.rs/tick/0.5.0/tick/?search=Clock
- [__link6]: https://docs.rs/tick/0.5.0/tick/?search=ClockControl
- [__link7]: https://docs.rs/tick/0.5.0/tick/?search=Stopwatch
- [__link8]: https://docs.rs/tick/0.5.0/tick/?search=Delay
- [__link9]: https://docs.rs/tick/0.5.0/tick/?search=PeriodicTimer
+ [__link5]: https://docs.rs/tick/0.6.0/tick/?search=Clock
+ [__link6]: https://docs.rs/tick/0.6.0/tick/?search=ClockControl
+ [__link7]: https://docs.rs/tick/0.6.0/tick/?search=Stopwatch
+ [__link8]: https://docs.rs/tick/0.6.0/tick/?search=Delay
+ [__link9]: https://docs.rs/tick/0.6.0/tick/?search=PeriodicTimer
diff --git a/crates/uniflight/CHANGELOG.md b/crates/uniflight/CHANGELOG.md
index 5657193de..b2d80a70d 100644
--- a/crates/uniflight/CHANGELOG.md
+++ b/crates/uniflight/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## [0.5.0] - 2026-08-13
+
+- ⚠️ Breaking
+
+ - Now requires `0.10.0` of `thread_aware`
+
## [0.4.0] - 2026-08-09
- 🔧 Maintenance
diff --git a/crates/uniflight/Cargo.toml b/crates/uniflight/Cargo.toml
index 0c7815ba3..c8da5260f 100644
--- a/crates/uniflight/Cargo.toml
+++ b/crates/uniflight/Cargo.toml
@@ -4,7 +4,7 @@
[package]
name = "uniflight"
description = "Coalesces duplicate async tasks into a single execution."
-version = "0.4.0"
+version = "0.5.0"
readme = "README.md"
keywords = ["oxidizer", "coalescing", "stempede", "singleflight", "deduplication"]
categories = ["concurrency"]
diff --git a/crates/uniflight/README.md b/crates/uniflight/README.md
index 0d964d4c0..6c4422b50 100644
--- a/crates/uniflight/README.md
+++ b/crates/uniflight/README.md
@@ -135,17 +135,17 @@ Use `--save-baseline` and `--baseline` flags to track regressions over time.
This crate was developed as part of The Oxidizer Project. Browse this crate's source code.
- [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQb4YsqHKJIO4Ebne8KVDRuJvAbVEqIpjwMtY4bZY2vS6iuAethZIKCbHRocmVhZF9hd2FyZWUwLjkuMIJpdW5pZmxpZ2h0ZTAuNC4w
- [__link0]: https://docs.rs/uniflight/0.4.0/uniflight/struct.Merger.html
- [__link1]: https://docs.rs/uniflight/0.4.0/uniflight/?search=Merger::execute
+ [__cargo_doc2readme_dependencies_info]: ggGmYW0CYXZlMC43LjJhdIQb11VxC_uAPOQbtUn4Wx2-BfAbid3Nt1Y27Pobprn8Z6FjFy9hYvRhcoQb4YsqHKJIO4Ebne8KVDRuJvAbVEqIpjwMtY4bZY2vS6iuAethZIKCbHRocmVhZF9hd2FyZWYwLjEwLjCCaXVuaWZsaWdodGUwLjUuMA
+ [__link0]: https://docs.rs/uniflight/0.5.0/uniflight/struct.Merger.html
+ [__link1]: https://docs.rs/uniflight/0.5.0/uniflight/?search=Merger::execute
[__link10]: https://doc.rust-lang.org/stable/std/?search=hash::Hash
[__link11]: https://doc.rust-lang.org/stable/std/cmp/trait.Eq.html
- [__link12]: https://docs.rs/uniflight/0.4.0/uniflight/struct.Merger.html
+ [__link12]: https://docs.rs/uniflight/0.5.0/uniflight/struct.Merger.html
[__link2]: https://doc.rust-lang.org/stable/std/?search=borrow::Borrow
- [__link3]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=storage::Strategy
- [__link4]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=PerProcess
- [__link5]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=PerNuma
- [__link6]: https://docs.rs/thread_aware/0.9.0/thread_aware/?search=PerCore
- [__link7]: https://docs.rs/uniflight/0.4.0/uniflight/struct.LeaderPanicked.html
- [__link8]: https://docs.rs/uniflight/0.4.0/uniflight/?search=LeaderPanicked::message
+ [__link3]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=storage::Strategy
+ [__link4]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=PerProcess
+ [__link5]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=PerNuma
+ [__link6]: https://docs.rs/thread_aware/0.10.0/thread_aware/?search=PerCore
+ [__link7]: https://docs.rs/uniflight/0.5.0/uniflight/struct.LeaderPanicked.html
+ [__link8]: https://docs.rs/uniflight/0.5.0/uniflight/?search=LeaderPanicked::message
[__link9]: https://doc.rust-lang.org/stable/std/clone/trait.Clone.html