This release has been made possible by many contributors, hopefully most of whom are named below (apologies to anyone left out).
- Add support for Python 3.3 and 3.4. Many people have contributed to this effort, including but not limited to Fantix King, hashstat, Elizabeth Myers, jander, Luke Woydziak, and others.
- Add support for PyPy. Based on ``pypycore`` by Ralf Schmitt and Lucas Clemente Vella with patches from hasenj and Armin Rigo.
- Drop support for Python 2.5. Python 2.5 users can continue to use gevent 1.0.x.
- Fix ``gevent.greenlet.joinall`` to not ignore ``count`` when ``raise_error`` is False. PR #512 by Ivan Diao.
- Fix ``subprocess.Popen`` to not ignore the ``bufsize`` argument. Note that this changes the (platform dependent) default, typically from buffered to unbuffered. PR #542 by Romuald Brunet.
- Upgraded c-ares to 1.10.0. PR #579 by Omer Katz.
- Add a ``count`` argument to ``gevent.greenlet.wait``. PR #482 by wiggin15.
- Add a ``timeout`` argument to ``gevent.queue.JoinableQueue.wait`` which now returns whether all items were waited for or not.
- ``gevent.queue.JoinableQueue`` treats ``items`` passed to ``__init__`` as unfinished tasks, the same as if they were ``put``. Initial PR #554 by DuLLSoN.
- ``gevent.pywsgi`` no longer prints debugging information for the normal conditions of a premature client disconnect. Issue #136, fixed in PR #377 by Paul Collier.
- (Experimental.) Waiting on or getting results from greenlets that raised exceptions now usually raises the original traceback. This should assist things like Sentry to track the original problem. PRs #450 and #528 by Rodolfo and Eddi Linder. (tracebacks are pickled to avoid reference cycles.)
- Upgrade to libev 4.20. PR #590 by Peter Renström.
- Fix ``gevent.baseserver.BaseServer`` to be printable when its ``handle`` function is an instancemethod of itself. PR #501 by Joe Jevnik.
- Make the ``acquire`` method of ``gevent.lock.DummySemaphore`` always return True, supporting its use-case as an "infinite" or unbounded semaphore providing no exclusing, and allowing the idiom ``if sem.acquire(): ...``. PR #544 by Mouad Benchchaoui.
- Patch ``subprocess`` by default in ``gevent.monkey.patch_all``. See #446.
- ``gevent.pool.Group.imap`` and ``imap_unordered`` now accept multiple iterables like ``itertools.imap``. Issue #565 reported by Thomas Steinacher.