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