What’s new in gevent 1.5#

Detailed information on what has changed is available in the Changes for 1.5. This document summarizes the most important changes since gevent 1.4.

gevent 1.5 is a maintenance and feature release including bug fixes and a number of API improvements.

Versioning#

Future releases of gevent will use a scheme similar to CalVer. See Release Process for information on future deprecations and feature removals.

Platform Support#

gevent 1.5 drops support for Python 3.4, and drops support for PyPy < 7. It also adds official support for Python 3.8.

gevent is tested with CPython 2.7.17, 3.5.9, 3.6.10, 3.7.7, 3.8.2, PyPy 2 7.3.0 and PyPy3 7.3.0.

Caution

Older releases, such as RHEL 5, are no longer supported.

Packaging Changes#

gevent now distributes manylinux2010 binary wheels for Linux, instead of the older manylinux1 standard. This updated platform tag allows gevent to distribute libuv support by default. CentOS 6 is the baseline for this tag.

gevent bundles a pyproject.toml now. This is useful for building from source.

Caution

The requirements for building from source may have changed, especially in minimal container environments (e.g., Alpine Linux). See Installing From Source for more information.

The legacy Makefile has been removed in favor of built-in setup.py commands.

Certain environment variables used at build time have been deprecated and renamed.

Generated .c and .h files are no longer included in the distribution. Neither are Cython .pxd files. This is because linking to internal C optimizations is not supported and likely to crash if used against a different version of gevent than exactly what it was compiled for. See issue #1568 for more details.

Library Updates#

The bundled version of libuv has been updated from 1.24 to 1.34, libev has been updated from 4.23 to 4.31, and c-ares has been updated from 1.14 to 1.15.

Version 1.16 or newer of dnspython is required to use the dnspython resolver.

Test Updates#

gevent’s test suite has adopted the standard library’s notion of “test resources,” allowing users to disable certain tests based on their resource usage. This is primarily intended to support downstream packagers. For example, to disable tests that require Internet access, one could disable the network resource using python -m gevent.tests -u-network or GEVENTTEST_USE_RESOURCES=-network python -m gevent.tests. See Limiting Resource Usage for more information.

Other Changes#

The file objects have been reworked to support more modes and behave more like the builtin open() or func:io.open functions and io classes. Previously they essentially only worked with binary streams. Certain default values have been changed as well.

The deprecated magic proxy object gevent.signal has been removed.