From 7f6cf908e511e23cb71b390c44eee85b8a00c6ab Mon Sep 17 00:00:00 2001 From: Benoit Chesneau Date: Thu, 12 Feb 2026 22:06:44 +0100 Subject: [PATCH] release: 25.1.0 New Features: - Dirty Stash: global shared state between workers (#3503) - Dirty Binary Protocol: TLV encoding for efficient IPC (#3500) Documentation: - Fix Markdown formatting in /configure --- docs/content/2026-news.md | 35 +++++++++++++++++++++++++++++++++++ docs/content/news.md | 23 +++++++++++++++++++++++ gunicorn/__init__.py | 2 +- 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/docs/content/2026-news.md b/docs/content/2026-news.md index 9a9339a2..fecda3b5 100644 --- a/docs/content/2026-news.md +++ b/docs/content/2026-news.md @@ -1,6 +1,41 @@ # Changelog - 2026 +## 25.1.0 - 2026-02-12 + +### New Features + +- **Dirty Stash**: Add global shared state between workers via `dirty.stash` + ([PR #3503](https://github.com/benoitc/gunicorn/pull/3503)) + - In-memory key-value store accessible by all workers + - Supports get, set, delete, clear, keys, and has operations + - Useful for sharing state like feature flags, rate limits, or cached data + +- **Dirty Binary Protocol**: Implement efficient binary protocol for dirty arbiter IPC + using TLV (Type-Length-Value) encoding + ([PR #3500](https://github.com/benoitc/gunicorn/pull/3500)) + - More efficient than JSON for binary data + - Supports all Python types: str, bytes, int, float, bool, None, list, dict + - Better performance for large payloads + +### Documentation + +- Fix Markdown formatting in /configure documentation + +--- + +## 25.0.3 - 2026-02-07 + +### Bug Fixes + +- Fix RuntimeError when StopIteration is raised inside ASGI response body + coroutine (PEP 479 compliance) + +- Fix deprecation warning for passing maxsplit as positional argument in + `re.split()` (Python 3.13+) + +--- + ## 25.0.2 - 2026-02-06 ### Bug Fixes diff --git a/docs/content/news.md b/docs/content/news.md index 06e3e7cc..23545dd0 100644 --- a/docs/content/news.md +++ b/docs/content/news.md @@ -1,6 +1,29 @@ # Changelog +## 25.1.0 - 2026-02-12 + +### New Features + +- **Dirty Stash**: Add global shared state between workers via `dirty.stash` + ([PR #3503](https://github.com/benoitc/gunicorn/pull/3503)) + - In-memory key-value store accessible by all workers + - Supports get, set, delete, clear, keys, and has operations + - Useful for sharing state like feature flags, rate limits, or cached data + +- **Dirty Binary Protocol**: Implement efficient binary protocol for dirty arbiter IPC + using TLV (Type-Length-Value) encoding + ([PR #3500](https://github.com/benoitc/gunicorn/pull/3500)) + - More efficient than JSON for binary data + - Supports all Python types: str, bytes, int, float, bool, None, list, dict + - Better performance for large payloads + +### Documentation + +- Fix Markdown formatting in /configure documentation + +--- + ## 25.0.3 - 2026-02-07 ### Bug Fixes diff --git a/gunicorn/__init__.py b/gunicorn/__init__.py index 5af18f22..13db58b9 100644 --- a/gunicorn/__init__.py +++ b/gunicorn/__init__.py @@ -2,7 +2,7 @@ # This file is part of gunicorn released under the MIT license. # See the NOTICE for more information. -version_info = (25, 0, 3) +version_info = (25, 1, 0) __version__ = ".".join([str(v) for v in version_info]) SERVER = "gunicorn" SERVER_SOFTWARE = "%s/%s" % (SERVER, __version__)