v0.34.0_1

This commit is contained in:
Mateusz Gruszczyński committed 2026-10-17 20:34:13 +02:00
1 parent 9b3d6731cc
commit 00f29f92c8
68 files changed
+2599 -513

No files matched your search

+50
View File
@@ -3,6 +3,56 @@
> Operator-facing release history. Historical engineering notes are kept in
> [`docs/CHANGELOG_TECHNICAL_ARCHIVE.md`](docs/CHANGELOG_TECHNICAL_ARCHIVE.md).
## 0.34.0
- Optimize reverse-proxy hot path with shared immutable compiled route handles,
reusing the observer's host/location selection in forwarding without changing
ACL, rate, canonical authority or protocol enforcement.
- Avoid wildcard allocations for exact-host hits; preserve host precedence,
listener bindings, regex and internal named-location fallback behavior.
- Add allocation-free, scheduler-lock-free single-backend LB selection for
non-cookie pools. Keep health/drain/capacity admission, retry and lease
lifetime; preserve multi-backend algorithms and cookie-affinity semantics.
- Make healthy-backend selection lock-free using a synchronized atomic status
tag; share compiled health/passive policies between leases rather than
deep-cloning their strings per request. Preserve recovery state machine.
- Prepare error-fallback and retry request headers only when the operation is
configured/eligible. Keep error-response interception and safe-method replay.
- Replace exchange source, cache and transform telemetry mutexes with atomic
tags without changing log/event field names or tri-state flags. Do not clone
live-stream log entries when there are no subscribers and move terminal
exchange fields into the final log record; history and sinks stay.
- Add routing/health/LB/telemetry regression cases and source-only guardrails.
No new configuration fields, migrations, LB switches, or changed keepalive
defaults. Actual Rust compilation and benchmark are required before rollout.
- Separate global cache representation compatibility from per-vhost scopes.
Keep HOT and COLD entries across vhost keepalive/recycle/LB diagnostics saves;
invalidate only modified content-bearing scopes and cancel their in-flight fills.
- Persist a content fingerprint alongside COLD entries so interrupted scoped
purges cannot resurrect old responses after restart; retain COLD format v3.
- Remove per-frame `Exchange.backend` mutex acquisition from response body
metering by retaining the final backend lease with the body; request metering,
lease lifetime, counters and error handling retain their semantics.
- Guard cache-ticket creation against in-flight requests using an obsolete
configuration snapshot after a successful save, without evicting unchanged
cache entries.
- Add regression tests for operational saves, scoped content changes and COLD
restart compatibility. No LB UI changes or new database migration.
- Add `sendfile: off | auto` to Web Service configuration and Delivery editor.
For eligible Linux cleartext HTTP/1.1 GET >=64 KiB, transfer already-authorized
static file descriptors using native `sendfile(2)` behind a bounded connection
bridge. Keep normal streaming for TLS/H2/H3, range, transforms, compressed
bodies, active object cache and other operating systems. Disabled by default.
- Keep the kernel transport switch outside global cache identity; toggling it
must not invalidate HOT or COLD. Include native transport/fallback regression
test cases and panel save/reload tests (Rust tests still need execution).
- Include an explicitly hypothetical Amdahl model of nginx parity using the
existing 0.33.8 benchmark, with no claim of measured 0.34.0 RPS improvement.
- Actual Rust compilation, protocol/regression execution and comparative RPS
benchmarking are required before deployment; do not infer throughput gains
from the source-level changes alone.
## 0.33.8
- Skip cache-only policy maps, request snapshots and ticket work when caching