Releases: valkyoth/fluxheim
Release list
Fluxheim 1.6.30
Fluxheim 1.6.30 Release Notes
Fluxheim 1.6.30 continues the Pingora-exit work by moving plaintext upstream
HTTP/2 forwarding into the native HTTP/1 proxy path.
Highlights
- Native HTTP/1 proxy configs can now use
proxy.upstream_http_version = "http2"with plaintext upstreams that speak
h2c/prior-knowledge HTTP/2. - Native upstream HTTP/2 connections are pooled instead of torn down after a
single request. The pool keeps the h2 connection driver alive, reserves stream
capacity withproxy.upstream_h2_max_streams, invalidates stale handles after
h2 errors, and retries safe methods once after a pre-response pooled-handle
failure. - Native upstream H2 policy now receives
proxy.read_timeout_secs,
proxy.send_timeout_secs,proxy.upstream_h2_max_streams, and
proxy.upstream_h2_ping_interval_secs. - TLS ALPN-negotiated upstream HTTP/2 is now supported for
proxy.upstream_http_version = "http2"with the existing upstream TLS/SNI/CA
policy. TLShttp1-and-http2fallback now advertisesh2andhttp/1.1
and dispatches each request with the protocol selected by ALPN. - Plaintext
proxy.upstream_http_version = "http1-and-http2"can now attempt
HTTP/1.1 h2c Upgrade only when the newproxy.upstream_h2c_upgrade = true
opt-in is set. The default remainsfalse; refused upgrades fall back to a
fresh HTTP/1.1 connection. - Live native proxy tests now prove downstream HTTP/1 requests can be forwarded
to an in-process HTTP/2 origin, and that two downstream requests reuse one
upstream H2 connection. - Additional native proxy tests prove H2 upstream pools reconnect after an
origin closes a pooled H2 connection and round-robin across multiple static
H2 upstreams. - Native proxy live tests now also prove weighted static upstream selection
preserves the configured slot order while forwarding every selected upstream
request over HTTP/2. - Native proxy live tests now prove safe-method failover works across static
HTTP/2 upstreams and that unsafe methods are not replayed to another H2
upstream after a failed first attempt. - Native upstream client tests now prove explicit plaintext h2c Upgrade reaches
a real in-process HTTP/2 origin, and that origins refusing Upgrade fall back
to HTTP/1.1 without replaying the downstream request during the probe.
Security Notes
- Native upstream H2 handshakes are now bounded by the selected H2 policy
timeout so an origin that accepts TCP and then stalls the HTTP/2 preface cannot
freeze upstream setup indefinitely. - Native upstream H2 stream-slot waits are now bounded by the read timeout so
later downstream requests cannot wait indefinitely when all upstream H2 stream
capacity is occupied by slow responses. - Native upstream H2 requests and responses use the existing bounded H2 client
policy: decoded header-count/list limits, URI/body limits, response body
timeout, request upload lifetime, response header validation, and prohibited
hop-by-hop response-header rejection. - Pooled native upstream H2 requests now run the same outbound H2 validation as
one-shot H2 requests before acquiring stream capacity or opening an upstream
connection. - Invalid programmatic upstream H2 stream limits now fail closed instead of
silently reverting to the default policy. - Native upstream H2 pool creation no longer holds the pool mutex across TCP
connect and H2 handshake work, avoiding serialized cold-start failures when an
origin is unavailable. - Native upstream H2 pool creation is serialized by a dedicated setup lock, so a
cold pool or post-invalidation retry cannot open one TCP/H2 connection per
waiting stream slot. proxy.read_timeout_secsnow also bounds native H2 request readiness and
response-header waits, not only response-body reads.proxy.upstream_total_connection_timeout_secsnow caps native H2 setup plus
the first stream-readiness/response-header phase on a newly initialized H2
connection.- Stream-scoped H2 failures no longer invalidate the whole H2 pool unless the
h2 error reports a GOAWAY/connection-level condition. - Native plaintext upstream H2 keepalive pings run in a separate bounded task,
wait for PONGs with the selected H2 handler timeout, and abort the connection
driver when the peer stops acknowledging pings. - A wire-level native upstream H2 test now observes an actual client PING frame
through a real h2 server IO wrapper, proving configured keepalive is emitted
instead of only accepted by config. - A live rustls upstream test now proves the native proxy negotiates
h2with
ALPN, forwards downstream HTTP/1.1 requests to a TLS HTTP/2 origin, and sends
an HTTPS-scheme upstream H2 request. - Live rustls upstream tests now prove TLS
http1-and-http2fallback selects
HTTP/2 when the origin negotiatesh2and falls back to HTTP/1.1 when no
HTTP/2 ALPN protocol is selected. - Native cutover-plan tests now prove TLS
http1-and-http2upstream fallback
is native-ready when a TLS backend is compiled, while plaintext
http1-and-http2remains HTTP/1.1-only unlessproxy.upstream_h2c_upgrade
is explicitly enabled. - Native upstream H2 stream permits are now named and explicitly released after
response conversion, keeping the lifetime visible to reviewers and avoiding
accidental future movement of the permit guard. - Native upstream H2 outbound request validation now has one enforcement point
inside the H2 sender, avoiding duplicate prevalidation paths with drift-prone
policy inputs. - Native upstream H2 programmatic configuration now enforces the same 1-1024
stream cap as TOML validation, with a debug assertion on pool construction. - H2-only knobs on HTTP/1 upstream configs are rejected instead of silently
ignored, and H1/H2 upstream request writers now share the same predicate for
Fluxheim-owned header stripping. - Native diagnostics now distinguish supported upstream H2 modes from invalid
mixed-mode configurations. Plaintexthttp1-and-http2does not use H2 unless
the explicit h2c Upgrade opt-in is enabled. - Native H2-to-HTTP/1 response conversion now strips hop-by-hop and
proxy-owned headers such astransfer-encoding,upgrade,keep-alive,
proxy-connection,te, andtrailer, in addition tocontent-length,
connection, anddate. - Native upstream H2 retry handling now releases the stream-capacity permit
before rebuilding a failed pooled H2 connection, then reacquires capacity
immediately before sending the retry stream. - Non-TLS native builds now support plaintext
http1-and-http2only through
the explicit h2c Upgrade opt-in; without it, mixed-mode plaintext fallback
stays on HTTP/1.1. proxy.upstream_h2c_upgradeis rejected unless an upstream is configured,
the upstream is plaintext, andproxy.upstream_http_version = "http1-and-http2", keeping h2c Upgrade out of TLS and prior-knowledge H2
configurations.- Explicit h2c Upgrade fallback now treats a closed/reset probe connection as
an upgrade refusal and retries the original downstream request on a fresh
HTTP/1.1 connection, while still treating probe timeouts as ambiguous and
non-replayable. - H2 stream-capacity closure is no longer classified as a transport-level
broken pipe, so explicit h2c mixed-mode fallback cannot downgrade and replay
a request after an upstream H2 stream has already been opened. - The h2c
HTTP2-Settingsheader now uses the infallible fixed-input encoder
added bybase64-ng1.2.2, removing the previous local dead error branch
while keeping Fluxheim on the hardened base64-ng dependency. - The h2c Upgrade response-head reader now checks only the trailing terminator
bytes while reading one byte at a time, preserving post-upgrade H2 frames
without an O(n²) scan.
Compatibility Notes
- This release enables plaintext h2c/prior-knowledge, TLS ALPN H2 origins, and
TLShttp1-and-http2fallback negotiation on the native path. Plaintext
http1-and-http2uses HTTP/1.1 by default; set
proxy.upstream_h2c_upgrade = trueonly for origins known to implement
HTTP/1.1 h2c Upgrade. This is intentionally not default because cleartext
origins have no ALPN negotiation point and h2c Upgrade support varies by
server.
Checksums And Signatures
- Commit:
4d980e5c43ca8367f1fe565b6fa4143851690f82 - Local gate: GitHub CI green before tag; local release metadata checks passed
- CodeQL/code scanning: no open release-blocking alerts before tag
- Source archive checksums:
53af386c0d69b4e4a042e798941b5ff909d43e7e2a53425fb17a44637b716182 fluxheim-1.6.30.tar.gz6c086aaf82a2418ab85c78ec0da77bbabd5772e76230ae012c3338df5381c810 fluxheim-1.6.30.zip
- Binary checksums:
- x86_64:
177db59096d82545c62707a27c3b1dc67cb64de04c61782ca301a8ef4d7d1cf0 fluxheim-1.6.30-full-x86_64-linux.tar.gzbce9ebc9861a46257a676c8ef1affff07db60ee50bbddc0be61759c41a177ab4 fluxheim-1.6.30-cache-x86_64-linux.tar.gzd1d158b9f09363b3f7b40d5ef4af7b76323084bc0c3b95b2951ddcb8ec2514b1 fluxheim-1.6.30-proxy-x86_64-linux.tar.gzddfe961305d7ae080348889b77c47e6581506dc9b36025aa051c5eca5640e382 fluxheim-1.6.30-php-x86_64-linux.tar.gzf4fd78ee7ed05976caf7d6a2b5d454076a4b09900795a598edcc3aade308b6c8 fluxheim-1.6.30-load-balancer-x86_64-linux.tar.gz6f3fdd89a56891c1f163a131d634e9aaade6dc26965de54b05183545ab184a91 fluxheim-1.6.30-config-tester-x86_64-linux.tar.gz
- aarch64:
7e26f2adb2acbff62b3472743fc8fd18da747d1a00c8522ee2ba12738d0df44b fluxheim-1.6.30-full-aarch64-linux.tar.gz21778a66eec1ac9dab53b74f31c93a9eed02b61b912c6b6d02e2fd62d8b59654 fluxheim-1.6.30-cache-aarch64-linux.tar.gz08cd3188228c01993219c3c42c1fa681b43139d83e3c3d68de3ab1e7085ab6fb fluxheim-1.6.30-proxy-aarch64-linux.tar.gz- `1a54a3603baf4d...
- x86_64:
Fluxheim 1.6.29
Fluxheim 1.6.29 Release Notes
Fluxheim 1.6.29 continues the Pingora-exit work by moving inherited
compression, header-policy behavior, and safe forwarded-header ownership into
the native HTTP/1 proxy path.
Highlights
- Native HTTP/1 plain proxy responses can now use inherited global/vhost
compression policy when gzip, brotli, or zstd support is compiled. - Native HTTP/1 route proxy responses now inherit global/vhost compression
when a route does not override compression locally. - Native route proxy construction now merges root/vhost header policy with the
route overlay before building native request and response header policies. - Root and vhost header mutation policy no longer blocks native HTTP/1 proxy
cutover when it only uses supported header set/remove/append behavior. - Native HTTP/1 proxy handling now owns the safe forwarded-client-IP header
modes:X-Forwarded-For = off,X-Forwarded-For = replace,X-Real-IP,
X-Forwarded-Host,X-Forwarded-Proto, and RFCForwarded. - Native HTTP/1 route proxy handling now owns trusted-chain
X-Forwarded-For = appendfor routes and programmatic builders, preserving
inbound chains only when the direct peer matches configured trusted sources. - Native HTTP/1 route proxy handling now owns regex route matching and
path-onlyrewrite_templatecapture expansion, including exact route,
longest-prefix route, first-regex route, and fallback precedence. - Native HTTP/1 route proxy handling now owns IP/CIDR allow/deny access policy
at both vhost and route scope, using trustedX-Forwarded-Forclient
restoration when configured trusted sources identify the direct peer. - Native HTTP/1 route proxy handling now owns vhost and route concurrency
limits, including immediate rejection and bounded queued waits. - Native HTTP/1 route proxy handling now owns vhost and route local rate
limits, including token-bucket rejection and delay-mode admission. - Native HTTP/1 proxy responses now carry configured downstream write timeout,
total response timeout, and minimum send-rate policy. - Native HTTP/1 upstream establishment now honors
proxy.upstream_total_connection_timeout_secsacross DNS, TCP connect, and
optional TLS handshake setup. - Native HTTP/1 upstream socket creation now honors
proxy.upstream_tcp_recv_buffer_bytes,proxy.upstream_dscp, and the
upstream TCP keepalive triple before connecting. On targets with
TCP_USER_TIMEOUT, it also honorsproxy.upstream_tcp_user_timeout_ms. - Native HTTP/1 request-body parsing now honors
proxy.downstream_read_timeout_secsselected by the matched proxy before
forwarding to upstreams. - Native HTTP/1 requests now carry typed optional TLS client identity and Geo
context fields. Rustls and OpenSSL listener tests prove downstream TLS
request context is populated with negotiated protocol, cipher, and peer
certificate fingerprint where available. - Native route-proxy access evaluation now enforces client-certificate
fingerprint and Geo country/ASN rules when typed request context is present,
so cert/Geo policy no longer blocks the native HTTP/1 cutover inventory. - Managed local ACME HTTP-01 challenge serving now has a native route action.
Live route-proxy tests prove direct and alias vhost challenge ownership, safe
token-file loading, GET/HEAD handling, and405 Allow: GET, HEADbehavior. - Native ACME HTTP-01 challenge file loading now runs on Tokio's blocking pool
instead of blocking the async worker thread. - Native HTTP/1 proxy handling now supports safe-method traffic mirroring when
thetraffic-mirrorfeature is compiled, including recursion protection,
sampling, forwarded-header selection, mirror response caps, and per-target
in-flight limits. - Native HTTP/1 proxy handling now supports
proxy.auth_requestwhen the
auth-requestserver feature is compiled, including trusted context header
synthesis, bounded blocking subrequests, response-header allowlisting, and
deny-before-forwarding behavior. - Native HTTP/1 route proxy handling now honors route-scoped
[vhosts.routes.grpc]validation, rejecting non-POST requests, duplicate
Content-Typeheaders, and non-gRPC content types before forwarding. - The compatibility proxy's gRPC route
Content-Typegate now matches the
native gate by rejecting duplicateContent-Typeheaders and accepting
case-insensitive gRPC media types. - Root and vhost compression no longer blocks native HTTP/1 proxy cutover when
a matching compression backend feature is compiled. - Native route-proxy construction now mirrors the compatibility route order for
vhost synthetic routes: explicit ACME HTTP-01 upstream challenge routes,
configured routes, then vhost redirect fallback routes. - Vhost redirects and explicit ACME HTTP-01 upstream challenge routes no longer
block the native cutover inventory when their generated route policies are
otherwise native-safe. - Live native listener tests now prove plain-proxy gzip compression, inherited
route gzip compression, inherited request-header mutation, inherited
response-header mutation, and standard response security headers.
Security Notes
- Inherited native compression keeps the same guarded behavior as route-level
compression: bounded input/output size, negotiatedAccept-Encoding, safe
method/status checks, and privacy-sensitive header exclusions. - Native compression strips origin
ETagandContent-Length, appends
Vary: accept-encoding, and lets native response framing compute the final
compressed length. - Native route request headers are removed or overwritten before the upstream
request is sent, matching the compatibility-path policy order for the
supported mutation subset. - The low-level native upstream writer no longer hardcodes client-IP forwarding;
proxy/header policy now ownsX-Forwarded-Forso privacy-mode and ordinary
builds share one explicit policy boundary. - Native route request-header overlay builders now start from the same secure
forwarded-header baseline as config-driven policy, so omitted overlay fields
still strip spoofable inbound client-IP headers and synthesize owned
forwarding context. - Future trusted-chain append handling reads the inbound
X-Forwarded-Forchain
after any configured spoofable-header stripping, so strip-plus-append degrades
to the direct peer address instead of preserving attacker-supplied hops. - Native route tests prove ACME challenge paths are selected before a vhost
redirect fallback, preserving the HTTP-01 exception ordering used by the
compatibility path for explicit upstream challenge forwarding. - Native cutover now rejects route request-header overlays that set
enabled = false, because disabling the request header policy would also
disable forwarded-client-IP sanitation on that native route. - Native vhost fallback proxy traffic now receives the merged root/vhost header
policy, so requests that miss named routes still strip spoofable
client-IP headers and synthesize owned forwarding context. - Privacy-mode native route request headers are stripped after all configured
request-header mutations, preventing operatorsetorappendrules from
reintroducing spoofable forwarded-client-IP fields. - Programmatic native route constructors now start with the same safe default
request-header policy used by config-built routes, instead of a no-op policy. - Native trusted append uses the same effective-client-IP restoration helper as
the compatibility path, so untrusted direct peers cannot preserve spoofed
inbound forwarding chains. - Native regex rewrite templates percent-encode bounded capture values and
reject rewritten paths that would traverse or introduce unsafe forwarding
paths before any upstream connection is opened. - Native regex rewrite captures now encode slash characters and fail closed
under the native safe-forward-path policy, so regex captures cannot introduce
path hierarchy that was not present in the static rewrite template. - Native access policy denies before redirects, static-web actions, or upstream
proxying run, so rejected requests cannot be transformed into downstream
effects first. - Native vhost access policy uses the same trusted forwarded-chain restoration
helper as forwarded-header synthesis, so allow/deny decisions see the
effective client IP only when the direct peer is trusted. - Native route access policy also checks a percent-decoded policy path, matching
the compatibility path's encoded-route bypass hardening for access decisions. - Native concurrency limits are enforced before rewrite, local static,
redirect, or upstream proxy actions run; permits are held until the native
response is produced. - Native rate limits are enforced before rewrite, local static, redirect, or
upstream proxy actions run; excess requests are rejected before the native
upstream path is reached, and delay-mode sleeps run before concurrency permit
acquisition so delayed requests cannot exhaust configured concurrency budgets. - Native trusted-proxy client restoration joins duplicate inbound
X-Forwarded-Forheaders before ACL and rate-limit identity decisions. - Malformed
X-Forwarded-Fortrusted-proxy chains now fail closed on both the
native header crate path and the compatibility proxy path, falling back to
the direct peer address instead of skipping poisoned hops. - Native rate-limit table eviction sweeps are bounded so a full bucket table
cannot trigger repeated full-table scans on every new identity. - Native rate-limit tables are now sharded so stale-entry pruning only blocks
one shard of identities at a time. - Native proxy config now accepts response-side downstream policy and per-proxy
downstream request-read timeout policy on the nati...
Fluxheim 1.6.28
Fluxheim 1.6.28 Release Notes
Fluxheim 1.6.28 continues the Pingora-exit work by moving two more rich proxy
features onto the native HTTP/1 route/proxy adapters.
Highlights
- Route-level response compression now works in the native HTTP/1 route proxy
through thefluxheim-compressioncrate. - Native compression feature mapping now reaches
fluxheim-serverfor gzip,
zstd, and brotli builds. - Native route compression preserves the existing eligibility checks:
GET
only,200 OK, compressible content type, bounded input/output size,
Accept-Encodingnegotiation, no activeContent-Encoding, noRange
response, noSet-Cookie, and no requestAuthorizationorCookie. - Native route compression now ranks enabled codecs by the client's
Accept-Encodingq-values before falling back to Fluxheim's tie-break order. proxy.error_pagesnow builds on the native HTTP/1 proxy for static 502/504
fallback pages backed byfluxheim-web.- Native custom proxy error pages preserve the proxy failure status while using
the configured static error page body and headers. - Live native HTTP/1 listener tests now prove gzip route compression and custom
proxy error-page responses end to end.
Security Notes
- Native compression removes origin
ETagandContent-Lengthbefore sending
the compressed body, appendsVary: accept-encoding, and lets the native
response writer own the final compressed length. - Compression is skipped rather than forced if the encoder exceeds configured
output bounds or cannot initialize. - Custom proxy error pages only serve files resolved by the native static-web
resolver; directory listings, missing files, forbidden paths, and oversized
bodies fall back to the standard 502/504 response. - Custom proxy error-page responses now close the downstream connection after
the upstream failure, matching the built-in 502/504 failure responses. - Native error-page serving uses the same symlink-safe
fluxheim-webpath
validation and rooted file-open behavior as native static routes.
Compatibility
This release does not remove Pingora from normal builds yet. The remaining
compatibility-path blockers are inherited global/vhost compression, cache
lookup/fill/stale behavior, PHP-FPM routing, auth-request, traffic mirror,
forwarded-client-IP ownership shortcuts, dynamic discovery, health-aware
load-balancing, persistence, priority/backup/drain state, and hash-based
load-balancer selection.
Checksums And Signatures
- Commit:
ed662cf0dfd462864256e536e87dff605cd80a45 - Local gate: GitHub CI green before tag; local release metadata checks passed
- CodeQL/code scanning: no open release-blocking alerts before tag
- Source archive checksums:
17cd4345f8c91fd3991318fb56b29d25ac3e35952edd6bc7c5cb658e668e4489 fluxheim-1.6.28.tar.gze76805f02cc6ed60d1d7a174a1ecd068ed0e88962a97aa61e5766dfb707686cb fluxheim-1.6.28.zip
- Binary checksums:
- x86_64:
92d4d68d05b53dbe69a153f55f29c386cf001b03c28c6f2ad46e4c2d861caab1 fluxheim-1.6.28-full-x86_64-linux.tar.gz0a11dfd72f8a72c569143fe14cbc16e9ee25b8284cc63ecad12b20cf41069ff3 fluxheim-1.6.28-cache-x86_64-linux.tar.gzb7ac7970b83742ff5d7120715810246c0660c320b49f5527c9aa423034703dd5 fluxheim-1.6.28-proxy-x86_64-linux.tar.gzff46c748eb8ebb3a9335be905c90c498aa5cbdc9c08949e56238c5df2ad7673c fluxheim-1.6.28-php-x86_64-linux.tar.gz9d15b8dc930b9b426ca981b953f6691344b66eab17307c58919180aa5f374d7e fluxheim-1.6.28-load-balancer-x86_64-linux.tar.gzef007a3031cd48c46dcd30cefa30b77bd70b02f946f3842d3fe89eb3df2d3b77 fluxheim-1.6.28-config-tester-x86_64-linux.tar.gz
- aarch64:
7206c0c2228622eaf7239490b09e21a746b1be16d8afeec3d584c3073d8303ab fluxheim-1.6.28-full-aarch64-linux.tar.gzf6f28cc92af788e3bd330f94b7bafdb1f7129d83ac1d03ffdf5ac943c8e7d67e fluxheim-1.6.28-cache-aarch64-linux.tar.gzfea671bd8ca1fb503ed7a10a443cd73e39f37e6f4e0410e6ed20cacfd3fd6112 fluxheim-1.6.28-proxy-aarch64-linux.tar.gz392e3e81661bd9c3d38dee618d3d791035e775ebfd3cff0cf68d45f957331e6c fluxheim-1.6.28-php-aarch64-linux.tar.gz289fd7c76bdfa409424da3568f62f72a2de03cec6ff97f1bbdaabda2f597e406 fluxheim-1.6.28-load-balancer-aarch64-linux.tar.gzde1e8540eda5bb2d0d6fbf344a4611a1c171af0ecb36db0d7f4b787ccb2bb40c fluxheim-1.6.28-config-tester-aarch64-linux.tar.gz
- macos:
57f07cd9bd82f8aeb3e97413024d764d17ba6257f9c82945f794a10ffee7452d fluxheim-1.6.28-dev-aarch64-macos.tar.gz
- x86_64:
- SBOM checksums:
11a767c44a6bb8b61cd93e90f637489cbb13e17a5b8d99215f3c2b31796755dd fluxheim.spdx.jsonfa4e2d865660e4720e6991e5a5208fd4db6bca0f6f2c004fb11c1878c70328ca fluxheim.cyclonedx.json
- Reproducible build:
dc4fd155af2605ce62bb11b144b0f452b311fcdd22eea5e9102c5f589e2892b5x86_64b82ddd9c3dc50b96a765c1a01e658244817573eb31e8ff0bef18586b238214f9aarch64208e8deacf8cf5a171d742cdf6b0bd4edb7d372785d7f266b6ac35874d4ea5e8macos
- Full Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:c61be86d2d7922fd25c665c62b4b4bc599ed8e0e9fb1a221aa6be4b84019d264 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:1791fc6a63f6331e82c230823eefc5326a6932121a2438504a50fd5791bd4ab3 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:8f78dcc2f3ed9d152f812473a927e8954c7512f91226ce12338454cabd1d18ef - Debian:
ghcr.io/valkyoth/fluxheim@sha256:4d00a11f6f1c9b2023f598086412717fe1393fddfe4d402fce4ef280788c1611
- Wolfi:
- Cache Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:32f978f4280c6e93abff84bde49996966149cf692169ffbc394a3450b61e73a2 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:14e897b02127af720bfd1332ddf6d48049e2f22985e0c9f2e17540ed6d1befd9 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:b932b099760e39459cd8def25807419bc4274a96435131db698eaaee69db2c99 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:b86d7ff6de604b92095111e5ef696b4d7479db0d1f544ffc2ca528a15481fa78
- Wolfi:
- Proxy Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:7329505671132d42fe1ace3fb7db330153ff4de4fd9ad64ea4e46cb3b9492696 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:049f9c1e30e476abceab7f45d72723039cf0e1db82eb8e709e2c8b5f53faa67e - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:947b0e5f064b2b79770e2507dde7ca835bd6187b87edf71f423437b7491dc0b3 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:c7f5d2f5f82bee55bda66278848144d66777856b2818bc22055404f7516c13db
- Wolfi:
- PHP Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:a6521be8c9a6976a1fc5e12ce2a6444b9a3bd572954dbf18db8c463d593bb096 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:015132ce9c5b04dddedf3c7924d10b5a4bbd71bee4c943038708abf5f617d130 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:352a3c1d9cc95d87c6a656efa94a6c69a2be8f855bc6752cd905c2e943073811 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:a56fcfdd62e341f65c7cc2975de17b55109414d0214ca8de6b3f464de2c3a172
- Wolfi:
- Load Balancer Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:0ca00d45019fd2f9649ccc201e65deb5f6582cf8ef46dd2a003522d5a24f8b31 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:618e3e00bea3bac82b8083f1f7b96f75e0341be8343f4988e216602e684864aa - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:208a35d62e1a163c305fb66c41d567f621a779373d8be18caca1643297a56f01 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:c00fe7eaf8432e1175bb82dd1add815bfe6b4741c638ca44bccd11008ab3090e
- Wolfi:
- Tag signature:
Good "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4
Fluxheim 1.6.27
Fluxheim 1.6.27 Release Notes
Fluxheim 1.6.27 continues the Pingora-exit work by moving route-level static
web serving onto the native HTTP/1 route adapter.
Highlights
- Native HTTP/1 route static-web adapter backed by the
fluxheim-webcrate. - Native static file responses support ETags, conditional requests, byte
ranges,HEAD, cache-control metadata, and directory listings. - Route-level native request-header mutation overlays now apply before matched
proxy routes are forwarded upstream. - Multiple configured static upstreams now round-robin successful native HTTP/1
proxy requests, with safe-method failover still available when an upstream
fails. - Static
proxy.upstream_weightsnow drive native weighted round-robin without
requiring the compatibility load-balancer runtime. - Route-level response rewrite rules for
Location,Refresh, and
Set-Cookienow execute in the native route proxy through the shared
fluxheim-headersrewrite helpers. - The server crate now depends directly on
fluxheim-webfor pure web response
planning instead of using the root compatibility adapter. - Static-web, header policy, response rewrite, and weighted-upstream route
tests run through real local native HTTP/1 listeners.
Security Notes
- Native static-web path resolution rejects decoded dot segments, NUL bytes,
backslashes, denied dotfiles, and symlink escapes. - Static response body reads use rooted component-by-component
openatwith
no-symlink opens for every directory component and the final file, closing the
symlink-swap window between metadata checks and body reads. - Native route static-web handling now rejects methods other than
GETand
HEADwith405 Method Not Allowed, even when the route method list matches
all methods. - Native redirect
Locationpath validation now reuses the bounded multi-pass
forward-path safety check, rejecting single- and double-encoded dot-segment
or slash expansions from{query},{path}, or{uri}templates. - Buffered native static responses are capped at 64 MiB until the final native
streaming body path is completed. - Forwarded-client-IP shortcut ownership remains a compatibility-path blocker;
only explicit request-header unset/set/append mutations are marked native
ready in this release. - Advanced load-balancer behavior such as health state, persistence, dynamic
discovery, priority groups, backup/drain state, and hash-based selection
remains on the compatibility path; this release moves static upstream
round-robin and static weights native.
Compatibility
The remaining rich proxy integrations, including cache lookup/fill/stale
handling, PHP-FPM routing, auth-request, traffic mirror, compression, and
advanced load-balancer policy selection, remain on the compatibility path until
their native parity tests land.
Checksums And Signatures
- Commit:
6917ff1df159f9027bf4167d964fe71d83351e8a - Local gate: GitHub CI green before tag; local release metadata checks passed
- CodeQL/code scanning: no open release-blocking alerts before tag
- Source archive checksums:
ff330941135a9b5ef889950642a6001589f1b01c33a3802563cf569b0e693ef4 fluxheim-1.6.27.tar.gz8c8dcd450629bd7586ffce927fe9dfd213dc0f9c8d0c47a3ebbdfde9063f957e fluxheim-1.6.27.zip
- Binary checksums:
- x86_64:
6161f2b95aba634b3db04c16afce1e1fe1f086a5eb11976f851c818062075736 fluxheim-1.6.27-full-x86_64-linux.tar.gz1f12b8392bd3178969bd7b4defd96ff6d61275f5955b09969bdacad278bb5406 fluxheim-1.6.27-cache-x86_64-linux.tar.gzab44adf7e98aec95ae403d6213d750a1b1fa0e1dc062ee3eaf97a3a95f49c231 fluxheim-1.6.27-proxy-x86_64-linux.tar.gz6f88d520b08b0bf9f977bc1606ddae8ba4f5fa31acd701f5dc7a7ebfdc24a61b fluxheim-1.6.27-php-x86_64-linux.tar.gz9908a97cd49d03d106e506119f162325f77f540687e373a9fef2ea466acec332 fluxheim-1.6.27-load-balancer-x86_64-linux.tar.gz30037b2c48d7ad0bd2687c3144a7fcf28917e41212a40dbd6494bf3b81638618 fluxheim-1.6.27-config-tester-x86_64-linux.tar.gz
- aarch64:
ecdcbb9e823a8d64b6e9ce09842b6d0b9d1046ef3b00b22ecab2006123d3f45d fluxheim-1.6.27-full-aarch64-linux.tar.gzcbee31629389118ac213b4f81099f6b808735070cdbf6d9188b52b54444f063a fluxheim-1.6.27-cache-aarch64-linux.tar.gzbf33281e9bd99014b5b9731c9c18bb66a9cb7f33ffb22b823bee580aebef6446 fluxheim-1.6.27-proxy-aarch64-linux.tar.gz46fc94cfea4c2117a73733f5991fb9aa8e8a9aec9df737d25703488eda6d464b fluxheim-1.6.27-php-aarch64-linux.tar.gzbe9ed9ca1235d7d65895bd3c6d0b319f61437b63d4c5a11a9df7f1c93a7b21e3 fluxheim-1.6.27-load-balancer-aarch64-linux.tar.gza719345dc628086ead7ebc81642e6d8191a85bda4bab87b8fc691d17be16c65d fluxheim-1.6.27-config-tester-aarch64-linux.tar.gz
- macos:
abe7498a50c81b483f602083c3f20d4506d866d924b7320e46da68a9e3d112be fluxheim-1.6.27-dev-aarch64-macos.tar.gz
- x86_64:
- SBOM checksums:
731adbe62c5b71a1920e26cd5cf5e40298ed9782984d479ef3aa0d56a16d2558 fluxheim.spdx.json7878aebf2cb07f6e26b6122cd359fbfc4c7f6f7d5dff51658d401b203cad970c fluxheim.cyclonedx.json
- Reproducible build:
716109c2f165ebc59a45b22d1a05e8bb6067dd321c81bdca2324372a30426e34x86_64da136da5566b507d49c20823969eaaf69def76676f55b1135f805bf1002ee9a9aarch64[MANUAL_SHA256]macos
- Full Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:1d48b175362115366d5ccc6570ecfe64b5201db9e7e1ca318fb7657eb3546a80 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:d5fb378dfc98c61bd91a3774dd4fb147e7ffde45bfb6e9dbe2ba5a65c4a1bb70 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:8bc8d8f0a0422c431a5139af0849e13e326069e98b4eefb8d0657e2f1703a072 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:79ee208abbc7ee19024961a8b78592c35eaa04b4507410fe7a980eff036f4afc
- Wolfi:
- Cache Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:57d4330b37033ef2e64827605fe787149862e78b39fb9d21f83075321ce6337b - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:1556263cb1f9adbcdc27eea0e2b01f3755ef4e2c40adb977f4b30a67a77c4293 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:7b8c460236f2477a291e1611a5c5a3ad6762be9dd7962f7f767afe8463e548ee - Debian:
ghcr.io/valkyoth/fluxheim@sha256:7c3e44859c2927a089d2ec3650f94609733e79fa4f3e8f2902b9b1988c2f75a9
- Wolfi:
- Proxy Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:1136b58490f0d19c7c4e2df43e4321a6143faca6fcc40af07e0305e3fd3bcfe8 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:1be4eeafadc3b92af1180c889926d7db02f9964b6756cd95a8989009dcd966cc - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:0d9a5eac48c86c1674072ed8e54690a228e78ac1e149a2ebbef362da0c6c97ca - Debian:
ghcr.io/valkyoth/fluxheim@sha256:168ebcba486fc6535b8404ffb791b6aea7824d515e3de429c1d4adc3d0d9aa0b
- Wolfi:
- PHP Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:880f63a16a06246b5e16310ff75731bf0ae823865f196f7b3926b8d415c457b2 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:2a69dba2424677d2247d244360cd94094e74f9ecc9ab9f6949fcf597f5f4081d - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:0fbe3d2fea08c743ab30fd2633efcc265c98ad04b7a69ac44e19880ca27e114f - Debian:
ghcr.io/valkyoth/fluxheim@sha256:20348dcbec1d843ea8827d0d92a1e339825c76e3a0c2fb24628d259303413cc9
- Wolfi:
- Load Balancer Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:627b87ccdb632810586ae30886a124ca7609df3406ff5b68022c216b99643dc5 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:808556780483d234ed68230bffca60dff396f6e3651d334c8f6c725112cf5a29 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:4568f0c3502cc80f8a5f2c736febcfe3f9f28321971577b0b328f693d9b5a4a1 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:80b9e4ced513b89d5a84eccda6406a647dcc6080f44b64effc9d77af0086f340
- Wolfi:
- Tag signature:
Good "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4
Fluxheim 1.6.26
Fluxheim 1.6.26 Release Notes
Fluxheim 1.6.26 continues the Pingora-exit route/policy parity work. After
1.6.25 added the native HTTP/1 route proxy for ordinary proxy routes, this
release adds native route redirect actions so redirect-only routes can be
represented and tested without falling back to Pingora's ProxyHttp callback
surface. It also moves route-level response header overlays onto the native
route proxy for the already-supported native response paths.
Changed
- Add native HTTP/1 route redirect actions to
NativeHttp1RouteProxyRoute. - Support
{uri},{path}, and{query}expansion for native route redirects. - Enforce route-level
max_request_body_bytesin the native HTTP/1 route
proxy before forwarding matched requests. - Apply route-level native response header overlays for native route proxy
responses, including set, append, unset, HSTS, CSP, frame-options,
content-type-options, and referrer-policy shortcuts. - Allow native route proxy construction from redirect-only route config without
requiring a dummy upstream proxy. - Update release metadata, RPM metadata, and container tag documentation for
v1.6.26.
Security
- Validate native redirect locations before writing the response.
- Reject unsafe redirect expansions containing control characters, whitespace,
braces, backslashes, non-HTTP(S) schemes, or ambiguous double-slash request
paths. - Reject expanded native redirect
LocationURL paths containing dot segments
or double slashes, including{query}path-position traversal attempts. - Reject redirect templates that would place
{path}or{uri}immediately
after a literal slash in the URL path, preventing predictable//expansion. - Exclude route proxy configs shadowed by route redirects from native proxy
cutover candidate accounting. - Return
413 Payload Too Largefor native route-proxy requests that exceed a
matched route-specific body limit. - Keep regex routes, request-header mutation, response-header rewrites, access
policy, and richer proxy integrations on the compatibility path until their
native execution has dedicated parity tests.
Compatibility Boundary
- Normal proxy profiles still compile the Pingora compatibility runtime in this
release. The native route proxy now covers exact/prefix/fallback proxy routes
plus route redirects, route request-body limits, and route response header
overlays. Request header mutation, response-header rewrites, access and
compression policy, plus rich proxy integrations remain targeted for the next
1.6.x slices.
Checksums And Signatures
- Commit:
f724b2a5ab9b44bc285034ca771d7802882ccc6c - Local gate: GitHub CI green before tag; local release metadata checks passed
- CodeQL/code scanning: no open release-blocking alerts before tag
- Source archive checksums:
725835efb7f5e54621ce7fdab5c372c7f43992161f492ff60dc33c08c07eb9a9 fluxheim-1.6.26.tar.gz3f8c2fdc8fe14b2903db3a64bcb0eb1c3bd936123009e17f88b752e0bf7ffff0 fluxheim-1.6.26.zip
- Binary checksums:
- x86_64:
5d198f6ac31cb770b72931e84859ea69968ab1623f1954e931bd1d2490117cbd fluxheim-1.6.26-full-x86_64-linux.tar.gzcd61e645d591c6d0212f6a1417cb234c427900e65d9800667a62d7ae0a8a74d0 fluxheim-1.6.26-cache-x86_64-linux.tar.gz0f95b597d797160d3e791dcf62d938c1a10c62d129c26d06cdb5885ea9319d59 fluxheim-1.6.26-proxy-x86_64-linux.tar.gzd45e47579dbb6463f87ad459c76a09cef3a77eec3870f6db5bd86360e34a8792 fluxheim-1.6.26-php-x86_64-linux.tar.gz598172ce4c7fd3e2aa35853001dfc3fb640fc9a1029790bf59f40fea93dc2842 fluxheim-1.6.26-load-balancer-x86_64-linux.tar.gze7042765fa67bb9558b5504a70700862c183d369a1846df9872d9f3bf1259827 fluxheim-1.6.26-config-tester-x86_64-linux.tar.gz
- aarch64:
6dfaffacc0aab854427ffa93fe9bdf7726c311edc247f25a4b105b5dbae7a147 fluxheim-1.6.26-full-aarch64-linux.tar.gz55bb486e85ba3aee4b760ac923f8e52e8109142a048882434fc3a1eb58b24f08 fluxheim-1.6.26-cache-aarch64-linux.tar.gz356b3d122ced75114e34d217709cda717fcd849d199ae4fc05169a82d1e04b68 fluxheim-1.6.26-proxy-aarch64-linux.tar.gz97f4d79240fad8c18f53b6b163b76d82c8765123af4a1563144bff0558c461b6 fluxheim-1.6.26-php-aarch64-linux.tar.gzb42fafa2c51e2449d5146fd782dfe93d0a6c88790b4decf1a1346ba751d4c083 fluxheim-1.6.26-load-balancer-aarch64-linux.tar.gz8368ce7e386bee5c8167abe4ecc32278a83690f8dc1ced76c3b63ed8b16d61e0 fluxheim-1.6.26-config-tester-aarch64-linux.tar.gz
- macos:
c84ae24d0f509ba9619d7073c17333a31578ca43c89308ccdbb77ed82a948975 fluxheim-1.6.26-dev-aarch64-macos.tar.gz
- x86_64:
- SBOM checksums:
c1b0982cebb0075673c83192a2357b03e758ce5b5faff54026e1f6be28b5ea3b fluxheim.spdx.jsone926c0ac20010086f34b7887a24d93237de57cc06d125ff58ae6e1ed63a36c0c fluxheim.cyclonedx.json
- Reproducible build:
f48fda519e009905679bb0da95abc6f313df910dd96ce3107810f7f75173d19ax86_64d6c95abeed38abd46a1c8ddc39019d90c3ce6dea49037444123c471ad39979c5aarch64845cefc4900519f151d41571fd22f876d22876b1ef486b9df5261c52a17ab2b1macos
- Full Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:53dfe0cb1679db292a0b893ae87ea219ac267f153c66b4ea5454bc8ccbe02f5e - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:a11ecd249158a6a664468e1b41fffaa7d47a99006ad7690f7691d530e61f4400 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:41451b85a678ea43872eb3b2bc280213dd1901c0cd4b64729b4c5b95bb98a107 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:b65cd91d2836bc5c3bb9d172a1f69666128969c01dec74ec605718ab0dcfceab
- Wolfi:
- Cache Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:6bab87396f37afe5e2c928a09d8c28d0c3dc53fc026e809f4936603025928449 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:47a41b7a24baf3e6adb6d8b66d2cb7da8e3cad19381957f1cf04059157a8f625 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:9803a05eb7a0f569134148f846a695024d38632f6139e310ade6bdd251c0eac6 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:0559a6155f1f785b19017b22d1e02a9ea386fcbb1fb0fb529af43a86f7208ce4
- Wolfi:
- Proxy Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:65308264c3f789d5c33bab1e8077e86c979272402069521784682a9de193c2e1 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:242c6f51b0b06778d8e5beef0218898d78e53d55baff7f9a8e4c7b7f4082271c - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:0f9d3e2f465d62ec2a96abae7f2384657323eca1152760f8eb10ed25a94ac216 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:2a453761dc11deed67e812dbd77fb452c47fcad600caad1323ce1720241774f7
- Wolfi:
- PHP Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:6ded7df854352be2d9464529318edbced2bb4cffb3ffa60272c32684429a87f4 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:92e1d60c4cce01ec75f04bc0d5767564d92fe8edcefacce8baa41bebcb1547db - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:455021c1cbfacb2fefcccfae727eb3e2574e762198db4f963000a1abf439f43f - Debian:
ghcr.io/valkyoth/fluxheim@sha256:c82a6bfcb67c9f16c107d7ab0f3dda5695acc87502a2e166f532a4feeec497d0
- Wolfi:
- Load Balancer Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:896cceee3748f1b5ad5c6825a49f083ef666b3f4f187fbe322a8a09e69920caa - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:08cf1405adf9f0f8bdedcb4e43c1f481f58bc919adeda8e466f631747c33d162 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:238d8ec09bebba676e81ce2051ea93e9b4f503d73b085a2306004bbf33986314 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:6d3ba123d8c81c1c70bdf4d7af8fb51d2805ed2ca79564a4343f0de4d6a2a637
- Wolfi:
- Tag signature:
Good "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4
Fluxheim 1.6.25
Fluxheim 1.6.25 Release Notes
Fluxheim 1.6.25 is a Pingora-exit evidence release. The previous plan placed
the final dependency deletion immediately after the HTTP/2 parity proof, but
the remaining compatibility runtime still owns rich proxy behavior such as
cache, web/PHP fallback, auth-request, traffic mirror, redirects, rewrites,
compression, and advanced load-balancer policy. This release makes those
remaining blockers visible per configured proxy scope instead of removing the
adapter before parity is finished. It also starts the route/policy parity work
inside the same release by adding a tested native HTTP/1 route-proxy primitive
for ordinary exact, prefix, and fallback proxy routes.
Changed
- Add
native-http1-proxy-candidaterows to
fluxheim-config-tester --runtime-cutover. - Report each configured proxy scope as
native-readyor
compatibility-requiredwith the exact native HTTP/1 proxy reason. - Add native HTTP/1 route proxy handling for exact, prefix, and fallback
routes with method filters, longest-prefix selection, prefix strip/rewrite,
and query preservation. - Re-scope remaining Pingora dependency exceptions to
1.6.28;1.6.26and
1.6.27are now the remaining native policy and rich proxy integration
parity slices. - Update release metadata, RPM metadata, and container tag documentation for
v1.6.25.
Security
- Keep blocker rows in the native runtime cutover evidence strictly validated
while allowing candidate-detail rows for audit visibility. - Reject invalid native route-proxy request targets and unsafe rewritten paths
before forwarding. - Reject ambiguous interior double-slash forward paths in the native
route-proxy strip/rewrite path. - Keep regex routes marked as compatibility-required until native regex route
matching is implemented. - Validate native HTTP/1 proxy candidate row shape in the runtime cutover gate
before ignoring those rows for blocker status. - Reject single-dot route path segments during config validation.
- Keep the dependency exception gate active so documented Pingora removal
targets remain enforced by CI.
Compatibility Boundary
- Normal proxy profiles still compile the Pingora compatibility runtime in this
release. That is intentional: deleting it now would either break shipped
proxy features or make the release less honest than the evidence shows.
Checksums And Signatures
- Commit:
8abd17136836f8ca3d3f43800e121ec9d6decc3b - Local gate: GitHub CI green before tag; local release metadata checks passed
- CodeQL/code scanning: no open release-blocking alerts before tag
- Source archive checksums:
cb975aa81fb9df7d2556e50a6564758590ef8b0610d1c3431628baf7d1abf195 fluxheim-1.6.25.tar.gz2e6c9a3fa7e60bf26d1aa3d58561c2e0d801b09cec06eb0cc2a2ea64984161fb fluxheim-1.6.25.zip
- Binary checksums:
- x86_64:
68384d860cb7f65e0f9574019c36145f0020cfa063faf8c22bfcf36614bd2ceb fluxheim-1.6.25-full-x86_64-linux.tar.gzcd119f1cb51c790c82f9bccc5e64ea8be7978f0433a0f5b3cfe38504a51c65bd fluxheim-1.6.25-cache-x86_64-linux.tar.gzc5bf928798f898cd15083e7aeebcde0eb178cc686ee656ecd483eca5bbd5138f fluxheim-1.6.25-proxy-x86_64-linux.tar.gzf360171e237e7d41c22a7d98e0da390a468e363b77a49b563d35396fc61b7dc5 fluxheim-1.6.25-php-x86_64-linux.tar.gzb8b342121128e369d2d95d213d731498e16e4165d5039af50256957086decf03 fluxheim-1.6.25-load-balancer-x86_64-linux.tar.gzb827f0d34afa91e73fb37fb8ebf18ed1a2e87beb4962bc9fa2aaf435d43bc762 fluxheim-1.6.25-config-tester-x86_64-linux.tar.gz
- aarch64:
a007848517d8485a4a950846ccacd798c6beac50a20bf9b586b1545f4821fdb3 fluxheim-1.6.25-full-aarch64-linux.tar.gz8194c82c2284b79d036f0a7fdfe302b3245b713b8fb2eb7b84eef3aac9e8ae56 fluxheim-1.6.25-cache-aarch64-linux.tar.gz104dd5688d8baaef7027459a937523aecadbdb0b0a59d5350dcc45b215209c3b fluxheim-1.6.25-proxy-aarch64-linux.tar.gz18021f6dbc949e5b2af67466123eab1c49c7490ac71d6af4787149a3060cb755 fluxheim-1.6.25-php-aarch64-linux.tar.gzed5801d8db6a08a05dc3af269c75520296fbc4785d737196f6b931b19b080776 fluxheim-1.6.25-load-balancer-aarch64-linux.tar.gz21d41860aef6c99ac56dd18d34de52779e1235aee527f7eac1831fa6bd11808e fluxheim-1.6.25-config-tester-aarch64-linux.tar.gz
- macos:
8db86446b3ac556c06af14ac250e92074f37907b786cfed9f275179299a27ac6 fluxheim-1.6.25-dev-aarch64-macos.tar.gz
- x86_64:
- SBOM checksums:
c34029633172f1938180103f871f536165f7219e8d5e6c5a540e161738c9eed1 fluxheim.spdx.json69dadc029a6a94b3aab347de6947916ff7280f48507b3ad5e41c7cde004086c1 fluxheim.cyclonedx.json
- Reproducible build:
fb41f2338a47a7a1dcd18038dea494942f3e1db3b48c0be24705e1e5cb1223bax86_641ca266cf6d56c57c644519d0cd564a0db9f47acf13e8fd2fa9a41ca951a97f6faarch648ff959f6b35bce0a049c2a639234476490ed23cc413c523145d647d8468fbce1macos
- Full Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:38535ba104e5470c3accb0399ac838282fc3a1f44f5cf4d76692be5dcc9723a9 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:77a7fe69c905786b16f651dab26a15bdabbb2d652bd21f88c1b9f69b1a65f4c6 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:0cb4cabc377a9685032674437f3195e14cd1b92aad08c296e1f44db4fdd2f2c6 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:1bebde43cadfa5dde7cb56fc018f8555de2378295a0577f440d8538ed98ed957
- Wolfi:
- Cache Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:5c956ba52ab37bf122158387e5c797df0bda20eff64b28a4f6d2871d061eb14f - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:0fcfd1686e6ba15c2407db775fe61d63a12635d6eb72aa3a05ddf33542930a75 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:76be12ee7d5d3d3014c0ff49e6a73e79ced4c958449ef22fc84a18186ed9e0f5 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:50c7b891a0c2cd9e5ead5d9a063ddec96650d915124d4de4af60e14c18f67276
- Wolfi:
- Proxy Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:4198a35a212d23b743b10475f8571c01fbfc13077cb1377ecd46ffd965b47008 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:5c9d0a31389cab40fa8054c87c9cf233d948821e5699e49dd11a6a9c9c50599f - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:1a293939452ccc9b5c8d686f7d455d8c82f53634f46db6dd928adc4ed2c108c5 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:0cc5b39f56d4465c28064e3761bf633e31b9e0d645b54c615adbb5faf558efa0
- Wolfi:
- PHP Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:0e9739f7baebf118790ce3669010eadcba47799993440e47f31b2ff6595193e6 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:4f127b3f10037b837d82725ddb16c3e507fcc1776ff36e45449a2c1542b9dc66 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:0f143c4fd2382a99cfeaa785132571dd7389267674f96f264fe67537dacec44d - Debian:
ghcr.io/valkyoth/fluxheim@sha256:69d994c4c9f4c8f80c91cf81cc38e85adfa8a9665c9b9499eb5f5f9fa0efd60f
- Wolfi:
- Load Balancer Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:b4bbc2aaafa11322e187cc31a07602d0ab2bc7c3b127595482a13edfd4c1f781 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:3c1c39d1233538ec474bcf1ea640a5fce5b2da068e6a0d2823e5c12fc3455c74 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:2a56927f70ccc858d5ac7a17d887e921c620dfc46567e0f6f7d3d2cae4d66e93 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:80a9eda2e0e3d93712ca991c6f6a55d80a788ce94c11c3fe510010a2d45f6922
- Wolfi:
- Tag signature:
Good "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4
Fluxheim 1.6.24
Fluxheim 1.6.24 Release Notes
Fluxheim 1.6.24 finishes the native HTTP/2 downstream parity proof for the
Pingora-exit line. The representative native runtime cutover report is now
blocker-free for the simple HTTP/1 + HTTP/2 + admin + metrics + stream + UDP
configuration, while the remaining Pingora runtime/listener adapter crates stay
targeted for a focused 1.6.25 deletion release.
Changed
- Promote the native HTTP/2 downstream preview to cutover-ready after every
required safety hook is represented and tested. - Update the native runtime cutover evidence script so the representative
config expects no blockers. - Move remaining Pingora dependency exceptions to
1.6.25, keeping the gate
active while avoiding a rushed mixed release that both changes HTTP/2 parity
status and deletes the final compatibility crates. - Update release metadata, RPM metadata, and container tag documentation for
v1.6.24.
Security
- Keep decoded HTTP/2 header-count enforcement before routing and document the
paired decoded header-list byte bound fromh2max_header_list_size. - Join aborted native stream and UDP listener tasks during shutdown, closing
the short file-descriptor release window after an operator-triggered stop. - Add an explicit zero-blocker assertion to the native runtime cutover evidence
script for the representative config. - Preserve native HTTP/2 tests for oversized URI rejection, oversized request
bodies, decoded header count, request trailers, response trailers, prohibited
HTTP/2 response headers, request flow-control release, response flow-control
hold timeout, slow request-body timeout, and handler timeout. - Keep the Pingora dependency policy enforceable: all remaining normal-profile
Pingora crates must be deleted by the next dependency-removal checkpoint.
Compatibility Boundary
- Normal proxy profiles still compile the Pingora compatibility runtime in this
release. The change in1.6.24is the HTTP/2 parity proof and blocker-report
cleanup, not the final dependency deletion.
Checksums And Signatures
- Commit:
835f10614900c5b3233d3de5e22bc5c85a6ad63a - Local gate: GitHub CI green before tag; local release metadata checks passed
- CodeQL/code scanning: no open release-blocking alerts before tag
- Source archive checksums:
8424d7bc90972e3870ceb15e2a36f0964c56e1dd33e82e486c729f3c9beba90b fluxheim-1.6.24.tar.gz36722dea641dbd88c472c8f88e2dfffbb68c3f26f603a85d811675d152028570 fluxheim-1.6.24.zip
- Binary checksums:
- x86_64:
0c30cde62b28f530a064af71b4624d50d757eacb6d1f8d614addf8195a7f9fc5 fluxheim-1.6.24-full-x86_64-linux.tar.gzd9b7e83b59367e1b5db1f77f55a1062ecdec1946f20d646c5d0ca2c48050e65b fluxheim-1.6.24-cache-x86_64-linux.tar.gz87a9df8f1d80b77dabf2a266fcdd11aef779999c4b86519306d7fa4f1b3c41be fluxheim-1.6.24-proxy-x86_64-linux.tar.gza1de2681523396658d47a734a7b5f04bc6eec5e1a88e92489b0946ff273baa5d fluxheim-1.6.24-php-x86_64-linux.tar.gzfb8cf0e0b159ee7ae66ff7e958eeb6e812c5b9327fbb21586a5e5c271fc219d4 fluxheim-1.6.24-load-balancer-x86_64-linux.tar.gzca66aa7d0fde7db94f547f583045a016d8ff1891374504cea2a0bf6114888cb6 fluxheim-1.6.24-config-tester-x86_64-linux.tar.gz
- aarch64:
d07d60e196902048aa8eeb55f3695a87681670bbc61670f8be71d391e782c8f7 fluxheim-1.6.24-full-aarch64-linux.tar.gz9be8c03ee4c0410fb12de87b5b15e95694cd377fbf8d63af6e5205ef17d2fb7c fluxheim-1.6.24-cache-aarch64-linux.tar.gz606489bae2f696072c880c4665ef2a10cda9d451d25a2eb66366a959d2e2f03a fluxheim-1.6.24-proxy-aarch64-linux.tar.gzb65709aeeee99062ba70af0a407b343aa15d1ca8e42b770f7dbd2bedf7a5458f fluxheim-1.6.24-php-aarch64-linux.tar.gz016b49de6b7da29fd2a3ebcad863c293c560e4a894feb66936bd9d7e3f5d834c fluxheim-1.6.24-load-balancer-aarch64-linux.tar.gza0934b53ea7081659c29f230e814ad3669c18437c9d6e36a6db76040f18215d3 fluxheim-1.6.24-config-tester-aarch64-linux.tar.gz
- macos:
d63e1de498a696015ef4d04c26ddd82e41fc3057b47abd693a5c3988dfbfa61a fluxheim-1.6.24-dev-aarch64-macos.tar.gz
- x86_64:
- SBOM checksums:
60abf900757f6fc6e77e625a8018f6e0d5283df15deff7cf838a3ddbc8ad8c38 fluxheim.spdx.json125b8d1946c0b4fb11a6252cb0350c2a89cefabb0054a77867ba861d10b1ee34 fluxheim.cyclonedx.json
- Reproducible build:
7241a8c6fb791c294eadc0ecec5611eb6561abac38a5e4d9bf2413425f7f2ad2x86_649eaf718cbc6c0cdde58841b636510745669dc42cd549b8850860ee120b748ed5aarch6481c712338426a7313583dd802bc039a4c96038bc2deafab9bf70e1cf23ad8812macos
- Full Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:491ff683e0bec7956545d97385d5993853bb22b58728fe3b1985ef3fa6d3b783 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:801974b342c8e1859ea4d14208088d4bdb09c2bd785a67534ae118154250a2b4 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:63fe11f51c3582e9d184d291d3fbc5028108ec98dc77f0683b59e24c58943b0e - Debian:
ghcr.io/valkyoth/fluxheim@sha256:1bae5153d63503ab4192e3c3b182cdf413346cae7881b12e80b25824f00db370
- Wolfi:
- Cache Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:4674a5276fdfc00b69c4cd863a5a8ac672380946f7ac2508a435389dd924bfb4 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:48a85fa94ffc2e48f6062984be137fa05bdd3ac6c28aaab585cbd84e58d6f698 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:ade330e787b5bc76882b82d0a5cca2f1e2a54b21812771fbaa8bdd3b98529872 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:5c8584cea2526fde7287999d58cd10cef763b477fd1a160e8aeb22f5354c3019
- Wolfi:
- Proxy Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:19429018d4bd46c2c4e1519b5ed893b42227e544626c449c4dcfd97a181062d2 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:24a7106ffafeb9461b70bdb57cb5fc9ea8a4809446c6de59c2d7cdd1c922b831 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:0bbbd39a324b582c9d9b70544bba1d39c0de32b291fa2d4160726cfa74998550 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:6695ab34496553816f00972545b23c4bce2a69df7f2468e4df7d15ccc1248ce1
- Wolfi:
- PHP Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:a78cf928fafa91426dde58b5e232f9e4153a9f7ee0ab66f9d636cfda11b19964 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:2422b45eb9e3fec85b6b76750679fa52963d7519db910ff95b69d730757d486c - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:9d61382d432a5d39bbc9c0a29b915fb11da1bf1ae0d3651ac811eb5a46e5c6a7 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:365f3e61191015503386a329fb2060435e9f28137771a494b9304ea0e1521527
- Wolfi:
- Load Balancer Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:19d8dff367924db4f1552a3fd5c530d0742978734956a85e2d97939dccf3bd17 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:b3598235b2aada4c8849733daad8d6b3a32baeff4f3c9c44f018b5d4c07b16bd - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:12b3e4c86daeadf63e260e0a9984c6ab0076d0152da29eb157a35004f2c13f41 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:03e10ba0843c87c3e85072e011bed80c9a27720bad1324174bac4ad7d810578a
- Wolfi:
- Tag signature:
Good "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4
Fluxheim 1.6.23
Fluxheim 1.6.23 Release Notes
Fluxheim 1.6.23 cuts the stream and UDP proxy startup boundary over to
Fluxheim-owned native task primitives. The data paths were already Tokio-based;
this release removes the Pingora-owned accept-loop lifecycle from those
services and keeps the old runtime only as a narrow registration adapter until
the final 1.6.x cutover.
Changed
- Move stream proxy listener startup into a native
FluxBackgroundTask
boundary. - Move UDP proxy listener startup into a native
FluxBackgroundTaskboundary. - Keep Pingora service registration as a thin compatibility wrapper that
delegates to the same native stream/UDP tasks. - Mark config-derived stream and UDP service plans native-ready in the native
runtime cutover summary. - Extend native runtime cutover evidence with a representative UDP route and
update the expected blocker report so only HTTP/2 remains for that
representative stream/UDP config. - Update release metadata, RPM metadata, and container tag documentation for
v1.6.23.
Security
- Add
FluxShutdown::wait_for_shutdown()so native service loops can wait on
shutdown without depending on Pingora'sShutdownWatchAPI. - Make
wait_for_shutdown()return immediately when shutdown was already
requested before a task starts waiting, preventing stalled startup/shutdown
handoff. - Make native background-task joins abort-on-cancel, so cancelling a
join()
future cannot silently detach a task that should still be supervised. - Make the shutdown waiter cancellation-safe for native stream/UDP
tokio::select!loops. - Preserve query strings on pathless absolute-form admin request targets such
ashttp://admin.local?reload=true, mapping them to/plus query instead
of dropping the query. - Preserve live stream and UDP smoke coverage after the lifecycle change.
- Keep final HTTP proxy and HTTP/2 runtime parity as explicit blockers until
the final Pingora-free proof release.
Compatibility Boundary
- Normal proxy profiles still retain the Pingora compatibility runtime in this
release. Stream and UDP service startup now uses Fluxheim-native task
boundaries, but final production runtime/listener removal remains scheduled
for the last Pingora-exit proof release.
Checksums And Signatures
- Commit:
7bae1abe603fddb4cae63321f4260802cce86af7 - Local gate: GitHub CI green before tag; local release metadata checks passed
- CodeQL/code scanning: no open release-blocking alerts before tag
- Source archive checksums:
f1f51e156407073d08371cef687bafd8fb5670c351398cf4cc47abd73d658da9 fluxheim-1.6.23.tar.gz6bcd6884570165d5189ca7892cacc1f5ad28246f33feb9d198f2be843d6cbb5b fluxheim-1.6.23.zip
- Binary checksums:
- x86_64:
ce47b468571e90eed86e44d2ad228a3156753e16d7add843ecadfbbe4e5676e1 fluxheim-1.6.23-full-x86_64-linux.tar.gz59b01db1d204a0ac5c925d1d5915dd317e2a8e29b5c6b09543aec23204ca7458 fluxheim-1.6.23-cache-x86_64-linux.tar.gz950aaa49435411263d56b93935de3ea3d4548eeaf67fa00ce0185552084a69ce fluxheim-1.6.23-proxy-x86_64-linux.tar.gzf6001ab164f3ec2fdd904b5c170c96d2a79ded0a5b6d1d901b409fb408fb5846 fluxheim-1.6.23-php-x86_64-linux.tar.gz437619b260ccdf2cb9460edb8bed89a3ad4bee7d32fc8224a2d08d64a96c7d16 fluxheim-1.6.23-load-balancer-x86_64-linux.tar.gzcb4f008d9af302b33d5bc4eee796934e0d00d94dcf87692d9bb1088e53f298bf fluxheim-1.6.23-config-tester-x86_64-linux.tar.gz
- aarch64:
7e9c954584c8eccd8a3925c4a3722e99e822385046b2d965fbe1b31676fba33a fluxheim-1.6.23-full-aarch64-linux.tar.gz4d33bdfcf3709dc6eb9044c062509b639d80dcbdbf32216b21dfe8f6a7d495d9 fluxheim-1.6.23-cache-aarch64-linux.tar.gz5b5be03eac1e82c41b80b16666cf8f0e6afa76e458f36cc7dc3eb81ff3027e1c fluxheim-1.6.23-proxy-aarch64-linux.tar.gz2543316f71f99cca995121797a21ecbf12b93b8d3f2122b65d1b1e0407a6ea29 fluxheim-1.6.23-php-aarch64-linux.tar.gz76887478f76e0c1b76ff0b6b7098d53a40789ebd260a037ef10e94c3f53f735d fluxheim-1.6.23-load-balancer-aarch64-linux.tar.gzea7e033063762400313f4612a74d89ec545ca7933b05e610d632a914dfa1b076 fluxheim-1.6.23-config-tester-aarch64-linux.tar.gz
- macos:
8ee47edfaf3b3f7abd85bf9e0ee3c1b1ab2c4f0fc4a3b1e43db3a690454dabd9 fluxheim-1.6.23-dev-aarch64-macos.tar.gz
- x86_64:
- SBOM checksums:
385fb371fd598ececb10a5bb08453d1266adf65ab2adf85cf11871db8e6ad1fb fluxheim.spdx.json8430aa1e9be9f29565598626a7e53f53ac38f272b6369a4f5df3027b6a8854fa fluxheim.cyclonedx.json
- Reproducible build:
56247a7b926b1aa8379402c02bb003835b909e93ae1808af7db974fc4f6cc681x86_6476e9e4d366474587af77bb6a2f2cd60df1bf4a08a7cea8d22a74369046cd9943aarch64332208267961551a8ae8fff881ce9a2578fdf543301405ad27a2ef2c71458e13macos
- Full Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:5a092346e9bf7d22f46971df0e28e4343090b34f93355b80f802d128e19917c6 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:74d67780d097fc0d8dff88a4039ca7b614449ae6b3dad402e5c088c2c444838c - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:ac7298352703f57c274d6427d92b0460762c72ba556673bedba8affe7b36e47a - Debian:
ghcr.io/valkyoth/fluxheim@sha256:0c6f086c327b72bb39fcda85ca99fcc9554ccefbf108b72fc74802d8892a1e1c
- Wolfi:
- Cache Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:8e72241f0387e032c93de8cf4ab9a1091bad22ea51c03ba20a9aa8d7d727268a - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:5ccbbd67734b55b61fcbbc08904b678436f5f7c4f8fd1c29489b32ce0e5102d0 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:2b6caf64871198cefc98896c457d7777461af2822ca8f5d6f857e4b779ea1a77 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:0111331495aa9a8c64066a513fb83ddb1919a95595df5ec12166e7e6e7eaf8d4
- Wolfi:
- Proxy Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:196a09f2fd2b3d523c73d0d6d7013fd07314d944dd0c42a5812c4b1a5851c707 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:2b73e8737480c0ca2bb698f8747ae8ec736bcad11c6e6b8166ecf15a3ec3f2ff - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:6d0c4f6a01d65a8fa1a95a8de1d5d36a4bf30f26e6db937fb0bd16645e176b30 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:78f7c62a56efbed4588183da438566dc63c7a950a78644976ea91f6d006f5ad1
- Wolfi:
- PHP Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:378d173434da8275d8f5855cff52f068b38176868c47a5145bbdee3df294ef86 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:218f39c98b6335617d22bc46a2901856bdcb57c9545b42a1ab60524e27bc585e - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:5834c4773b58ca05529ebae8158fc778169a6fe6fb85237aecbb60678fe37e17 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:435f8788b10401ef6862f390f79d5a8c9192cf5cd5d64ea0129f294855ab75cc
- Wolfi:
- Load Balancer Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:0ad435a18d8ffb53cba8e786d367ae237fc76bd6516aca083ee585bc6fe87e76 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:a7dcb6cd83f3f43cc06f9da47ca8a896df8f358b5a0d37770d7f7d8aacabe5e8 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:0d8a406f1e2032f1c9362b714d3c10bd505643d88f579b25b8d22d7f3a0c79a1 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:11f1357b521e788d8d6de791904fa61527326c7ff5e602e649afb66d6d9f06ed
- Wolfi:
- Tag signature:
Good "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4
Fluxheim 1.6.22
Fluxheim 1.6.22 Release Notes
Fluxheim 1.6.22 starts the native admin and metrics serving slice of the
Pingora-exit line. The goal is to move control-plane HTTP behavior behind
Fluxheim-owned server primitives without weakening admin authentication or
changing production listener behavior prematurely.
Changed
- Start native admin/metrics serving work for the control-plane side of the
remaining runtime cutover. - Keep production admin and metrics compatibility conservative while native
handler parity tests are introduced. - Mark config-derived admin, ops-socket, and metrics service plans native-ready
after proving native HTTP/1 handler parity for admin auth and Prometheus text
responses. - Update release metadata, RPM metadata, and container tag documentation for
v1.6.22.
Security
- Preserve the auth-first admin contract as the required behavior for native
admin/control-plane serving. - Harden native background task handles so accidental handle drops abort tasks
instead of silently detaching them, while documenting that aborting a watched
critical handle triggers supervisor shutdown. - Mark native supervisor shutdown results as
#[must_use]so callers cannot
silently ignore whether they initiated shutdown or joined an existing
shutdown. - Reject newline-bearing paths in native runtime cutover evidence generation
before interpolating them into TOML fixtures. - Document that native admin target matching intentionally uses raw,
percent-encoded paths to avoid normalization-bypass regressions. - Keep native runtime cutover evidence active for stream, UDP, HTTP/2, and
final proxy-runtime blockers until those services are wired to native
listeners.
Compatibility Boundary
- Normal proxy profiles still retain the Pingora compatibility runtime in this
release. The admin and metrics cutover is staged so response shape, auth, and
local smoke behavior can be proven before flipping production service
registration.
Checksums And Signatures
- Commit:
1cfb0ac23c418ef2d6226bf0026f7cc3ab5c1b66 - Local gate: GitHub CI green before tag; local release metadata checks passed
- CodeQL/code scanning: no open release-blocking alerts before tag
- Source archive checksums:
7e9e5839097f36a4963054c77b53006440cc080a3c5c8240d6022aeaa5a3a175 fluxheim-1.6.22.tar.gz3970ec5e2824e8ed2f06aeb30a0d08d849284df79c6f90f9b795ecc7b28372da fluxheim-1.6.22.zip
- Binary checksums:
- x86_64:
8fbdd44b567060c84e3997b260514f86c668f3860f1673a394d4384b4eb98592 fluxheim-1.6.22-full-x86_64-linux.tar.gz86bd8831b8eef0b4de00d0706613e04fee70c59bee103f4863daa88a26e0a617 fluxheim-1.6.22-cache-x86_64-linux.tar.gz39c7005a3973f3d0224f138273d1205899745208f03d3aae259c95faac95a4c6 fluxheim-1.6.22-proxy-x86_64-linux.tar.gz75a4197c52fbf8947ca0cb2f415cc7790c795152fa65df878779a9f36980eeb4 fluxheim-1.6.22-php-x86_64-linux.tar.gz121a1633a9e245922a6f3673b4f5253afbd866738dbc0d284acaf55c0136ba47 fluxheim-1.6.22-load-balancer-x86_64-linux.tar.gzc30fcf292191d182732c0cedfb24b13fadf1bbfa26be195bc92ed5db4c1d38f3 fluxheim-1.6.22-config-tester-x86_64-linux.tar.gz
- aarch64:
421e5a32afb7cd5c52e41aaa1d942ad07071c66e3cc15fb2fab8e05081c5505b fluxheim-1.6.22-full-aarch64-linux.tar.gz0a67c5a878c684daf8c1e7745a85956c25c4c856ae7fc268c06fbfa747a0930f fluxheim-1.6.22-cache-aarch64-linux.tar.gzfa70e1221dfc0014e6e40d49855ef76c4f5b84cf8b4daf50cb69136af07a737b fluxheim-1.6.22-proxy-aarch64-linux.tar.gz456475b64d570400fc350bd175b6f07ef24669b1cda2a93180df9f8f8c39c8c9 fluxheim-1.6.22-php-aarch64-linux.tar.gz4a5be65883e45f7b32fcf0477ca120421d055ca1c7ef377adee15252ac9b357c fluxheim-1.6.22-load-balancer-aarch64-linux.tar.gz8cbc96e7f276adc96fa725e08cd0501cf400fa8460c33d3d277000bfcf6a4a79 fluxheim-1.6.22-config-tester-aarch64-linux.tar.gz
- macos:
5d4bef7c196f3fe6b9fee65a59264f4d20a88d04868b0f682509c2893b3abce7 fluxheim-1.6.22-dev-aarch64-macos.tar.gz
- x86_64:
- SBOM checksums:
70c8cdbcde7ef65fa363cd512950ba96dd336186cd334de06693b025d189ee33 fluxheim.spdx.json48fbbc9d7db5897dc2579f24a05981da537bbc0bb930201dbc40e9251950da2b fluxheim.cyclonedx.json
- Reproducible build:
3a9e7ed5b38122f1be1a705e10a32c5a002fd383bd51b8dcdeaf934b0fe77be7x86_64a7b087242e89f82b2da633c8be50865241a47414b1e9ed01d401ed2d63394bb1aarch64a83fb3d87d63715bb71d2797e43185542656e6aa9de476855b944116bdbe128dmacos
- Full Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:17cc37795971aaa2c1615f1f06a164cc318c779b4b7ef41802eda63119807f8a - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:09a4ac9ea761a56c0d8306c2a2aedd6cdd4a5c56ca3982f61e63a90f5c3087b9 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:8d0566cad1a71ba80d635b7e9030f0ed939c79c20edd7f578c38cfa4b3ecde2c - Debian:
ghcr.io/valkyoth/fluxheim@sha256:081d513c1e70199fd3c1945d8781117ae8f70f09c8fec5765e59eb928776d6ad
- Wolfi:
- Cache Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:2eba360b2a031dc04f943b4c97969dacd9c5ab0aae83a97b2fde636a4fc3c934 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:57ae58f51113608cfc778125118c9bc48e2f2c2b4475475793d54acd296eac18 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:2148fc61fd80b1999861423064f9d822d0ad74a5e516303da4e80fa655de9bf2 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:1d2d91af39784267969600b505790f96b487a1ef648f4a9d4095c51eb243ab2b
- Wolfi:
- Proxy Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:31f056084830a927a41ddb087f33398e11fc00b8ad1aaa641a8f6261d514f9b3 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:4ef4a2c4ad073bd3b10c923ad13834d3019828636336d7ea40eb84d7d847c9ba - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:76702267048afb72b5f136600755b4a930e427bc729ead32dab5d42c5eebebdd - Debian:
ghcr.io/valkyoth/fluxheim@sha256:73dfb10cf36f900c9e07a6de743987459a44547647e4f59bbdb7aca6d8390cf5
- Wolfi:
- PHP Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:4da923e7d634fda477f40ebdca7130a9861b291cef0212fc6deddb21a1acee4a - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:588c10f7d0963ef5ef7a561584b9c458599d439ed97bf2077a6427704b047477 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:34e33efa2e66651f3f42f0aefcf3fa554ab162ec062f249c41d496932b454a4c - Debian:
ghcr.io/valkyoth/fluxheim@sha256:3bbf4ee644dbe46b657476b7f00a7c497467e3b005699ab0d46564d29f3b7c30
- Wolfi:
- Load Balancer Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:d07ae1e8784dd3de3ef032283bad2ce324195aac945016f2e732444a83308d96 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:7caaffee9a211eab4ea6587ea881ca8026b6b1bdb580173361aead565361b514 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:05d83659dc90a2df8c5533327345c2d304026224c9e69af6d4cdf749f97e5aee - Debian:
ghcr.io/valkyoth/fluxheim@sha256:3292fc0bfb48ea7031b38286a3abbe7e3993108755f21fad8e5ee5e64d5c04bc
- Wolfi:
- Tag signature:
Good "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4
Fluxheim 1.6.21
Fluxheim 1.6.21 Release Notes
Fluxheim 1.6.21 continues the staged Pingora-exit line by moving internal
background task orchestration toward Fluxheim-owned runtime supervision while
keeping production listener behavior conservative.
Changed
- Start the native background-service orchestration slice for certificate
reload, ACME renewal, cache maintenance, observability export, and
load-balancer refresh tasks. - Add
fluxheim_runtime::NativeBackgroundSupervisorfor Pingora-free
background service spawning, readiness callbacks, shutdown fan-out, and
join/abort supervision. - Keep the final Pingora-free proof target at 1.6.24 while this release focuses
on task-supervision boundaries rather than listener/runtime replacement. - Update release metadata, RPM metadata, and container tag documentation for
v1.6.21.
Security
- Preserve the
pingora-compatruntime boundary and dependency-policy gates
while adding the Fluxheim-owned supervision primitive that internal
background tasks will use during the remaining runtime/listener cutover. - Add native critical background-task watchdog support so critical task exits can
trigger supervisor shutdown before production task wiring moves off Pingora. - Fix native supervisor shutdown delivery for pre-spawn shutdown, last-handle
drop, and clone-drop edge cases. - Harden the native runtime cutover evidence script against unsafe TOML path
interpolation and missing expected blocker rows in the representative report. - Mark background-service
threads()as Pingora compatibility-only; the native
supervisor does not treat it as a per-service thread-pool contract. - Keep the first-party
zeroizetosanitizationmigration planned for the
post-Pingora stabilization release so secret-container API changes are tested
as a focused hardening pass.
Compatibility Boundary
- Normal proxy profiles still retain the Pingora compatibility runtime in this
release. The goal of 1.6.21 is to shrink internal task orchestration
dependency, not to flip production traffic to a new runtime in one step.
Checksums And Signatures
- Commit:
f2e5b797440247cf6bcae8b5a68c823219c7acf7 - Local gate: GitHub CI green before tag; local release metadata checks passed
- CodeQL/code scanning: no open release-blocking alerts before tag
- Source archive checksums:
419919e2ffcafdb9f39e104ffe53c32230c5bc4a8b5f9324a3f80f3bd4ff5aa4 fluxheim-1.6.21.tar.gzd8a932b997342509b342a24c123273644274b194fb2b88f0627edb023c15be32 fluxheim-1.6.21.zip
- Binary checksums:
- x86_64:
50f64aecefd62c7301e98827cab3723e5dc0b725bfbbb856380e04ddb42a2cfa fluxheim-1.6.21-full-x86_64-linux.tar.gzf046452ef3aa57a4be9c8e10140001158c02aea5e5621ee93398234066d4ef4b fluxheim-1.6.21-cache-x86_64-linux.tar.gz0319d36aeada3c36710e154e2785c0343f5a676558cccb31c64f2d591cf4ac1b fluxheim-1.6.21-proxy-x86_64-linux.tar.gz44c6657b62a928bad08cdcb563e2408a4d360b54d45a5a9ede14d3012ab236c3 fluxheim-1.6.21-php-x86_64-linux.tar.gzbe8b0ef231dc6d2eb1b50e02ecc984f65dc85315bbda452cbbb4783b07a062da fluxheim-1.6.21-load-balancer-x86_64-linux.tar.gz0effc9f05c093a8dd92a13fff6319026ad5dfd11511916419ab58a6b6f9032e7 fluxheim-1.6.21-config-tester-x86_64-linux.tar.gz
- aarch64:
6b905523f62de6567718cc094729967aa8f2889eedad534cd61dfed75641163a fluxheim-1.6.21-full-aarch64-linux.tar.gzc9d30f52712b361e933fc1084e1938ca5d7be0052d70698652a018fa63cb328f fluxheim-1.6.21-cache-aarch64-linux.tar.gz716e52318b6ca78054737280f1e0c73d9df7a5145c48af9c0b7267b7eb19899a fluxheim-1.6.21-proxy-aarch64-linux.tar.gz2b886ef32f257c9156c2baddb67ff0d6ec096fc40ab2dcaf46f7208a1c281a7a fluxheim-1.6.21-php-aarch64-linux.tar.gz8aa3dd2b0ef584d79fc25f206778d50c1174530b506014199219dcc393112271 fluxheim-1.6.21-load-balancer-aarch64-linux.tar.gzf0f7e55e6332ee7766c0e700019f96e1838b5b6f42d62792b3864d19a155c862 fluxheim-1.6.21-config-tester-aarch64-linux.tar.gz
- macos:
4481a03c119b8c7d4c87de92ee5ca099118a471d2bad3619f24c626292a21755 fluxheim-1.6.21-dev-aarch64-macos.tar.gz
- x86_64:
- SBOM checksums:
1bfd955bfa2476e0541c88e604993840bd0fb34bb5742d8ee84b19ccb8736650 fluxheim.spdx.json59bc32fdb7d48a7258b569be3e5fc6f1cb12cf3637b491025857ea321a04197c fluxheim.cyclonedx.json
- Reproducible build:
c18e1d3bda8f047b91016bd3a206f308b65585bc1be7b8025ee326ec3ca82057x86_644b3ef83ad22f9e717fea65b2d10e69daa9b0ebef08d3d1a8c9e9a8ce7621b46aaarch647aae16a2f58a98952262f473e78c83d8f52edba87402ae78f3d798f2a916595cmacos
- Full Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:0b1c599809d861d2477e28a3b90b0a9087676b7e17a4c85b33aa306cb1a77a80 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:d60820841d817097f771d8099caa7dd17a32529e91a163a37245972bb4aaed21 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:488a9798bdb2ea672c21ff63cb56fb2cb4564097ceecb2d0644b59719ed2e435 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:a7d4e084a32beabbf6c5e6f1af6410ae335ce5b3567811cb5d05933a1243a4b4
- Wolfi:
- Cache Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:2514d7fc3367c745c73fe3b8abd0ea64454325e4894c51e49c5acf0964e2edfe - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:72571e7525e9bee3993422fe7ce457bfd8417e92b3c4249e8b59ed2c11a81e16 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:ba64191559b5622288411a1b5ceeba64954b93ae13707e90e4ba669befd1796d - Debian:
ghcr.io/valkyoth/fluxheim@sha256:273e2e045e7635d175868812fe285d3452bf18495f45b10f3d8ff9070d6f15f1
- Wolfi:
- Proxy Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:644baf8bc7cfdf914f206205031c00b110002dddf2b83fe58725aee49e731018 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:bd9dd712570a1a4b8631bc990a3fbafb915d4c801d106f39bd9cbccde8baf67f - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:1e7dadb120b173935fb4e30b26cd1cfc1c34927abefde4a51320c089e73f3978 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:7e1c38b0baf604c6ecd69230d96b06c6153391b46763fa14c962460723e3e919
- Wolfi:
- PHP Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:709425a1892d550c01406d754867263178e1b551e26a41b613505d9b8a440d1c - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:4ffd126c5a1fd4b218a7bddd4568bd0c361ce1aaa3d9882c95b3bbdc6195168b - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:6c5f53e98c7eb8012b2dc63ec3715b46d19d8bf3ca5b8f199f3e9a9563198ce0 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:0287d53c2cbefc5e7fc2ca4211ce3d8a4c9ca7eb0601b13c51c06b5cdede21d5
- Wolfi:
- Load Balancer Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:9497ab6a93211b10d5269e428dd1f24af4f4610f6352fcce395e90235a374c85 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:609de3a902d5e90df9d0f8602b9fa2f6e25de8457a84ffee96a306f22f9118de - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:2f174de96bbb2b23775cd7c72fd4a51786489d0ff657bde15da20be89b5780e7 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:41e0801edeac66870f2ceb9520a6676179478e37f940824c121fddf17d536ffa
- Wolfi:
- Tag signature:
Good "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4