Skip to content

0.16.0

Latest

Choose a tag to compare

@github-actions github-actions released this 18 Jul 17:00
54848e2

httpware 0.16.0 — free-threading (nogil) support, Beta

Certifies httpware under free-threaded CPython (PEP 703), backed by CI
evidence rather than a bare classifier.

Feature

  • Free-threading support (Beta). Adds the
    Programming Language :: Python :: Free Threading :: 2 - Beta classifier.
    A new pytest-freethreaded CI job runs the full test suite (all extras) on
    free-threaded CPython 3.14t with the GIL disabled. Real-thread stress tests
    (marked pytest.mark.stress) exercise the thread-shared components — the sync
    Bulkhead, CircuitBreaker, and the shared RetryBudget — plus the httpx2
    connection pool, with zero cross-talk or crashes under parallelism; a separate
    deterministic test covers the single-event-loop guard's cross-loop rejection. 3.13t is deferred until msgspec ships a cp313t
    wheel (planning/deferred.md).

Why

httpware's resilience suite is built on threading.Lock/Semaphore and a
shared client across threads is a documented usage pattern; free-threaded
CPython removes the GIL that currently masks latent races. This release adds
the missing proof: a committed contention benchmark
(benchmarks/contention.py, planning/audits/2026-07-18-free-threading-audit.md)
found free-threaded 3.14t ~1.9x slower than GIL 3.11 for RetryBudget's
single-shared-lock hot loop — lock contention dominates that access pattern.
Free-threading support here is a correctness certification, not a
performance claim.

Downstream

No API changes. Safe to upgrade unconditionally; the classifier and CI job
are the only visible additions.

Internals

  • New stress pytest marker (architecture/testing.md): runs under the GIL
    too (counts toward coverage) but only proves thread-safety on 3.14t.
  • architecture/resilience.md, architecture/overview.md updated with the
    free-threading promotion.