Skip to content

Commit 13dbd9b

Browse files
lesnik512claude
andcommitted
docs(releases): 0.13.0 release notes
Free-threaded (3.14t) Python support: the Free Threading :: 2 - Beta classifier, the freethreaded CI job, and docs. No runtime/API change. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 4a1ed31 commit 13dbd9b

1 file changed

Lines changed: 54 additions & 0 deletions

File tree

‎planning/releases/0.13.0.md‎

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# faststream-outbox 0.13.0 — free-threaded (3.14t) Python support
2+
3+
**Minor release.** `faststream-outbox` now officially supports free-threaded
4+
(no-GIL) CPython. There is **no change to the installed package's runtime
5+
behavior or public API** — the producer, subscriber, lease/terminal-write,
6+
timer, DLQ, and validation paths are identical to 0.12.0. The only shipped delta
7+
is a new trove classifier; everything else is CI and docs.
8+
9+
## Breaking changes
10+
11+
None — additive packaging metadata only.
12+
13+
## Packaging
14+
15+
- Added the `Programming Language :: Python :: Free Threading :: 2 - Beta`
16+
classifier. On a `python3.14t` interpreter, `pip`/`uv` resolve the
17+
free-threaded (`cp314t`) wheels of the compiled dependencies (`asyncpg`,
18+
`sqlalchemy`, `pydantic-core`) automatically. No dependency-floor change; GIL
19+
builds are unaffected.
20+
21+
## Free-threaded support — what it means
22+
23+
- The package is pure-Python asyncio (one event loop, worker *tasks* not OS
24+
threads), so nothing in it depends on the GIL. CI now runs the full suite on
25+
the 3.14t interpreter and, in a separate step, asserts that importing the
26+
outbox and its runtime dependencies keeps the GIL disabled — so a future
27+
dependency that silently re-enables the GIL turns the build red.
28+
- **It does not add cross-core parallelism.** The subscriber is single-loop by
29+
design; to use more cores, run more subscriber processes — the same lever as
30+
on a GIL build.
31+
- **To keep the GIL genuinely disabled, set `DISABLE_SQLALCHEMY_CEXT_RUNTIME=1`.**
32+
SQLAlchemy's Cython extensions ship 3.14t wheels but don't yet declare
33+
free-thread safety, so importing SQLAlchemy otherwise re-enables the GIL
34+
process-wide (your outbox code runs correctly either way). Foreign-broker
35+
relay clients you install (e.g. `aiokafka`) can do the same. See the
36+
[Free-threaded Python docs](https://faststream-outbox.modern-python.org/introduction/installation/#free-threaded-python).
37+
- **3.14t only.** The compiled dependencies ship no `cp313t` wheels, so 3.13t
38+
is not a supported free-threaded target.
39+
40+
## Migration
41+
42+
No action needed — no API or behavior change. Existing installs on GIL builds
43+
(Python 3.11–3.14) are unaffected.
44+
45+
## Touched surface
46+
47+
- `pyproject.toml` — the new classifier.
48+
- `.github/workflows/_checks.yml` — the standalone `freethreaded` CI job.
49+
- `docs/introduction/installation.md` — a "Free-threaded Python" section.
50+
- `planning/` — the design change file and two decision records.
51+
52+
## See also
53+
54+
- #151 — Free-threaded Python (3.14t) support

0 commit comments

Comments
 (0)