# Changelog

## Version 0.11.1

• Fixed bug in :func:select.select function. Passing non-empty list of write descriptors used to cause this function to fail.
• Changed setup.py to go ahead with the compilation even if the actual version of libevent cannot be determined (version 1.x.x is assumed in that case).

Contributed by Ludvig Ericson:

• Fixed :mod:wsgi's start_response to recognize exc_info argument.
• Fixed setup.py to look for libevent.dylib rather than .so on Darwin platforms.

## Version 0.10.0

The following items were added to the gevent top level package:

The following items were marked as deprecated:

Internally, gevent.greenlet was split into a number of modules:

Thanks to Jason Toffaletti for reporting the installation issue and providing a test case for WSGI double content-length header bug.

## Version 0.9.3

• Fixed all known bugs in the :mod:gevent.queue module made it 2.4-compatible. :class:LifoQueue and :class:PriorityQueue are implemented as well. :mod:gevent.queue will deprecate both coros.Queue and coros.Channel.
• Fixed to :class:Timeout to raise itself by default. TimeoutError is gone. Silent timeout is now created by passing False instead of None.
• Fixed bug in :func:gevent.select.select where it could silent the wrong timeout.
• :func:spawn and :func:spawn_later now avoid creating a closure and this decreases spawning time by 50%.
• kill's and killall's wait argument was renamed to block. The polling is now implemented by greenlet.join and greenlet.joinall functions and it become more responsive, with gradual increase of sleep time.
• Renamed proc.RunningProcSet to proc.ProcSet.
• Added :func:shutdown function, which blocks until libevent has finished dispatching the events.
• The return value of event_add and event_del in core.pyx are now checked properly and :exc:IOError is raised if they have failed.
• Fixed backdoor.py, accidentally broken in the previous release.

## Version 0.9.1

• Fixed compilation with gevent libevent-1.3 (Thanks to Litao Wei for reporting the problem.)
• Fixed :class:Hub to recover silently after event_dispatch() failures (I've seen this happen after fork even though event_reinit() is called as necessary). The end result is that :func:fork now works more reliably, as detected by test_socketserver.py - it used to fail occasionally, now it does not.
• Reorganized the package, most of the stuff from gevent/__init__.py was moved to gevent/greenlet.py. gevent/__init__.py imports some of it back but not everything.
• Renamed gevent.timeout to :class:gevent.Timeout. The old name is available as an alias.
• Fixed a few bugs in :class:queue.Queue. Added test_queue.py from standard tests to check how good is :class:queue.Queue a replacement for a standard :mod:Queue (not good at all, timeouts in :meth:queue.Queue.put don't work yet)
• :mod:monkey now patches ssl module when on 2.6 (very limited support).
• Improved compatibility with Python 2.6 and Python 2.4.
• Greenlet installed from PyPI (without py.magic prefix) is properly recognized now.
• core.pyx was accidentally left out of the source package, it's included now.
• :class:GreenSocket <socket.socket> now wraps a socket object from _socket module rather than from :mod:socket.

## Version 0.9.0

Started as eventlet 0.8.11 fork, with the intention to support only libevent as a backend. Compared to eventlet, this version has a much simpler API and implementation and a few severe bugs fixed, namely

Besides having less bugs and less code to care about the goals of the fork are:

• piggy-back on libevent as much as possible (use its http and dns code)
• use the interfaces and conventions from the standard Python library where possible