# Changelog - 2019

::: note
::: title
Note
:::

Please see `news`{.interpreted-text role="doc"} for the latest changes
:::

## 20.0.4 / 2019/11/26

-   fix binding a socket using the file descriptor
-   remove support for the [bdist_rpm]{.title-ref} build

## 20.0.3 / 2019/11/24

-   fixed load of a config file without a Python extension
-   fixed [socketfromfd.fromfd]{.title-ref} when defaults are not set

::: note
::: title
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\_\_]{.title-ref} is now available
-   fixed [wsgi.input_terminated]{.title-ref}. It is always true.
-   use the highest protocol version of openssl by default
-   only support Python \>= 3.5
-   added [\_\_repr\_\_]{.title-ref} method to [Config]{.title-ref}
    instance
-   fixed support of AIX platform and musl libc in
    [socketfromfd.fromfd]{.title-ref} function
-   fixed support of applications loaded from a factory function
-   fixed chunked encoding support to prevent any [request
    smuggling](https://portswigger.net/research/http-desync-attacks-request-smuggling-reborn)
-   Capture os.sendfile before patching in gevent and eventlet workers.
    fix [RecursionError]{.title-ref}.
-   removed locking in reloader when adding new files
-   load the WSGI application before the loader to pick up all files

::: note
::: title
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]{.title-ref}
-   added support for str and bytes in unix socket addresses
-   fixed [max_requests]{.title-ref} setting
-   headers values are now encoded as LATN1, not ASCII
-   fixed \`InotifyReloadeder\`: handle
    [module.\_\_file\_\_]{.title-ref} is None
-   fixed compatibility with tornado 6
-   fixed root logging
-   Prevent removalof unix sockets from [reuse_port]{.title-ref}
-   Clear tornado ioloop before os.fork
-   Miscellaneous fixes and improvement for linting using Pylint

## 20.0 / 2019/10/30

-   Fixed [fdopen]{.title-ref} [RuntimeWarning]{.title-ref} 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]{.title-ref} and
    [KeyboardInterrupt]{.title-ref} exceptions with same body together
    in Arbiter.run()
-   Added [setproctitle]{.title-ref} module to
    [extras_require]{.title-ref} in setup.py
-   Avoid unnecessary chown of temporary files
-   Logging: Handle auth type case insensitively
-   Removed [util.import_module]{.title-ref}
-   Removed fallback for [types.SimpleNamespace]{.title-ref} in tests
    utils
-   Use [SourceFileLoader]{.title-ref} instead instead of
    [execfile\_]{.title-ref}
-   Use [importlib]{.title-ref} instead of [\_\_import\_\_]{.title-ref}
    and eval\`
-   Fixed eventlet patching
-   Added optional [datadog](https://www.datadoghq.com) tags for statsd
    metrics
-   Header values now are encoded using latin-1, not ascii.
-   Rewritten [parse_address]{.title-ref} util added test
-   Removed redundant super() arguments
-   Simplify [futures]{.title-ref} 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]{.title-ref} 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](https://www.tornadoweb.org/) 5 and 6 support
-   Declare our setuptools dependency
-   Added support to [\--bind]{.title-ref} 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]{.title-ref}
    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]{.title-ref} 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\_\_]{.title-ref} is None
-   [/dev/shm]{.title-ref} as a convenient alternative to making your
    own tmpfs mount in fchmod FAQ
-   fix examples to work on python3
-   Fix typo in [\--max-requests]{.title-ref} 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