1010name = " hyperi-rustlib"
1111version = " 2.7.0"
1212edition = " 2024"
13- rust-version = " 1.94 "
13+ rust-version = " 1.95 "
1414description = " Opinionated, drop-in Rust toolkit for production services at scale. The patterns from blog posts as actual code: 8-layer config cascade, structured logging with PII masking, Prometheus + OpenTelemetry, Kafka/gRPC transports, tiered disk-spillover, adaptive worker pools, graceful shutdown."
1515license = " FSL-1.1-ALv2"
1616repository = " https://github.com/hyperi-io/hyperi-rustlib"
@@ -193,34 +193,34 @@ owo-colors = { version = ">=4.2.3, <5", optional = true }
193193tracing-throttle = { version = " >=0.4.2, <0.5" , default-features = false , optional = true }
194194
195195# OpenTelemetry (modern observability - OTLP native)
196+ # Held at 0.31 because tracing-opentelemetry 0.32.1 (latest) only supports
197+ # otel 0.31. Bump once tracing-opentelemetry ships a release compatible
198+ # with otel 0.32+.
196199opentelemetry = { version = " >=0.31.0, <0.32" , optional = true }
197200opentelemetry_sdk = { version = " >=0.31.0, <0.32" , features = [" rt-tokio" ], optional = true }
198201opentelemetry-otlp = { version = " >=0.31.0, <0.32" , features = [" grpc-tonic" , " http-proto" , " metrics" , " logs" ], optional = true }
199202tracing-opentelemetry = { version = " >=0.32.1, <0.33" , optional = true }
200203
201204# Metrics (Prometheus-native)
202- metrics = { version = " >=0.24.3 , <0.25" , optional = true }
203- metrics-exporter-prometheus = { version = " >=0.16 , <0.19" , optional = true }
204- metrics-util = { version = " >=0.20.1 , <0.21" , optional = true }
205+ metrics = { version = " >=0.24.5 , <0.25" , optional = true }
206+ metrics-exporter-prometheus = { version = " >=0.18.3 , <0.19" , optional = true }
207+ metrics-util = { version = " >=0.20.3 , <0.21" , optional = true }
205208metrics-exporter-opentelemetry = { version = " >=0.2.1, <0.3" , optional = true }
206- sysinfo = { version = " >=0.38.0 , <0.39 " , optional = true }
209+ sysinfo = { version = " >=0.39 , <0.40 " , optional = true }
207210
208211# Async runtime (for metrics server, http-server, shutdown)
209212tokio = { version = " >=1.50.0, <2" , features = [" rt-multi-thread" , " net" , " sync" , " time" , " macros" , " signal" , " fs" , " io-std" , " io-util" ], optional = true }
210213tokio-util = { version = " >=0.7.14, <0.8" , optional = true }
211214
212- # HTTP client — pinned to reqwest 0.12 until opentelemetry-otlp 0.32 ships on
213- # reqwest 0.13. vaultrs 0.8 also requires reqwest 0.13 so the migration is a
214- # single coordinated change once OTLP catches up. reqwest-middleware 0.5 and
215- # reqwest-retry 0.9 force reqwest 0.13, so we hold middleware at 0.4 and bump
216- # retry only to 0.8 (which dropped the wasm-timer/instant chain — closes
217- # RUSTSEC-2024-0384 transitively while staying on reqwest 0.12).
215+ # HTTP client — bumped 2026-05-08 to reqwest 0.13 + middleware 0.5 + retry 0.9.
216+ # opentelemetry-otlp 0.32 and vaultrs 0.8 both moved to reqwest 0.13, so the
217+ # coordinated migration is now possible.
218218# `default-features = false` drops the `default-tls` feature (which pulls
219219# native-tls + openssl). HyperI standard is rustls everywhere — `rustls-tls`
220220# is enabled explicitly so the resulting client still talks HTTPS.
221- reqwest = { version = " >=0.12 , <0.13 " , default-features = false , features = [" json" , " rustls-tls " ], optional = true }
222- reqwest-middleware = { version = " >=0.4 , <0.5 " , optional = true }
223- reqwest-retry = { version = " >=0.8 , <0.9 " , optional = true }
221+ reqwest = { version = " >=0.13.3 , <0.14 " , default-features = false , features = [" json" , " rustls" ], optional = true }
222+ reqwest-middleware = { version = " >=0.5.1 , <0.6 " , optional = true }
223+ reqwest-retry = { version = " >=0.9.1 , <0.10 " , optional = true }
224224
225225# In-memory cache (TinyLFU, async, concurrent)
226226moka = { version = " >=0.12, <0.13" , features = [" future" ], optional = true }
@@ -291,10 +291,8 @@ base64 = { version = ">=0.22, <0.23", optional = true }
291291bytes = { version = " >=1.10, <2" , optional = true }
292292
293293# Vault/OpenBao (for secrets-vault)
294- # Pinned to 0.7.x — vaultrs 0.8 requires reqwest 0.13, which we don't yet
295- # support (opentelemetry-otlp 0.31 still on reqwest 0.12). When OTel ships
296- # OTLP on reqwest 0.13, bump vaultrs to 0.8 in the same migration.
297- vaultrs = { version = " >=0.7, <0.8" , optional = true }
294+ # Bumped to 0.8 in the 2026-05-08 reqwest-0.13 migration (see reqwest above).
295+ vaultrs = { version = " >=0.8, <0.9" , optional = true }
298296
299297# AWS (for secrets-aws)
300298# NOTE: aws-config and aws-sdk-* transitively pull in aws-lc-sys, which compiles
@@ -304,8 +302,13 @@ vaultrs = { version = ">=0.7, <0.8", optional = true }
304302# apparently the AWS SDK team think we all enjoy watching cmake run. ~20-30s on
305303# first build, cached by sccache after that. Revisit when they offer a ring-only
306304# build — or when we find a reason to drop the AWS secrets backend entirely.
307- aws-config = { version = " >=1.8, <2" , optional = true }
308- aws-sdk-secretsmanager = { version = " >=1.102, <2" , optional = true }
305+ # Default features disabled to skip the aws-sdk `rustls` feature, which is
306+ # confusingly named — it actually enables `aws-smithy-runtime/tls-rustls` and
307+ # pulls in rustls 0.21 + rustls-webpki 0.101 (RUSTSEC-2026-0098, -0099, -0104).
308+ # `default-https-client` uses the modern aws-smithy-http-client/rustls-aws-lc
309+ # path with rustls 0.23 + rustls-webpki 0.103 — that's what we want.
310+ aws-config = { version = " >=1.8, <2" , default-features = false , features = [" default-https-client" , " rt-tokio" , " credentials-process" , " sso" ], optional = true }
311+ aws-sdk-secretsmanager = { version = " >=1.102, <2" , default-features = false , features = [" default-https-client" , " rt-tokio" ], optional = true }
309312
310313[build-dependencies ]
311314tonic-prost-build = { version = " >=0.14.5, <0.15" , optional = true }
0 commit comments