From dcaf2e14a5c68ccf8b57eefe501ca8765f677ebf Mon Sep 17 00:00:00 2001 From: Benoit Chesneau Date: Tue, 24 Mar 2026 23:44:09 +0100 Subject: [PATCH] Add 25.2.0 to 2026 changelog --- docs/content/2026-news.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/docs/content/2026-news.md b/docs/content/2026-news.md index f16c53ca..31a0a96d 100644 --- a/docs/content/2026-news.md +++ b/docs/content/2026-news.md @@ -1,6 +1,39 @@ # Changelog - 2026 +## 25.2.0 - 2026-03-24 + +### New Features + +- **Fast HTTP Parser (gunicorn_h1c 0.4.1)**: Integrate new exception types and limit + parameters from gunicorn_h1c 0.4.1 for both WSGI and ASGI workers + - Requires gunicorn_h1c >= 0.4.1 for `http_parser='fast'` + - Falls back to Python parser in `auto` mode if version not met + - Proper HTTP status codes for limit errors (414, 431) + +### Bug Fixes + +- **uWSGI Async Workers**: Fix `InvalidUWSGIHeader: incomplete header` error + when using gevent or gthread workers with uwsgi protocol behind nginx. + ([#3552](https://github.com/benoitc/gunicorn/issues/3552), + [PR #3554](https://github.com/benoitc/gunicorn/pull/3554)) + +- **FileWrapper Iterator Protocol**: Add `__iter__` and `__next__` methods to + `FileWrapper` for full PEP 3333 compliance. Previously only supported old-style + `__getitem__` iteration which broke code explicitly using `iter()` or `next()`. + ([#3396](https://github.com/benoitc/gunicorn/issues/3396), + [PR #3550](https://github.com/benoitc/gunicorn/pull/3550)) + +### Performance + +- **ASGI HTTP Parser Optimizations**: Improve ASGI worker HTTP parsing performance + - Read chunks in 64-byte blocks instead of 1 byte at a time for chunk size lines and trailers + - Reuse BytesIO buffers with truncate/seek instead of creating new objects (reduces GC pressure) + - Use `bytearray.find()` directly instead of converting to bytes first + - Use index-based iteration for header parsing instead of `list.pop(0)` (O(1) vs O(n)) + +--- + ## 25.1.0 - 2026-02-13 ### New Features