Add 25.2.0 to 2026 changelog

This commit is contained in:
Benoit Chesneau 2026-03-24 23:44:09 +01:00
parent 6f601a0de9
commit dcaf2e14a5

View File

@ -1,6 +1,39 @@
<span id="news-2026"></span>
# 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