From cd6af15888716e363bb7f8dea7aa9444084b73c6 Mon Sep 17 00:00:00 2001 From: William Barnhart Date: Sun, 19 Jul 2026 15:56:35 +0000 Subject: [PATCH 1/6] docs: prepare v0.12.0 release notes and changelog Resume the Keep a Changelog format (dormant since v0.8.10) with a v0.12.0 section, and add standalone GitHub release notes covering the changes since v0.11.3 plus the pending fix stack. Highlights: two offset data-loss fixes (#606/#707, #316/#692), the re-added confluent-kafka driver, Python 3.14 support (3.8/3.9 dropped), OpenTracing/OpenTelemetry made optional, and a live-broker CI harness. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01HHPL4VFWQRQPpjR1gXSKyL --- CHANGELOG.md | 65 ++++++++++++++++++++++++++++++ RELEASE_NOTES_v0.12.0.md | 86 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 151 insertions(+) create mode 100644 RELEASE_NOTES_v0.12.0.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 0907bc736..c2fbfa3a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,71 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + + +## [v0.12.0](https://github.com/faust-streaming/faust/releases/tag/v0.12.0) - UNRELEASED + +[Compare with v0.11.3](https://github.com/faust-streaming/faust/compare/v0.11.3...v0.12.0) + +### Added +- Re-add the confluent-kafka transport driver (`confluent://`, install with the + `faust[ckafka]` extra), rewritten and tested against the released + `confluent-kafka` API. +- Support Python 3.14 (tested with and without the Cython extensions). +- Optional OpenTelemetry instrumentation via the `faust[opentelemetry]` extra, + with documentation in the sensors user guide (#688, #681). +- `on_clear` handlers on `(Global)Table` and `ChangeloggedSet` (#645). +- New `web_application_options` setting to configure the web application + (#551, #704). +- Live-broker integration test harness: CI now starts a real Kafka broker and + round-trips messages through both the aiokafka and confluent-kafka client + libraries (#706). + +### Changed +- **Dropped support for Python 3.8 and 3.9** (#650); the minimum supported + version is now Python 3.10. +- **OpenTracing is now an optional dependency** — install it with the + `faust[opentracing]` extra (#685, #686). +- Replaced the unmaintained `aredis` with `redis-py` for the Redis store and + leader (#635). +- Support `aiokafka` 0.13.0, which removed the `api_version` parameter (#674); + guard aiokafka metadata/admin calls by the negotiated protocol-API version and + keep the Faust partition assignor for changelog tables (#682). +- Modernize CI and wheel building: updated wheel runners, Windows wheels, a + refreshed `cibuildwheel`, and an updated test matrix (#690). +- Pin `black`/`isort` and update the `click` constraint for reproducible CI + (#677, #680). +- Add `codecov.yml` with a 1% coverage threshold (#683). + +### Fixed +- **Data loss:** never commit past an in-flight (unacked) message — offsets for + a gap ahead of the smallest unacked offset are no longer committed prematurely + (#606, #707). +- **Data loss:** don't advance committed-offset bookkeeping when the commit + itself fails (#316, #692). +- Parse ISO-8601 string fields in `relative_to_field()` (#389, #700). +- Record event runtime for events acked via `stream.take()` (#319, #701). +- Don't crash while collecting actor tracebacks for finished coroutines + (#105, #698). +- Allow `test_context()` for sink-less (non-yielding) agents (#433, #699). +- Don't crash the livelock detector when the consumer has not started yet + (#446, #702). +- Skip the end-offset metric when the highwater is unknown (`None`) (#214, #703). +- Preserve the original event timestamp in `Event.forward` (#427, #705). +- Don't crash when publishing a message with a non-bytes key (#513, #695). +- Harden reply-topic creation against a hardcoded `replicas=0` that broke + `.ask()` (#76, #694). +- Respect an explicit autodiscover module list under Django (#500, #697). +- Fix Prometheus latency histograms mis-scaled by 1000x (#260, #693). +- Add `charset=utf-8` to JSON web responses on the orjson (bytes) path + (#557, #696). +- Fix release-artifact upload/download for `upload-artifact@v4` (#684). + ## [v0.8.10](https://github.com/faust-streaming/faust/releases/tag/v0.8.10) - 2022-09-14 [Compare with v0.8.9](https://github.com/faust-streaming/faust/compare/v0.8.9...v0.8.10) diff --git a/RELEASE_NOTES_v0.12.0.md b/RELEASE_NOTES_v0.12.0.md new file mode 100644 index 000000000..0c48f177c --- /dev/null +++ b/RELEASE_NOTES_v0.12.0.md @@ -0,0 +1,86 @@ +# faust-streaming 0.12.0 + +> Set the release date at tag time. This is the first `CHANGELOG.md`-tracked +> release since v0.8.10; v0.9.0–v0.11.3 are documented only in their GitHub +> release notes. + +This release drops end-of-life Python versions, makes tracing dependencies +opt-in, re-introduces the confluent-kafka driver, and fixes two data-loss bugs +in offset handling. Please read the **Breaking changes / upgrade notes** before +upgrading. + +## Highlights + +- **Two data-loss fixes in offset handling.** Faust no longer commits past an + in-flight (unacked) message (#606, #707), and no longer advances committed + offsets when the commit itself fails (#316, #692). Both could silently skip + unprocessed messages after a restart or rebalance. +- **confluent-kafka driver is back.** Use it with `confluent://` broker URLs + after installing the `faust[ckafka]` extra. It has been rewritten and tested + against the released `confluent-kafka` API. +- **Python 3.14 supported; 3.8 and 3.9 dropped.** The supported range is now + Python 3.10–3.14. +- **Tracing is now opt-in.** OpenTracing moved behind `faust[opentracing]`, and + new OpenTelemetry instrumentation is available via `faust[opentelemetry]`. +- **A real Kafka broker now runs in CI**, round-tripping messages through both + the aiokafka and confluent-kafka client libraries (#706), giving us a + foundation for broker-dependent regression tests. + +## Breaking changes / upgrade notes + +- **Python 3.8 and 3.9 are no longer supported** (#650). The minimum is now + Python 3.10. Pin `faust-streaming<0.12` if you are still on an older + interpreter. +- **OpenTracing is no longer installed by default** (#685, #686). If you rely on + OpenTracing tracing, change your dependency to `faust-streaming[opentracing]`. +- **`aredis` has been replaced by `redis-py`** for the Redis store and leader + (#635). No code change is required for typical `redis://` usage, but custom + integrations that imported `aredis` internals will need updating. +- **confluent-kafka is an optional extra.** `confluent://` broker URLs require + `faust-streaming[ckafka]`. + +## Added + +- Re-add the confluent-kafka transport driver (`confluent://`, + `faust[ckafka]`), rewritten against the released `confluent-kafka` API. +- Support Python 3.14 (with and without Cython). +- Optional OpenTelemetry instrumentation via `faust[opentelemetry]`, documented + in the sensors user guide (#688, #681). +- `on_clear` handlers on `(Global)Table` and `ChangeloggedSet` (#645). +- `web_application_options` setting to configure the web application + (#551, #704). +- Live-broker integration test harness in CI (#706). + +## Changed + +- Dropped support for Python 3.8 and 3.9 (#650). +- OpenTracing is now an optional dependency (#685, #686). +- Replaced `aredis` with `redis-py` (#635). +- Support `aiokafka` 0.13.0 (removed `api_version`); guard aiokafka + metadata/admin calls by protocol-API version and keep the Faust assignor for + changelog tables (#674, #682). +- Modernize CI and wheel building — wheel runners, Windows wheels, cibuildwheel, + and the test matrix (#690). +- Pin `black`/`isort` and update the `click` constraint for reproducible CI + (#677, #680). +- Add `codecov.yml` with a 1% coverage threshold (#683). + +## Fixed + +- Never commit past an in-flight (unacked) message (#606, #707). +- Don't advance committed-offset bookkeeping when the commit fails (#316, #692). +- Parse ISO-8601 string fields in `relative_to_field()` (#389, #700). +- Record event runtime for events acked via `stream.take()` (#319, #701). +- Don't crash collecting actor tracebacks for finished coroutines (#105, #698). +- Allow `test_context()` for sink-less (non-yielding) agents (#433, #699). +- Don't crash the livelock detector when the consumer isn't started (#446, #702). +- Skip the end-offset metric when the highwater is `None` (#214, #703). +- Preserve the original event timestamp in `Event.forward` (#427, #705). +- Don't crash publishing a message with a non-bytes key (#513, #695). +- Harden reply-topic creation against a hardcoded `replicas=0` (#76, #694). +- Respect an explicit autodiscover module list under Django (#500, #697). +- Fix Prometheus latency histograms mis-scaled by 1000x (#260, #693). +- Add `charset=utf-8` to JSON responses on the orjson path (#557, #696). +- Fix release-artifact upload/download for `upload-artifact@v4` (#684). + +**Full changelog:** https://github.com/faust-streaming/faust/compare/v0.11.3...v0.12.0 From 68084389db19e46c75e6db24c9a8747bba4daad5 Mon Sep 17 00:00:00 2001 From: William Barnhart Date: Sun, 19 Jul 2026 16:14:30 +0000 Subject: [PATCH 2/6] docs: drop closed codecov.yml PR (#683) from v0.12.0 notes PR #683 (codecov.yml with a 1% coverage threshold) was closed without merging, so remove it from the changelog and release notes to keep the v0.12.0 change list accurate. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01HHPL4VFWQRQPpjR1gXSKyL --- CHANGELOG.md | 1 - RELEASE_NOTES_v0.12.0.md | 1 - 2 files changed, 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c2fbfa3a9..a2576e5e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,7 +43,6 @@ resumes the Keep a Changelog format. Set the release date at tag time. refreshed `cibuildwheel`, and an updated test matrix (#690). - Pin `black`/`isort` and update the `click` constraint for reproducible CI (#677, #680). -- Add `codecov.yml` with a 1% coverage threshold (#683). ### Fixed - **Data loss:** never commit past an in-flight (unacked) message — offsets for diff --git a/RELEASE_NOTES_v0.12.0.md b/RELEASE_NOTES_v0.12.0.md index 0c48f177c..3c68c0146 100644 --- a/RELEASE_NOTES_v0.12.0.md +++ b/RELEASE_NOTES_v0.12.0.md @@ -63,7 +63,6 @@ upgrading. and the test matrix (#690). - Pin `black`/`isort` and update the `click` constraint for reproducible CI (#677, #680). -- Add `codecov.yml` with a 1% coverage threshold (#683). ## Fixed From 45cd2dd89cf539da8f25806febec4c962cde6cb5 Mon Sep 17 00:00:00 2001 From: William Barnhart Date: Sun, 19 Jul 2026 16:35:07 +0000 Subject: [PATCH 3/6] docs: derive Sphinx version from the package instead of a stale constant `docs/conf.py` hardcoded `version_dev='1.1'` / `version_stable='1.0'` - robinhood-era values that never matched faust-streaming's 0.x line, so the published GitHub Pages docs advertised the wrong version. Derive the documented major.minor from `faust.__version__` (which setuptools_scm resolves from the git tag), so the docs always report the real version and this can't silently drift between releases. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01HHPL4VFWQRQPpjR1gXSKyL --- docs/conf.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index c563f3628..79af6be81 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,16 +1,24 @@ # -*- coding: utf-8 -*- import sys from contextlib import suppress + +import faust from sphinx_celery import conf extensions = [] # set by build_config sys.path.append('.') +# Derive the documented version (major.minor) from the installed package, which +# setuptools_scm resolves from the git tag. Keeping this dynamic means the +# published docs always report the real version instead of a hardcoded string +# that silently goes stale between releases. +_docs_version = '.'.join(faust.__version__.lstrip('v').split('.')[:2]) + globals().update(conf.build_config( 'faust', __file__, project='Faust', - version_dev='1.1', - version_stable='1.0', + version_dev=_docs_version, + version_stable=_docs_version, canonical_url='https://faust-streaming.github.io/faust', webdomain='', github_project='faust-streaming/faust', From 82ec103846fdd802b6fe0718fd244e347511d6bc Mon Sep 17 00:00:00 2001 From: William Barnhart Date: Sun, 19 Jul 2026 18:06:45 +0000 Subject: [PATCH 4/6] docs: scope v0.12.0 notes to merged work; note dependency updates Per review, the v0.12.0 changelog/release notes should describe only what is already on master, not work still in open PRs. - Remove the not-yet-merged items: the offset-commit data-loss fixes (#606/#707, #316/#692), the optional OpenTracing/OpenTelemetry extras (#685/#686, #688/#681), web_application_options (#704), and the reported-issue fix stack (#693-#703, #705). These will be added back as they merge. - Add a Dependencies section noting the current runtime/client libraries: mode-streaming >= 0.4.0, aiokafka >= 0.10.0 (compatible with recent 0.13/0.14 releases), the new confluent-kafka >= 2.0.0 for faust[ckafka], and the faust-cchardet fork replacing unmaintained cchardet. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01HHPL4VFWQRQPpjR1gXSKyL --- CHANGELOG.md | 52 +++++++++++++------------------- RELEASE_NOTES_v0.12.0.md | 65 +++++++++++++++++----------------------- 2 files changed, 48 insertions(+), 69 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2576e5e0..3ad75e921 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,16 +15,19 @@ resumes the Keep a Changelog format. Set the release date at tag time. [Compare with v0.11.3](https://github.com/faust-streaming/faust/compare/v0.11.3...v0.12.0) + + ### Added - Re-add the confluent-kafka transport driver (`confluent://`, install with the `faust[ckafka]` extra), rewritten and tested against the released `confluent-kafka` API. -- Support Python 3.14 (tested with and without the Cython extensions). -- Optional OpenTelemetry instrumentation via the `faust[opentelemetry]` extra, - with documentation in the sensors user guide (#688, #681). +- Support Python 3.13 and 3.14 (tested with and without the Cython extensions). - `on_clear` handlers on `(Global)Table` and `ChangeloggedSet` (#645). -- New `web_application_options` setting to configure the web application - (#551, #704). - Live-broker integration test harness: CI now starts a real Kafka broker and round-trips messages through both the aiokafka and confluent-kafka client libraries (#706). @@ -32,42 +35,29 @@ resumes the Keep a Changelog format. Set the release date at tag time. ### Changed - **Dropped support for Python 3.8 and 3.9** (#650); the minimum supported version is now Python 3.10. -- **OpenTracing is now an optional dependency** — install it with the - `faust[opentracing]` extra (#685, #686). - Replaced the unmaintained `aredis` with `redis-py` for the Redis store and leader (#635). -- Support `aiokafka` 0.13.0, which removed the `api_version` parameter (#674); - guard aiokafka metadata/admin calls by the negotiated protocol-API version and - keep the Faust partition assignor for changelog tables (#682). +- Support recent `aiokafka` releases: handle 0.13.0 removing the `api_version` + parameter (#674), and guard aiokafka metadata/admin calls by the negotiated + protocol-API version while keeping the Faust partition assignor for changelog + tables (#682). - Modernize CI and wheel building: updated wheel runners, Windows wheels, a refreshed `cibuildwheel`, and an updated test matrix (#690). - Pin `black`/`isort` and update the `click` constraint for reproducible CI (#677, #680). ### Fixed -- **Data loss:** never commit past an in-flight (unacked) message — offsets for - a gap ahead of the smallest unacked offset are no longer committed prematurely - (#606, #707). -- **Data loss:** don't advance committed-offset bookkeeping when the commit - itself fails (#316, #692). -- Parse ISO-8601 string fields in `relative_to_field()` (#389, #700). -- Record event runtime for events acked via `stream.take()` (#319, #701). -- Don't crash while collecting actor tracebacks for finished coroutines - (#105, #698). -- Allow `test_context()` for sink-less (non-yielding) agents (#433, #699). -- Don't crash the livelock detector when the consumer has not started yet - (#446, #702). -- Skip the end-offset metric when the highwater is unknown (`None`) (#214, #703). -- Preserve the original event timestamp in `Event.forward` (#427, #705). -- Don't crash when publishing a message with a non-bytes key (#513, #695). -- Harden reply-topic creation against a hardcoded `replicas=0` that broke - `.ask()` (#76, #694). -- Respect an explicit autodiscover module list under Django (#500, #697). -- Fix Prometheus latency histograms mis-scaled by 1000x (#260, #693). -- Add `charset=utf-8` to JSON web responses on the orjson (bytes) path - (#557, #696). - Fix release-artifact upload/download for `upload-artifact@v4` (#684). +### Dependencies +- Runs on the maintained mode fork `mode-streaming >= 0.4.0`. +- `aiokafka >= 0.10.0`, now compatible with recent aiokafka releases + (0.13.x / 0.14.x) — see #674 and #682. +- Adds `confluent-kafka >= 2.0.0`, required by the optional `faust[ckafka]` + transport driver. +- The `faust[cchardet]` extra now uses the maintained `faust-cchardet` fork in + place of the unmaintained `cchardet`. + ## [v0.8.10](https://github.com/faust-streaming/faust/releases/tag/v0.8.10) - 2022-09-14 [Compare with v0.8.9](https://github.com/faust-streaming/faust/compare/v0.8.9...v0.8.10) diff --git a/RELEASE_NOTES_v0.12.0.md b/RELEASE_NOTES_v0.12.0.md index 3c68c0146..10c9e3c9f 100644 --- a/RELEASE_NOTES_v0.12.0.md +++ b/RELEASE_NOTES_v0.12.0.md @@ -3,25 +3,25 @@ > Set the release date at tag time. This is the first `CHANGELOG.md`-tracked > release since v0.8.10; v0.9.0–v0.11.3 are documented only in their GitHub > release notes. +> +> Scope: these notes list only work **already merged to `master`**. Fixes and +> features still in open PRs (the offset-commit data-loss fixes, the optional +> OpenTracing/OpenTelemetry extras, and the reported-issue fix stack) will be +> folded in as they merge. -This release drops end-of-life Python versions, makes tracing dependencies -opt-in, re-introduces the confluent-kafka driver, and fixes two data-loss bugs -in offset handling. Please read the **Breaking changes / upgrade notes** before -upgrading. +This release drops end-of-life Python versions, re-introduces the +confluent-kafka driver, refreshes the client/runtime dependencies, and stands up +a live-broker CI harness. Please read the **Breaking changes / upgrade notes** +before upgrading. ## Highlights -- **Two data-loss fixes in offset handling.** Faust no longer commits past an - in-flight (unacked) message (#606, #707), and no longer advances committed - offsets when the commit itself fails (#316, #692). Both could silently skip - unprocessed messages after a restart or rebalance. - **confluent-kafka driver is back.** Use it with `confluent://` broker URLs after installing the `faust[ckafka]` extra. It has been rewritten and tested against the released `confluent-kafka` API. -- **Python 3.14 supported; 3.8 and 3.9 dropped.** The supported range is now - Python 3.10–3.14. -- **Tracing is now opt-in.** OpenTracing moved behind `faust[opentracing]`, and - new OpenTelemetry instrumentation is available via `faust[opentelemetry]`. +- **Python 3.13 and 3.14 supported; 3.8 and 3.9 dropped.** The supported range + is now Python 3.10–3.14. +- **Redis backend moved to `redis-py`**, replacing the unmaintained `aredis`. - **A real Kafka broker now runs in CI**, round-tripping messages through both the aiokafka and confluent-kafka client libraries (#706), giving us a foundation for broker-dependent regression tests. @@ -31,34 +31,27 @@ upgrading. - **Python 3.8 and 3.9 are no longer supported** (#650). The minimum is now Python 3.10. Pin `faust-streaming<0.12` if you are still on an older interpreter. -- **OpenTracing is no longer installed by default** (#685, #686). If you rely on - OpenTracing tracing, change your dependency to `faust-streaming[opentracing]`. - **`aredis` has been replaced by `redis-py`** for the Redis store and leader (#635). No code change is required for typical `redis://` usage, but custom integrations that imported `aredis` internals will need updating. - **confluent-kafka is an optional extra.** `confluent://` broker URLs require - `faust-streaming[ckafka]`. + `faust-streaming[ckafka]` (`confluent-kafka >= 2.0.0`). ## Added - Re-add the confluent-kafka transport driver (`confluent://`, `faust[ckafka]`), rewritten against the released `confluent-kafka` API. -- Support Python 3.14 (with and without Cython). -- Optional OpenTelemetry instrumentation via `faust[opentelemetry]`, documented - in the sensors user guide (#688, #681). +- Support Python 3.13 and 3.14 (with and without Cython). - `on_clear` handlers on `(Global)Table` and `ChangeloggedSet` (#645). -- `web_application_options` setting to configure the web application - (#551, #704). - Live-broker integration test harness in CI (#706). ## Changed - Dropped support for Python 3.8 and 3.9 (#650). -- OpenTracing is now an optional dependency (#685, #686). - Replaced `aredis` with `redis-py` (#635). -- Support `aiokafka` 0.13.0 (removed `api_version`); guard aiokafka - metadata/admin calls by protocol-API version and keep the Faust assignor for - changelog tables (#674, #682). +- Support recent `aiokafka` releases: handle 0.13.0 removing `api_version` + (#674), and guard aiokafka metadata/admin calls by the negotiated protocol-API + version while keeping the Faust assignor for changelog tables (#682). - Modernize CI and wheel building — wheel runners, Windows wheels, cibuildwheel, and the test matrix (#690). - Pin `black`/`isort` and update the `click` constraint for reproducible CI @@ -66,20 +59,16 @@ upgrading. ## Fixed -- Never commit past an in-flight (unacked) message (#606, #707). -- Don't advance committed-offset bookkeeping when the commit fails (#316, #692). -- Parse ISO-8601 string fields in `relative_to_field()` (#389, #700). -- Record event runtime for events acked via `stream.take()` (#319, #701). -- Don't crash collecting actor tracebacks for finished coroutines (#105, #698). -- Allow `test_context()` for sink-less (non-yielding) agents (#433, #699). -- Don't crash the livelock detector when the consumer isn't started (#446, #702). -- Skip the end-offset metric when the highwater is `None` (#214, #703). -- Preserve the original event timestamp in `Event.forward` (#427, #705). -- Don't crash publishing a message with a non-bytes key (#513, #695). -- Harden reply-topic creation against a hardcoded `replicas=0` (#76, #694). -- Respect an explicit autodiscover module list under Django (#500, #697). -- Fix Prometheus latency histograms mis-scaled by 1000x (#260, #693). -- Add `charset=utf-8` to JSON responses on the orjson path (#557, #696). - Fix release-artifact upload/download for `upload-artifact@v4` (#684). +## Dependencies + +- Runs on the maintained mode fork **`mode-streaming >= 0.4.0`**. +- **`aiokafka >= 0.10.0`**, now compatible with recent aiokafka releases + (0.13.x / 0.14.x) — see #674 and #682. +- Adds **`confluent-kafka >= 2.0.0`**, required by the optional `faust[ckafka]` + transport driver. +- The `faust[cchardet]` extra now uses the maintained **`faust-cchardet`** fork + in place of the unmaintained `cchardet`. + **Full changelog:** https://github.com/faust-streaming/faust/compare/v0.11.3...v0.12.0 From 97177147c57769754aee7534c3eff79d36f0e6e3 Mon Sep 17 00:00:00 2001 From: William Barnhart Date: Sun, 19 Jul 2026 18:11:22 +0000 Subject: [PATCH 5/6] docs: set v0.12.0 changelog date to 2026-07-19 Replace the UNRELEASED placeholder with the release date and drop the now-satisfied "set the date at tag time" note. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01HHPL4VFWQRQPpjR1gXSKyL --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ad75e921..8a793a0ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,10 +8,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. This changelog was dormant between v0.9.0 and v0.11.3; those releases are documented in their GitHub release notes at https://github.com/faust-streaming/faust/releases. The v0.12.0 entry below -resumes the Keep a Changelog format. Set the release date at tag time. +resumes the Keep a Changelog format. --> -## [v0.12.0](https://github.com/faust-streaming/faust/releases/tag/v0.12.0) - UNRELEASED +## [v0.12.0](https://github.com/faust-streaming/faust/releases/tag/v0.12.0) - 2026-07-19 [Compare with v0.11.3](https://github.com/faust-streaming/faust/compare/v0.11.3...v0.12.0) From 645d9422b1a43721c05d07b6aef81a9890b700ae Mon Sep 17 00:00:00 2001 From: William Barnhart Date: Sun, 19 Jul 2026 14:14:55 -0400 Subject: [PATCH 6/6] Delete RELEASE_NOTES_v0.12.0.md --- RELEASE_NOTES_v0.12.0.md | 74 ---------------------------------------- 1 file changed, 74 deletions(-) delete mode 100644 RELEASE_NOTES_v0.12.0.md diff --git a/RELEASE_NOTES_v0.12.0.md b/RELEASE_NOTES_v0.12.0.md deleted file mode 100644 index 10c9e3c9f..000000000 --- a/RELEASE_NOTES_v0.12.0.md +++ /dev/null @@ -1,74 +0,0 @@ -# faust-streaming 0.12.0 - -> Set the release date at tag time. This is the first `CHANGELOG.md`-tracked -> release since v0.8.10; v0.9.0–v0.11.3 are documented only in their GitHub -> release notes. -> -> Scope: these notes list only work **already merged to `master`**. Fixes and -> features still in open PRs (the offset-commit data-loss fixes, the optional -> OpenTracing/OpenTelemetry extras, and the reported-issue fix stack) will be -> folded in as they merge. - -This release drops end-of-life Python versions, re-introduces the -confluent-kafka driver, refreshes the client/runtime dependencies, and stands up -a live-broker CI harness. Please read the **Breaking changes / upgrade notes** -before upgrading. - -## Highlights - -- **confluent-kafka driver is back.** Use it with `confluent://` broker URLs - after installing the `faust[ckafka]` extra. It has been rewritten and tested - against the released `confluent-kafka` API. -- **Python 3.13 and 3.14 supported; 3.8 and 3.9 dropped.** The supported range - is now Python 3.10–3.14. -- **Redis backend moved to `redis-py`**, replacing the unmaintained `aredis`. -- **A real Kafka broker now runs in CI**, round-tripping messages through both - the aiokafka and confluent-kafka client libraries (#706), giving us a - foundation for broker-dependent regression tests. - -## Breaking changes / upgrade notes - -- **Python 3.8 and 3.9 are no longer supported** (#650). The minimum is now - Python 3.10. Pin `faust-streaming<0.12` if you are still on an older - interpreter. -- **`aredis` has been replaced by `redis-py`** for the Redis store and leader - (#635). No code change is required for typical `redis://` usage, but custom - integrations that imported `aredis` internals will need updating. -- **confluent-kafka is an optional extra.** `confluent://` broker URLs require - `faust-streaming[ckafka]` (`confluent-kafka >= 2.0.0`). - -## Added - -- Re-add the confluent-kafka transport driver (`confluent://`, - `faust[ckafka]`), rewritten against the released `confluent-kafka` API. -- Support Python 3.13 and 3.14 (with and without Cython). -- `on_clear` handlers on `(Global)Table` and `ChangeloggedSet` (#645). -- Live-broker integration test harness in CI (#706). - -## Changed - -- Dropped support for Python 3.8 and 3.9 (#650). -- Replaced `aredis` with `redis-py` (#635). -- Support recent `aiokafka` releases: handle 0.13.0 removing `api_version` - (#674), and guard aiokafka metadata/admin calls by the negotiated protocol-API - version while keeping the Faust assignor for changelog tables (#682). -- Modernize CI and wheel building — wheel runners, Windows wheels, cibuildwheel, - and the test matrix (#690). -- Pin `black`/`isort` and update the `click` constraint for reproducible CI - (#677, #680). - -## Fixed - -- Fix release-artifact upload/download for `upload-artifact@v4` (#684). - -## Dependencies - -- Runs on the maintained mode fork **`mode-streaming >= 0.4.0`**. -- **`aiokafka >= 0.10.0`**, now compatible with recent aiokafka releases - (0.13.x / 0.14.x) — see #674 and #682. -- Adds **`confluent-kafka >= 2.0.0`**, required by the optional `faust[ckafka]` - transport driver. -- The `faust[cchardet]` extra now uses the maintained **`faust-cchardet`** fork - in place of the unmaintained `cchardet`. - -**Full changelog:** https://github.com/faust-streaming/faust/compare/v0.11.3...v0.12.0