1.4.0:
- Build with Cython 0.29 in '3str' mode.
- Test with PyPy 6.0 on Windows.
- Add support for application-wide callbacks when Greenlet objects
are started.
- Fix consuming a single ready object using
next(gevent.iwait(objs)). Previously such a construction would
hang because iter was not called.
- Make gevent.iwait return an iterator that can now also be used as
a context manager. If you'll only be consuming part of the iterator,
use it in a with block to avoid leaking resources.
- Fix semaphores to immediately notify links if they are ready and
rawlink() is called. This behaves like Event and
AsyncEvent. Note that the order in which semaphore links are
called is not specified.
- Improve safety of handling exceptions during interpreter shutdown.
- Remove the deprecated ability to specify GEVENT_RESOLVER and
other importable settings as a path/to/a/package.module.item.
This had race conditions and didn't work with complicated resolver
implementations. Place the required package or module on sys.path
first.
- Reduce the chances that using the blocking monitor functionality
could result in apparently random SystemError:
Objects/tupleobject.c: bad argument to internal function.
- Refactored the gevent test runner and test suite to make them more
reusable. In particular, the tests are now run with python -m
gevent.tests.
- Make a monkey-patched socket.getaddrinfo return socket module
enums instead of plain integers for the socket type and address
family on Python 3.
- Make gevent's pywsgi server set the non-standard environment value
wsgi.input_terminated to True.
- Make gevent.util.assert_switches produce more informative messages
when the assertion fails.
- Python 2: If a gevent.socket was closed asynchronously (in a
different greenlet or a hub callback), AttributeError could result
if the socket was already in use. Now the correct socket.error
should be raised.
- Fix :meth:gevent.threadpool.ThreadPool.join raising a
UserWarning when using the libuv backend.
- Fix FileObjectPosix.seek raising OSError when it should have
been IOError on Python 2.
- Upgrade libuv from 1.23.2 to 1.24.0.
1.3.7:
- Formatting run info no longer includes gevent.local.local
objects that have no value in the greenlet.
- Fixed negative length in pywsgi's Input read functions for non chunked body.
- Upgrade libuv from 1.22.0 to 1.23.2.
- Fix opening files in text mode in CPython 2 on Windows by patching
libuv.
1.3.6:
- gevent now depends on greenlet 0.4.14 or above. gevent binary wheels
for 1.3.5 and below must have greenlet 0.4.13 installed on Python
3.7 or they will crash.
- :class:gevent.local.local subclasses correctly supports @staticmethod functions.
1.3.5:
- Update the bundled libuv from 1.20.1 to 1.22.0.
- Test Python 3.7 on Appveyor. Fix the handling of Popen's
close_fds argument on 3.7.
- Update Python versions tested on Travis, including PyPy to 6.0.
- :mod:gevent.queue imports _PySimpleQueue instead of
SimpleQueue so that it doesn't block the event loop.
:func:gevent.monkey.patch_all makes this same substitution in
:mod:queue. This fixes issues with
:class:concurrent.futures.ThreadPoolExecutor as well.
- :meth:gevent.socket.socket.connect doesn't pass the port (service)
to :func:socket.getaddrinfo when it resolves an AF_INET or
AF_INET6 address. (The standard library doesn't either.) This
fixes an issue on Solaris.
- :meth:gevent.socket.socket.connect works with more address
families, notably AF_TIPC, AF_NETLINK, AF_BLUETOOTH, AF_ALG and AF_VSOCK.
1.3.4:
Be more careful about issuing MonkeyPatchWarning for ssl imports. Now, we only issue it if we detect the one specific condition that is known to lead to RecursionError. This may produce false negatives, but should reduce or eliminate false positives.
Based on measurements and discussion in issue 1233, adjust the way gevent.pywsgi generates HTTP chunks. This is intended to reduce network overhead, especially for smaller chunk sizes.
Additional slight performance improvements in gevent.pywsgi.
1.3.3:
gevent.sleep() updates the loop’s notion of the current time before sleeping so that sleep duration corresponds more closely to elapsed (wall clock) time. gevent.Timeout does the same.
Fix an UnboundLocalError in SSL servers when wrapping a socket throws an error.
1.3.2.post0:
Fix a packaging error in manylinux binary wheels that prevented some imports from working.
1.3.2:
Allow weak refeneces to gevent.queue.Queue.
1.3.1:
Allow weak references to gevent.event.Event.
Fix embedded uses of gevent.Greenlet.spawn(), especially under uwsgi.
Fix gevent.os.nb_write() and gevent.os.nb_read() not always closing the IO event they opened in the event of an exception. This would be a problem especially for libuv.
1.3.0:
Python 3.7 passes the automated memory leak checks.
Update autoconf’s config.guess and config.sub to the latest versions for c-ares and libev.
gevent.local.local subclasses that mix-in ABCs can be instantiated.
- Testing on Python 3.5 now uses Python 3.5.3 due to SSL changes. See
:issue:`943`.
- Linux CI has been updated from Ubuntu 12.04 to Ubuntu 14.04 since
the former has reached EOL.
- Linux CI now tests on PyPy2 5.7.1, updated from PyPy2 5.6.0.
- Linux CI now tests on PyPy3 3.5-5.7.1-beta, updated from PyPy3
3.3-5.5-alpha.
- Python 2 sockets are compatible with the ``SOCK_CLOEXEC`` flag found
on Linux. They no longer pass the socket type or protocol to
``getaddrinfo`` when ``connect`` is called. Reported in :issue:`944`
by Bernie Hackett.
- Replace ``optparse`` module with ``argparse``. See :issue:`947`.
- Update to version 1.3.1 of ``tblib`` to fix :issue:`954`,
reported by ml31415.
- Fix the name of the ``type`` parameter to
:func:`gevent.socket.getaddrinfo` to be correct on Python 3. This
would cause callers using keyword arguments to raise a :exc:`TypeError`.
Reported in :issue:`960` by js6626069. Likewise, correct the
argument names for ``fromfd`` and ``socketpair`` on Python 2,
although they cannot be called with keyword arguments under CPython.
.. note:: The ``gethost*`` functions take different argument names
under CPython and PyPy. gevent follows the CPython
convention, although these functions cannot be called with
keyword arguments on CPython.
- The previously-singleton exception objects ``FileObjectClosed`` and
``cancel_wait_ex`` were converted to classes. On Python 3, an
exception object is stateful, including references to its context
and possibly traceback, which could lead to objects remaining alive
longer than intended.
- Make sure that ``python -m gevent.monkey <script>`` runs code in the
global scope, not the scope of the ``main`` function.
Tests don't run through because of
===> Testing for py27-gevent-1.0.2
Traceback (most recent call last):
File "testrunner.py", line 2, in <module>
import six
File "/scratch/net/py-gevent/work/gevent-1.0.2/greentest/six.py", line 2, in <module>
from gevent.hub import PY3
ImportError: No module named gevent.hub
*** Error code 1
Release 1.0.2
-------------
- Fix LifoQueue.peek() to return correct element. PR #456. Patch by Christine Spang.
- Upgrade to libev 4.19
- Remove SSL3 entirely as default TLS protocol
- Import socket on Windows (closes#459)
- Fix C90 syntax error (PR #449)
- Add compatibility with Python 2.7.9's SSL changes. Issue #477.