Changelog - 2019 — Gunicorn 21.0.0 documentation

# Changelog - 2019

Note

Please see Changelog for the latest changes

## 20.0.4 / 2019/11/26

- fix binding a socket using the file descriptor

- remove support for the bdist_rpm build

## 20.0.3 / 2019/11/24

- fixed load of a config file without a Python extension

- fixed socketfromfd.fromfd when defaults are not set

Note

we now warn when we load a config file without Python Extension

## 20.0.2 / 2019/11/23

- fix changelog

## 20.0.1 / 2019/11/23

- fixed the way the config module is loaded. __file__ is now available

- fixed wsgi.input_terminated. It is always true.

- use the highest protocol version of openssl by default

- only support Python >= 3.5

- added __repr__ method to Config instance

- fixed support of AIX platform and musl libc in socketfromfd.fromfd function

- fixed support of applications loaded from a factory function

- fixed chunked encoding support to prevent any request smuggling

- Capture os.sendfile before patching in gevent and eventlet workers. fix RecursionError.

- removed locking in reloader when adding new files

- load the WSGI application before the loader to pick up all files

Note

this release add official support for applications loaded from a factory function as documented in Flask and other places.

## 19.10.0 / 2019/11/23

- unblock select loop during reload of a sync worker

- security fix: http desync attack

- handle wsgi.input_terminated

- added support for str and bytes in unix socket addresses

- fixed max_requests setting

- headers values are now encoded as LATN1, not ASCII

- fixed InotifyReloadeder: handle module.__file__ is None

- fixed compatibility with tornado 6

- fixed root logging

- Prevent removalof unix sockets from reuse_port

- Clear tornado ioloop before os.fork

- Miscellaneous fixes and improvement for linting using Pylint

## 20.0 / 2019/10/30

- Fixed fdopen RuntimeWarning in Python 3.8

- Added check and exception for str type on value in Response process_headers method.

- Ensure WSGI header value is string before conducting regex search on it.

- Added pypy3 to list of tested environments

- Grouped StopIteration and KeyboardInterrupt exceptions with same body together in Arbiter.run()

- Added setproctitle module to extras_require in setup.py

- Avoid unnecessary chown of temporary files

- Logging: Handle auth type case insensitively

- Removed util.import_module

- Removed fallback for types.SimpleNamespace in tests utils

- Use SourceFileLoader instead instead of execfile_

- Use importlib instead of __import__ and eval`

- Fixed eventlet patching

- Added optional datadog tags for statsd metrics

- Header values now are encoded using latin-1, not ascii.

- Rewritten parse_address util added test

- Removed redundant super() arguments

- Simplify futures import in gthread module

- Fixed worker_connections` setting to also affects the Gthread worker type

- Fixed setting max_requests

- Bump minimum Eventlet and Gevent versions to 0.24 and 1.4

- Use Python default SSL cipher list by default

- handle wsgi.input_terminated extension

- Simplify Paste Deployment documentation

- Fix root logging: root and logger are same level.

- Fixed typo in ssl_version documentation

- Documented systemd deployment unit examples

- Added systemd sd_notify support

- Fixed typo in gthread.py

- Added tornado 5 and 6 support

- Declare our setuptools dependency

- Added support to –bind to open file descriptors

- Document how to serve WSGI app modules from Gunicorn

- Provide guidance on X-Forwarded-For access log in documentation

- Add support for named constants in the –ssl-version flag

- Clarify log format usage of header & environment in documentation

- Fixed systemd documentation to properly setup gunicorn unix socket

- Prevent removal unix socket for reuse_port

- Fix ResourceWarning when reading a Python config module

- Remove unnecessary call to dict keys method

- Support str and bytes for UNIX socket addresses

- fixed InotifyReloadeder: handle module.__file__ is None

- /dev/shm as a convenient alternative to making your own tmpfs mount in fchmod FAQ

- fix examples to work on python3

- Fix typo in –max-requests documentation

- Clear tornado ioloop before os.fork

- Miscellaneous fixes and improvement for linting using Pylint

### Breaking Change

- Removed gaiohttp worker

- Drop support for Python 2.x

- Drop support for EOL Python 3.2 and 3.3

- Drop support for Paste Deploy server blocks