Fluxheim 1.6.31 #106
Closed
eldryoth
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Fluxheim 1.6.31 Release Notes
Fluxheim 1.6.31 starts the cache/PHP native-integration slice of the Pingora
exit work.
Highlights
explicit blocker reasons instead of folding them into the generic HTTP policy
bucket.
and PHP-FPM policies until those adapters are implemented, so callers cannot
bypass the planner and silently drop policy.
the Pingora-independent
fluxheim-cachecrate. The root compatibility moduleonly wraps those shared keys into Pingora cache keys while that runtime path
remains.
NativeHttp1Requestnow implements thefluxheim-cacherequest-view trait,allowing the native proxy to reuse cache bypass, revalidation, range, and
slice policy helpers without a Pingora request header.
fluxheim-php-fpmcrate and returns plain status/header/body parts. The rootproxy path only converts those parts into the current runtime response type.
mapping now live in
fluxheim-php-fpm, giving the native and compatibilitypaths one shared policy for bounded, control-free PHP params.
SERVER_NAMEfallback selection now also lives influxheim-php-fpm,keeping host/fallback sanitization shared by native and compatibility paths.
HTTP_HOSTinsertion,CONTENT_TYPEvalue selection, and runtime custom-param filtering now livein
fluxheim-php-fpm; the current proxy path only applies those generatedpairs to
fastcgi_client::Params.SCRIPT_FILENAMEand safePATH_TRANSLATEDgeneration now lives influxheim-php-fpm, keeping dotsegment, hidden path, backslash, and control-byte rejection shared.
SCRIPT_NAME/PATH_INFOparsing, allowed-extensionmatching, and deny-prefix checks now live in
fluxheim-php-fpm; the proxystill owns static-file lookup and final execution decisions.
decisions now live in
fluxheim-php-fpm, sharing root confinement, hiddenpath rejection, and extension checks across native and compatibility paths.
fluxheim-php-fpm,including X-Accel-Redirect control-byte rejection, X-Sendfile
fpm_rootmapping, and PHP-script offload blocking.
now live in
fluxheim-php-fpm, giving native PHP response handling the samecache safety rules as the compatibility path.
fluxheim-php-fpm,including hop-by-hop headers,
Connectiontokens, configured hidden headers,and static-offload internal headers.
fluxheim-php-fpm, keeping native and compatibility response handling on onestatus policy.
CONTENT_TYPEjoins, rejects extensionless static-offload files, ignores invalid
Connectionheader tokens before response stripping, and asserts ASCII-onlyparser invariants.
CONTENT_TYPEjoining now caps and validates during accumulation insteadof building an oversized intermediate string before rejecting it.
fluxheim-static-v1;prefix, matching the static-cache namespace used by the compatibility cache
wrapper and making raw key inspection unambiguous.
cache.local_staticadapter, reusing shared cache admission, bypass,revalidation, TTL, status-header, and file-identity key policy.
cache.local_staticadapter and still falls through to the vhost proxyfallback when a static file is not found.
overhead, cache-key bytes, reason bytes, and response-header bytes before
admission, preventing small cached objects from undercounting memory use.
Instant::now()oncefor stored/expiry time and avoids running the prune pass inside the initial
insert lock; pruning also avoids full-table vector allocation and sorting.
blockers: vhost cache, proxy/image cache, disk cache, and non-static route
cache remain compatibility-runtime work until their adapters are implemented.
memory local-static cache adapter, so those routes no longer make an
otherwise native-ready vhost fallback proxy look unsupported.
collection now live in
fluxheim-php-fpm; the root crate keeps only a thincompatibility adapter for the current PHP runtime.
fluxheim-php-fpmbehind asmall metrics callback boundary, so connection reuse, stale idle pruning,
pool labels, and bounded response collection are owned by the PHP crate.
through
proxy.upstream_proxy_protocol, using Fluxheim-owned frame buildersand writing the header before upstream TLS or HTTP bytes.
pooling is disabled for those upstreams, and native HTTP/2 upstream
combinations fail closed until multiplexed per-request identity can be
represented safely.
trusted-forwarded effective client address, so upstream PROXY protocol uses
the same client identity as native ACL/rate-limit/header policy.
upstream PROXY protocol sends source port
0, the documented unknown-portvalue, because forwarded headers do not include the original client port.
configured vhost and dispatches exact and wildcard Host matches with the same
default-vhost fallback behavior as the compatibility runtime.
Fluxheim-owned service/listener/background-task graph for blocker-free plans,
giving the final runner replacement a tested orchestration contract without
changing production execution yet.
UDP listener bind intents before reporting the native adapter as the target,
while still allowing TCP and UDP listeners to share the same address.
so concrete runner-contract failures are visible even when the high-level
blocker summary is otherwise ready.
and HTTP/2 launch-policy rows, giving final-runner hardening values a stable
diffable contract.
NativeHttp1Requestnow implements the load-balancer request-view traitbehind the
fluxheim-server/load-balancerfeature, preparing nativepersistence and hash selection to consume native request metadata without a
Pingora request adapter.
SelectedUpstreamnow exposes stable address and authority accessors, givingnative callers a public bridge from Fluxheim-owned load-balancer selection to
upstream connection setup without reaching into backend internals.
persistence outcomes, managed affinity cookies, reporters, and permit
presence, completing the native routing metadata bridge.
existing Prometheus response generator, giving the future native runner a
direct handler for metrics HTTP.
and root compression config before cutover planning marks a root proxy as
native-ready.
[[vhosts]], so the future native runner can instantiate the same rootproxy shape that the planner reports as native-ready.
[[vhosts]], including the supported local-static memory cache mode. Rootdisk/rich cache modes remain explicit native cache blockers.
and PHP-FPM blockers even when the vhost has no configured upstream proxy,
matching the native host-router construction path.
cache, and PHP-FPM candidates when a route has no upstream proxy, making
route-level native blockers visible instead of folding them into the parent
vhost or fallback proxy summary.
before sleeping, so delayed requests still count against configured
concurrency budgets instead of occupying listener tasks outside those limits.
replacing whole-shard
HashMap::retainsweeps in the request hot path with asmall prune queue scan when a shard is full.
instead of using only the final address byte, reducing attacker-controlled
hot-shard concentration when many trusted forwarded identities are present.
routes indeterminate-client buckets through that seeded hash path instead of
pinning them to shard zero.
Instantarithmetic, avoiding panic surfaces if a bucket timestamp is everobserved ahead of the current sample.
percent-encoding after the initial decode pass, avoiding ambiguous
double-encoded traversal forms on fallback static serving.
token with
sanitizationconstant-time equality. The current compatibilitymetrics listener still relies on listener binding and network ACLs until the
final native runner cutover wires token configuration into service creation.
holds vhost/route concurrency permits while sleeping, keeping delayed tasks
inside the configured concurrency budget instead of allowing unbounded
sleepers outside the cap.
sanitizationto 1.2.2 andbase64-ngto 1.2.3 across the root,server, TLS, and load-balancer crates.
aligned with the roadmap: 1.6.31 is the cache/PHP adapter release, and 1.6.32
remains the final Pingora-free proof release.
Test Notes
PHP-FPM, and route PHP-FPM native cutover blockers.
policies are rejected directly until native adapters own those paths.
duplicate weighted upstream slots before trying the next unique backend.
traversal rejection.
fluxheim-cachetests for cache-key construction,namespace/query/host normalization, and local-static file identity.
NativeHttp1Requestfor origin-form and absolute-form targets, duplicateheaders, and range-policy rejection.
fluxheim-php-fpmtests for plain PHP response parsing,unsafe header rejection, and response/header size limits, then re-ran the
existing root parser compatibility tests with
php-fpmenabled.fluxheim-php-fpmtests for FastCGI param value bounds,control-byte rejection, and deterministic HTTP header param-name mapping.
SERVER_NAMEfallbackbehavior when the request host is unsafe.
fluxheim-php-fpmtests for duplicate request-headerjoining,
Proxyheader blocking, joined-value caps, safeHTTP_HOSTinsertion, content-type selection, and runtime custom-param filtering.
fluxheim-php-fpmtests for split-container scriptfilename mapping and unsafe
PATH_INFOrejection, plus the existing rootcompatibility test for PHP
fpm_rootmapping.fluxheim-php-fpmtests for direct script detection,front-controller fallback, PATH_INFO split mode, unsafe segment rejection,
allowed-extension matching, and deny-prefix matching.
fluxheim-php-fpmtests for static file script-name mappingand directory-index redirect decisions, plus existing root compatibility
coverage for slashless PHP directory indexes.
fluxheim-php-fpmtests for PHP static-offload path policy,plus root compatibility coverage for X-Accel-Redirect and X-Sendfile
handling.
fluxheim-php-fpmtests for X-Accel-Expires TTL parsing andrestrictive origin cache-policy detection, plus existing root compatibility
coverage for absolute-epoch parsing.
fluxheim-php-fpmtests for PHP response-header strip listsand internal static-offload header names, plus existing root compatibility
coverage for hidden response headers.
fluxheim-php-fpmtests for PHP error-page/statusinterception decisions, plus existing root compatibility coverage for PHP
custom error pages.
Connectiontoken filtering.CONTENT_TYPErejects control bytes andover-limit joined values without retaining the oversized joined result.
fluxheim-cachetests to assert the local-static keyprefix is
fluxheim-static-v1;.local-static cache returns
MISSon the first request andHITon a secondrequest through the native listener.
returns
MISS/HITthrough the native listener, plus cutover-plan coveragefor the supported vhost static-cache shape.
weight accounting and expired/oldest-entry pruning behavior.
memory local-static cache adapter.
routes do not block native HTTP/1 proxy cutover candidates.
fluxheim-php-fpmtests for in-memory request-body replay,secure spool-file replay/cleanup, and combined FastCGI stdout/stderr response
size accounting, while keeping root PHP compatibility tests green.
labels remain stable after the pool move.
written before HTTP request bytes, plus a live native proxy listener test
proving listener destination metadata reaches the upstream PROXY line.
accepted, origin pooling is disabled for it, and HTTP/2 upstream
combinations fail closed.
longest-suffix matching, unknown/missing Host fallback, and default-vhost
config validation.
blockers and blocker-free multi-service plans expose proxy, admin, metrics,
stream, UDP, ops-socket, and listener bindings.
served through the
NativeHttp1Handlerboundary and a live native HTTP/1listener.
GET/HEAD /metricsisserved, with HEAD returning the Prometheus content length without a body.
set, and appended through the root config constructor, plus planner coverage
for non-default root response headers.
without vhosts and truly empty configs still fail closed.
supported root local-static memory cache is native-ready and unsupported root
disk cache still fails closed as a cache blocker. The root static-web
host-router test also proves the native memory cache returns
MISSthenHITthrough a live listener.unsupported static-web disk cache, and PHP-FPM so policy blockers remain
visible without an upstream proxy candidate.
endpoint is served correctly through the native HTTP/1 listener.
showing the Fluxheim-owned service/listener/background-task graph while the
compatibility runtime remains active.
background-task rows, so CI archives the exact native service graph that the
final runner will consume.
the native target adapter disabled, while TCP and UDP listeners on the same
address remain valid because they use distinct kernel transports.
duplicate listener binds.
hardening values.
header values, and Cookie headers are exposed to
fluxheim-load-balancer.NativeHttp1Requestdrivesreal load-balancer header-hash selection through the shared request-view
boundary.
selected-upstream metadata accessors.
persistence constant-time comparisons, and TLS secret handling after the
dependency refresh.
policy gate against the 1.6.31 planning state.
Checksums And Signatures
1f6674226276f9b0fb3b93014e4dc3ca70bc5fe2[MANUAL_SHA256] fluxheim-1.6.31.tar.gz[MANUAL_SHA256] fluxheim-1.6.31.zipcac073bbc123c306916c0a1d8c203a3411a0a7a0a96e6a36062d99462eed35c4 fluxheim-1.6.31-full-x86_64-linux.tar.gzfc86dd1744316aa0a5cc1fd4fc9ea0a3d9caa65d07c3b2c5bb02f2d6f44b1a87 fluxheim-1.6.31-cache-x86_64-linux.tar.gz35d13d3e3bfc3d0058a7cc29f86e0f5bdeddb99c86e9390d916ef89d5d2eed3e fluxheim-1.6.31-proxy-x86_64-linux.tar.gzd6ddd70411b9b3b434553681a0c14f812fa0b995810f4c34df55df8127abe1e7 fluxheim-1.6.31-php-x86_64-linux.tar.gzb366b343b8b561fbc51fe80ab133b50433b1f7065bd139d6ccc563b1cb9be13c fluxheim-1.6.31-load-balancer-x86_64-linux.tar.gz0b20544305015f5aee973019ad4876618208206e056ee3d0f77ed024fa42e8fc fluxheim-1.6.31-config-tester-x86_64-linux.tar.gz377ee0359b9cd777639432a582d9c5cf460a6414e214ea6358212c3e5cde037e fluxheim-1.6.31-full-aarch64-linux.tar.gz5d7d390f648bfc53a68c952b0413998b3f5748849befd8b95d6e43f21ed5f0c4 fluxheim-1.6.31-cache-aarch64-linux.tar.gz7c020f3df1c04bdae27cbd72468adc105d1658804c61dbcea480f703366f2073 fluxheim-1.6.31-proxy-aarch64-linux.tar.gz55a99fde8ee46616d0fdd1a3eb6420c877284767e64446264f3be053b4876930 fluxheim-1.6.31-php-aarch64-linux.tar.gzd21a359397ea54b60bbf86e54115b848c6e4cb17f7a8800d367b998ced983ec3 fluxheim-1.6.31-load-balancer-aarch64-linux.tar.gzab44f7024207397f1f7abb1619e0489290759cf16d88665e40e1c2da5d41c03a fluxheim-1.6.31-config-tester-aarch64-linux.tar.gz2bb29762909fb89d268077807458babfad9de9e1f3a496d594c9cde7b34ff10a fluxheim-1.6.31-dev-aarch64-macos.tar.gzf5de6896deb2b2e3d2f3c93056043d772de9eda777c11a1f31618870cbcf1266 fluxheim.spdx.jsone4ed4493265b5e856fd03b862297fe4f906d8c6264ffb233752a44ddcdd1ab79 fluxheim.cyclonedx.json86fc14f50f855c463031ecf929eb4fbc8d4f4246dd5f47b72e475a890d18fcaex86_642a8bea99a3feb90b55d014bb54da0eadd3594bb484820f1d38a94b121483298baarch64a9f4f26267421bd2e57465304d40afcad1264ac897d4bc399b094c13df78a978macosghcr.io/valkyoth/fluxheim@sha256:1ec3aadab1b78e41c8a230e1cb3530258115bc0579fb36a5849f082287a9f586ghcr.io/valkyoth/fluxheim@sha256:b8651a28c479556fab821a6075820b1477909e5351113244c154e5ee399b6aa4ghcr.io/valkyoth/fluxheim@sha256:6bd1e1e6e859e2247767851c5ffed7d641fa454fb1810f9bf8f56136c192f201ghcr.io/valkyoth/fluxheim@sha256:0d1d7772559cb2a0eaf010298caa3d1b5afae22ff545e21c499f15bb1fa78a0eghcr.io/valkyoth/fluxheim@sha256:aa453a5e71e3a96a83651fce55b415f7e6a687cdc60dfdc4a1b692d5c828636bghcr.io/valkyoth/fluxheim@sha256:a7fc2343e453e9bac4c8d661c5f7148966b3e63cccab89e407fb2ed1ce105556ghcr.io/valkyoth/fluxheim@sha256:1a0b7c8917c2846e5d0ba8a8189733e32227583062de19c471b94e9a58cb17fdghcr.io/valkyoth/fluxheim@sha256:834278d586b132513098bc7d554e0fe2ab7777917b58d0c1b3750e64ade03e3fghcr.io/valkyoth/fluxheim@sha256:bedb716c4ecd24e3b5005e8b9d91e524e6568ae315c614b1705040a8bb724528ghcr.io/valkyoth/fluxheim@sha256:c85bb998fbe482b15d185ad8a98d0c15bf6b6ccbc9a3726dbb1485e1415402d6ghcr.io/valkyoth/fluxheim@sha256:33eead14bbdbf974e84b32e971f7b4b521c6fdc3ebf12412037726b95e063460ghcr.io/valkyoth/fluxheim@sha256:41805cd513ba86d0280951aa83a60c8fa47ee8deddc0b3734e0bac0f7593ebd5ghcr.io/valkyoth/fluxheim@sha256:3c15aaf653aba6500ecd0f9391ea200f42c607f82d265fee86b6e2ec6f4b3904ghcr.io/valkyoth/fluxheim@sha256:266937674f3db5cc496edd44691d52b317cacd5ab1da880fdee1b336bcd1c5ffghcr.io/valkyoth/fluxheim@sha256:0bd6ecad9b3573198d3eed0160b1a30414e71e1ed0c482b5c6edaa019cb26fffghcr.io/valkyoth/fluxheim@sha256:0e8e6c49a76bcba621b506821beb98b77bd53ca00c9de0f48399676457ae4b3bghcr.io/valkyoth/fluxheim@sha256:364d0c47c25c0414114e0c318a4ed5ceca7f76d3b239b383a7ef9847feb9b8d7ghcr.io/valkyoth/fluxheim@sha256:868c8334674088c6025748111384f51f785660181b04b67c55670b200b60009dghcr.io/valkyoth/fluxheim@sha256:55dc9cea996393654206d4e654556fcd4168460d1613bf9ed97954d39e27edf0ghcr.io/valkyoth/fluxheim@sha256:b10b2e97e48578b3609302078df9224fd32835e45fbfcfde191734541a5dc1bdGood "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4This discussion was created from the release Fluxheim 1.6.31.
Beta Was this translation helpful? Give feedback.
All reactions