Fluxheim 1.6.19
·
162 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Fluxheim 1.6.19 Release Notes
Fluxheim 1.6.19 continues the Pingora-exit line by making the remaining
compatibility runtime explicit in Cargo features and proving a native TLS-only
web builds can stay Pingora-free.
Changed
- Add a
pingora-compatfeature for the remaining root compatibility runtime.
Current proxy profiles still select it, but the dependency boundary is now
visible and easier to remove profile by profile. - Remove unconditional Pingora TLS feature forwarding from native TLS backend
features.tls-rustls-backendnow forwardspingora?/rustls, and
tls-opensslnow forwardspingora?/openssl, so native TLS-only builds do
not pull Pingora just to use rustls or OpenSSL. - Extend
scripts/validate-pingora-dependency-policy.shwith native web TLS
profiles for rustls and OpenSSL. The gate now records and verifies that
cargo tree --locked --no-default-features --features web,tls-rustlsand
cargo tree --locked --no-default-features --features web,tls-opensslhave
no Pingora crates. - Add
scripts/validate-native-web-tls.shand wire it into the stable release
gate and CI so the same native web TLS proof profiles are compiled during
release checks, not only inspected withcargo tree. - Extend runtime-baseline evidence with the native web TLS proof profiles so
release artifacts record their Pingora dependency surface alongside the
official compatibility profiles. - Move rustls downstream SNI certificate resolution into
fluxheim-tls.
Fluxheim now owns the reloadable certificate table, PEM certificate/private
key loading, wildcard/exact SNI lookup, and TLS-ALPN challenge certificate
adapter used by the compatibility listener. - Add a Fluxheim-owned native rustls downstream
ServerConfigbuilder. It
applies the configured cipher suites, curve groups, minimum protocol, ALPN,
client-auth verifier, and FIPS reporting check with typed errors instead of
Pingora listenerbuild()panics. - Add a Fluxheim-owned native OpenSSL downstream
SslAcceptorbuilder for the
fallback-certificate listener path. It applies certificate/key loading,
cipher, curve, minimum-protocol, ALPN, and client-auth CA policy with typed
errors. - Move OpenSSL downstream SNI certificate storage, reload, pending-managed-cert
handling, and certificate application intofluxheim-tls. The root runtime
keeps only the temporary PingoraTlsAcceptadapter. - Align rustls and OpenSSL managed-certificate pending detection. A
half-present ACME-managed cert/key pair is now treated as pending by both TLS
backends instead of making rustls listener startup or reload fail during the
issuance window. - Add a native rustls HTTP/1 downstream listener preview in
fluxheim-server.
It wraps the existing native HTTP/1 parser/handler withtokio-rustls,
shares the listener connection budget, and bounds the TLS handshake before
request parsing starts. - Add the matching native OpenSSL HTTP/1 downstream listener preview for
OpenSSL-only builds. It uses the same connection budget and handshake
timeout as the rustls path, then hands the accepted stream to the same native
HTTP/1 parser/handler. - Split the native HTTP/1 TLS handshake timeout from the HTTP request-head
timeout. Preview TLS listeners now use a dedicated 5-second handshake window,
so operator tuning of request-head parsing does not accidentally widen or
shrink the TLS negotiation budget. - Add a native runtime cutover summary to
ServerPlan. Fluxheim now logs the
remaining native-runtime blockers at startup while still retaining the
compatibility adapter for this release. - Add a root integration test proving the
fluxheim-tlsrustls downstream
server-config builder can drive the nativefluxheim-serverHTTP/1 listener
with a real TLS client handshake and request. - Add the matching OpenSSL integration test proving the
fluxheim-tls
acceptor builder can drive the native OpenSSL HTTP/1 listener. - Update the test-only
rcgendependency to0.14.8. - Remove Fluxheim's direct
rustls-pemfiledependency fromfluxheim-tlsby
using the maintainedrustls-pki-typesPEM parser API.
Security
- Tighten the release-gate proof around dependency ownership: native TLS-only
builds cannot silently reintroduce Pingora through TLS feature forwarding. - Isolate the old vendored Pingora rustls listener panic surface to the
temporary acceptor shim. Certificate selection and key parsing now return
typed Fluxheim errors and can be reused directly by the native listener
cutover. - Shrink the OpenSSL compatibility listener surface: SNI certificate material
is now loaded, selected, reloaded, and applied byfluxheim-tls, leaving the
Pingora layer as an adapter only. - Fix rustls/OpenSSL backend divergence for pending managed certificates so an
ACME issuance race with only one file present does not fail rustls startup or
reload. - Prepare the native downstream listener cutover with a no-panic rustls server
config path that can replace the vendored Pingora rustlsTlsSettings
builder. - Bound native TLS handshakes with their own timeout instead of reusing the
HTTP request-head timeout. - Add socket-level test coverage proving a real rustls client can complete a
downstream TLS handshake and receive an HTTP/1 response through the native
listener path. - Add socket-level OpenSSL client/server coverage for the OpenSSL downstream
listener preview so the native cutover is not rustls-only. - Add server-plan coverage for native-runtime blocker reporting so the final
Pingora removal slice has a tested checklist. - Add end-to-end native rustls listener cutover coverage across the
fluxheim-tlsandfluxheim-servercrates. - Add end-to-end native OpenSSL listener cutover coverage across the same crate
boundary. - Remove direct use of the unmaintained
rustls-pemfileparser from
Fluxheim-owned TLS code.
Compatibility Boundary
- Root proxy, admin, metrics, stream, UDP, and process-supervisor paths still
use the Pingora compatibility runtime in this release. The next
Pingora-exit slice removes the runtime/listener/admin compatibility layer as
a tested behavior change. - The native runtime cutover summary is diagnostic-only. It does not change
which runtime adapter handles production traffic in 1.6.19.
Checksums And Signatures
- Commit:
caa0ea8116e75b22562c159ce06e7817a6ca2562 - 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:
97dd0961bb31b9a1bc2673c52df90a0aa4d79bd4e8449cf0f5a5f01c26819deb fluxheim-1.6.19.tar.gz09a0446ee9932979520f8739d4072703dd8f65084c88f741077d9db0824ac179 fluxheim-1.6.19.zip
- Binary checksums:
- x86_64:
036c96ed80d391711306df539b93920f19b629c16c7addda032734e760eb6ddb fluxheim-1.6.19-full-x86_64-linux.tar.gza33289e9d471f4cdb74f4eef651cb746f1bd85b246415ec5799e5ae74b59f5fd fluxheim-1.6.19-cache-x86_64-linux.tar.gzc2f46eededb97d7e947e5bac2c1d810bf1d9e3b7c7fd9a95eb34c0a5459d740e fluxheim-1.6.19-proxy-x86_64-linux.tar.gzeb41c7634f08f327adea6a0e029c5e0bc4e4a291eb14fd75d5893e6010ab9c7f fluxheim-1.6.19-php-x86_64-linux.tar.gz51b3abdc612179840eafa07990af393b96e0ee760c38a5724e4637a06b0fe8f7 fluxheim-1.6.19-load-balancer-x86_64-linux.tar.gz3c899b7d7b450f88478da2687f0dea68929e6b6ea4c54a5f0f89d74a1e3d5524 fluxheim-1.6.19-config-tester-x86_64-linux.tar.gz
- aarch64:
6f06c107d3d422924a89e0f353e220b0ed19a5a5cfebbaa83c71b6a1ec6d3564 fluxheim-1.6.19-full-aarch64-linux.tar.gzc16f8ad4ad62b953ebd4e1b32388c8c81c16c36d36a4f72d8f19883cbb0d8e2e fluxheim-1.6.19-cache-aarch64-linux.tar.gz2c5fa0b187234b0ad7f80759bab91be91122ec56d7701cefbd709fa19dd5de3f fluxheim-1.6.19-proxy-aarch64-linux.tar.gz6d435c8868eaf44a458482ef8a86965c68f6a4f10b7ec40072c54c1235ebc105 fluxheim-1.6.19-php-aarch64-linux.tar.gzcaeeb95e309286e22e77848f29108a684505e4edd26248a43534bb1d53049f5f fluxheim-1.6.19-load-balancer-aarch64-linux.tar.gzcefb4d6a7ba710128a1af61b3cb2ba516f370ad300f0ffff4a88de5612195ff7 fluxheim-1.6.19-config-tester-aarch64-linux.tar.gz
- macos:
dec66e651cade43eea96021c37227988ada8315a28ca717a6f410fee56eaf582 fluxheim-1.6.19-dev-aarch64-macos.tar.gz
- x86_64:
- SBOM checksums:
a0b0681d52d3a66c1ed402c1e9042a0b9692f05ec811e9d875ccb6af0591941c fluxheim.spdx.jsone4acd5fb6ed2539294ceb0edc08dfcafbc89da4cda702fde42538c017fa03c61 fluxheim.cyclonedx.json
- Reproducible build:
9f6a058dc739c2e1cec1946988e41ea71b41c0c1eb8098b0a928c03342674d04x86_64b5aa2e472e1bdab9036eec26c2aa3d8d5696f9511ed8fe1b17f815bf40521417aarch64fd3be666a537bf858d7ee5b3e48aa98dfb86c5f56e17aaeb53e5d9c634179140macos
- Full Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:8a27a314ab0f2a19f8004010d5f7482fd6828271778acbdb83f7c8af9dfccf24 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:0402e2f246d3f681a22ec3291f1d7a8546aed01ae21f2cbebadaecfecfe60aae - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:3d6233642cadd71e9058777ae04f96c64f72fb1d69e97393e4b8e3fde2853d09 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:15269557a5157ffad39c489b2e400aa3f6f612819ea61c4dad88cf517b91d687
- Wolfi:
- Cache Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:0fa2e1a3c837f02691f827c1db97ad72d219a4cccc46fc725b736abf35716c10 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:10f11b4d3ca4963ca33dc81537ccff8b70ab9efcf1a81d3c3c5908bfd344d81d - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:51a834f95a81987525a99327a5f4852ce437d1d241f7e1c6b7d64b7ec409ce74 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:237d62d2d2addcaf37bc30dd4b1837a784f633daee4145fd96b6aab29588bc92
- Wolfi:
- Proxy Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:866765ec5f53f2749ba5ceeef484d69c9241a8e12b7d5ad8ab008c901283c4bc - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:1c3626fd50f41f5258c9fa416f15aec867a04655d3c6bc1ad58e6aa19f3c7777 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:4d08af0c3c2a8fffab6db31f32e9d8e01fbab1c313357a92f980ba76862249f9 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:18dccef04438c6320834f0dc347091aabb0cc49c0c5d7f792cefde4b3144546b
- Wolfi:
- PHP Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:4be38555551f749f2066b60347835a47fd01a7dd88936ac9a74aaee67040335d - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:22825279bf2ad04c0ab21d521a52874556ed6db188998b397ddd6a6fa81de0ae - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:0d62b27023de061c6d1d7be2166fac9a65a628514e2f239094859108123b5870 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:683a0cb53917e9c0108f37731921a000861597c90e68e7426e13474b4934d92b
- Wolfi:
- Load Balancer Build Container digests:
- Wolfi:
ghcr.io/valkyoth/fluxheim@sha256:1ea1f0176f8b1681338297c14211c72de587cdf8b750e3e350a129797322e822 - Alpine:
ghcr.io/valkyoth/fluxheim@sha256:14da2332e3e14472ecba66a640d47a34bc0ada92f917ad5e5c833018304a5592 - SUSE Micro:
ghcr.io/valkyoth/fluxheim@sha256:ca73a1d0c46e98e396b0d98d5472cf7c47858fcc71f884dd3c9efaedc99a7091 - Debian:
ghcr.io/valkyoth/fluxheim@sha256:04465b2dae5fce5fdb38037fd573320d4b23e6ce833350f6c3fe2cc219a66930
- Wolfi:
- Tag signature:
Good "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4