Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions planning/releases/0.4.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# faststream-redis-timers 0.4.0 — Python 3.11 & 3.12 support

The supported-Python floor drops from 3.13 to **3.11**, so the package now
installs and runs on 3.11, 3.12, 3.13, and 3.14. This release also fixes a
start-up task leak found while adding the wider CI matrix.

## Python 3.11 & 3.12 support

- `requires-python` lowered to `>=3.11,<4`; 3.11 and 3.12 classifiers added.
- Two 3.12-only constructs are backported via `typing-extensions` (now a direct
dependency, `>=4.12.0`): the `@override` decorators and the `RedisClient` type
alias (the latter via `typing.TypeAlias`, stdlib since 3.10). `typing.Self` and
`datetime.UTC` already exist in the 3.11 stdlib and are unchanged.
- CI now runs the full test suite on all four interpreters (3.11–3.14).
- No public-API change. The package is pure-Python; this is a compatibility and
packaging change for everyone already on 3.13/3.14, and a new option for
3.11/3.12 users.

## Bug fix

- **Failed broker start no longer orphans the poll task.** When `start()` timed
out (`start_timeout` elapsed before the subscriber signalled ready), the
background `_consume` poll task it had already spawned was left running,
holding a Redis connection. On slow runners this could deadlock teardown.
`start()` now cancels and awaits that task before re-raising, so a failed start
leaves nothing behind. Covered by a deterministic regression test.

## Downstream

Upgrading is a drop-in. If you were pinned to Python 3.13+ only because of this
package, you can now run it on 3.11 or 3.12. `typing-extensions>=4.12.0` is
pulled in automatically (it was already a transitive dependency via faststream).

## Internals

- 100% test coverage maintained (now 150 tests).