Repository navigation
0.5.0 release line (Plan 305)
Rust artifacts (crates.io):
- eggserve-primitives 0.2.3 (
378f63b29a0019e028d57d85c9be10a5605084ad1267aec7845af5ae4ebe0cd1) - eggserve-server 0.5.0 (
a43e40e45fe5b40eb9af2c4f7481d3645dc7d612b660a4f4cdf82348934a141a) - eggserve-static 0.5.0 (
831083fbe104282bd7b03685c755a74246c3b822e442fa36c7b7610369b6fc81) - eggserve-h3 0.5.0 (
ca36bc53c7b97f1b116f19c999adea22c1f5a8f0f6a4ef98c66554d3fb373ce0) - eggserve-core 0.5.0 (
c55ab91cc304ba45fc9d2d0a87fc136e2b0d795234d5c01b1ad059dde1851de9) - eggserve-bin 0.2.3 (
0cdd61605e470a16053834b25c2007fbe4d6f9b634d3adb6ed81f6de9eca3590)
This is the corrective line. The 0.4.0 line shipped on 2026-09-25 without the defect batch that landed in the repository immediately after the v0.4.0 tag, so the published 0.4.0 crates carry the conditional-request, header-combining, framing-strictness, fail-closed-negotiation, confinement-inheritance, and Python callback-permit defects. This line publishes that batch.
Highlights:
- Conditional requests:
If-Match: *requires an ETag (RFC 9110 13.1.1); unsatisfiableRangewith a failedIf-Rangeserves200full (13.1.5); header combining is first-wins exceptIf-Match/If-None-Match. - Framing: strict
1*DIGITContent-Length(a non-numeric value is a400);Http1Upgraderequires a protocol; an opaqueExpectis417. - Fail-closed:
version_to_httpandfrom_statereturnResultinstead of panicking or silently downgrading. - Confinement: child resolution inherits the confined backslash policy; fd-relative resolution re-applies the platform component checks.
- Durability: a buffer-export failure fails the stream instead of truncating it silently; shutdown drain is bounded by
graceful_shutdown_timeout. - One runtime-error authority:
eggserve-primitives::canonical::runtime_error_with_policyreplaces two parallel builders; the wire output is proven byte-identical across a 44-cell matrix. - The Plan 253 connection-overlap ledger is corrected, measured, and machine-checked by a drift bound in the topology gate; the HTTP/3
Alt-Svcadvertisement policy is single-sourced ineggserve-primitives. - The compatibility
RuntimeConfignow carries the four direct-H1 ownership values with unchanged defaults; its builder delegates 37 of its 38 shared setters to the direct builder. This is source-incompatible for exhaustiveRuntimeConfigstruct literals (the Plan 285 class), which is why the line is a minor bump — see the migration guide. - Dependency advisories: the resolved
rustls,rustls-webpki, andquinn-protoversions are patched (the manifest requirement floors are unchanged). - crates.io metadata: the README's repository links are absolute (relative links were rewritten by crates.io into 404s), docs.rs renders the feature-gated surfaces, and the two crates whose inherited keywords misdescribed them now declare accurate ones.
H2/H3 tiers unchanged. Safe defaults unchanged (loopback bind, path confinement, no symlinks, no dotfiles, no directory listing).
Wheel: eggserve 0.2.5 ships the 0.5.0 Rust code via the release workflow (PyPI).
Source: 326aa1e. Hosted CI 39794834966 (rust, supply-chain, python) green on the exact SHA. Evidence: plans/closure/direct-h1-runtime/305-corrective-040x-publication.md.