gevent / CHANGES


GreenSocket was simplified and GreenSSL was almost completely rewritten. This fixes
SSL bug reported on eventletdev by Cesar Alaniz as well as failures in
from Python's standard library. makeGreenFile is gone, makefile which returns _fileobject
is available on both GreenSocket and GreenSSL. still a work in progress.

New class core.active_event is added that takes advantage of libevent's event_active function.
core.active_event(func) schedules func to be run in this event loop iteration as opposed
to core.timer(0, ...) which schedules an event to be run in the next iteration. active_event
is now used throughout the library wherever core.timer(0, ....) was previously used.
This results in spawn() being at least 20% faster compared to 0.9.1 and twice as fast compared to
eventlet. (The results are obtained with script in examples/ directory)

kill() and killall() methods now have boolean parameter "wait". If set to True, it makes the
function block until the greenlet(s) is actually dead. By default, kill and killall are asynchronous,
i.e. they don't unschedule the current greenlet.

core.event has got a few more properties: fd, events, events_str and flags. It also has
__enter__ and __exit__ now, so it can be used as a context manager. event's callback signature
has changed from (event, fd, evtype) to (event, evtype).

Hub's mainloop will never return successfully as this will screw up main greenlet's switch() call.
Instead of returning it raises DispatchExit.

reinit function (wrapper for libevent's event_reinit) is now available as gevent.reinit. 
This function is a must have at least for daemons, as it fixes epoll and some others eventloops
to work after fork.

Trying to use gevent in another thread will now raise an exception immediately,
since it's not implemented.

proc.RunningProcSet has a few more convenience methods spawn_link[exception/value]. has been fixed not to depend on setuptools.

gevent.timeout has been removed (use gevent.Timeout)


gevent can now be compiled with libevent-1.3 (Thanks to Litao Wei for reporting the problem.)

Hub now tries to silently recover after event_dispatch() failures (I've seen this happen
even though event_reinit() is called as necessary). The end result is that fork() now works
more reliably, as detected by - it used to fail occasionally, now it does not.

The package was reorganized, most of the stuff from gevent/ was moved to gevent/
gevent/ imports some of it back but not everything.

gevent.timeout was renamed to gevent.Timeout.

Fixed a few bugs in queue.Queue.
Add from standard tests to check how good is gevent.queue.Queue a replacement
for a standard Queue (not good at all, timeouts in put() don't work yet)

monkey: 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.

GreenSocket now wraps a socket object from _socket module rather than from socket.


Started as eventlet 0.8.11 spin-off, with 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
 - full duplex in sockets, i.e. read() and write() on the same fd do not cancel one another
 - GreenSocket.close() does not hang as it could with eventlet
(there's a test in my repo of eventlet that reproduces both of them: