Skip to content

Releases: eggstack/eggserve

0.5.0 release line

Choose a tag to compare

@dbowm91 dbowm91 released this 22 Oct 14:52

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); unsatisfiable Range with a failed If-Range serves 200 full (13.1.5); header combining is first-wins except If-Match/If-None-Match.
  • Framing: strict 1*DIGIT Content-Length (a non-numeric value is a 400); Http1Upgrade requires a protocol; an opaque Expect is 417.
  • Fail-closed: version_to_http and from_state return Result instead 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_policy replaces 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-Svc advertisement policy is single-sourced in eggserve-primitives.
  • The compatibility RuntimeConfig now 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 exhaustive RuntimeConfig struct 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, and quinn-proto versions 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.

0.4.0 release line

Choose a tag to compare

@dbowm91 dbowm91 released this 25 Sep 19:28

0.4.0 release line (Plan 300)

Rust artifacts (crates.io):

  • eggserve-primitives 0.2.2 (78fd797e45a374bfa419bc75f7e497653ce25e24cde0e771cc332e267f18355c)
  • eggserve-server 0.4.0 (fb601019a2914ae99f264640b66c80496a67b7ea3315fd0809747d4f22327e40)
  • eggserve-static 0.4.0 (c53bf2f2d92e660940676eb8b6bdff2ceae5ccaa8a056f14)
  • eggserve-h3 0.4.0 (ee9b47c7ca050cea49c40eb1fe6489948948b6d666fc3b2386983ef333c55f8a)
  • eggserve-core 0.4.0 (5cf75d63bdfbfa70a92c7884220addf032382099d3adabbd1bd38c0e798e48a7)
  • eggserve-bin 0.2.2 (c2e325351425331e9d6b330b0edb1c73ef4a0fccba3e4a85df617dabb3db4e45)

Highlights: direct-Tower feature edge (tower no longer activates tower-layer; downstream Layer authors depend on tower-layer directly) and H1 response-trailer wire delivery via head-time TrailerDeclaration (undeclared H1 sources suppressed before polling). H2/H3 tiers unchanged. Registry-only consumer proof: direct, Tower/Axum, and core-compat fixtures pass against the exact published versions with a core/static/PHF-free direct graph.

Wheel: eggserve 0.2.4 ships the 0.4.0 Rust code via the release workflow (TestPyPI qualification, then PyPI).

Source: d537d4d. Hosted CI 36176532051 (rust, supply-chain, python) green. Evidence: plans/closure/direct-h1-runtime/300-release-0-4-0-publication.md.

eggserve 0.2.0

Choose a tag to compare

@dbowm91 dbowm91 released this 22 Sep 23:04

EggServe 0.2.0 — pre-1.0 line (never publish this line as 0.1.x).

Python wheels (PyPI): one cp311-abi3 wheel per platform for GIL-enabled CPython 3.11-3.15 (3.15 proven on 3.15.0rc2; free-threaded unsupported). 10 required targets: manylinux x86_64/AArch64/ARMv7, musllinux x86_64/AArch64/ARMv7, macOS x86_64/arm64 (deployment floor 11.0), Windows x86_64/ARM64.

Rust crates (crates.io): eggnet-tls, eggserve-primitives, eggserve-server, eggserve-static, eggserve-h3, eggserve-core, eggserve-bin — all at 0.2.0.

Qualification evidence: release/plan-269-wheel-release-execution-closure.md (no-publish closure) plus Release run 35792969150 (publish run: full pre-publication graph green, PyPI upload success, post-publish binary-only smoke green). Migration guidance: docs/migration-guide.md.