Denis Bilenko committed cbeaf69

update CHANGES

Comments (0)

Files changed (1)

+gevent.spawn now returns a subclass of greenlet which has a few useful methods:
+get, join, kill, link. The implementation is based on proc module, with a couple
+of proc's deficiencies fixed:
+ - Proc is not a subclass of greenlet which proved to be a design bug
+   (getcurrent() does not work, using Procs as keys in dict is impossible, etc).
+ - Proc executes links sequentially, so one could block the rest from being executed.
+   Greenlet executes each link in a new greenlet by default, unless it is set up with
+   rawlink() method.
+The following functions were added to gevent top level package:
+ - spawn_link
+ - spawn_link_value
+ - spawn_link_exception
+ - joinall
+ - killall
+Added gevent.pool.Pool with interface of multiprocessing.Pool.
+It also has spawn() method which is always async and returns a Greenlet instance.
+Added gevent.event.Event and gevent.event.AsyncResult which deprecate
+Added gevent.rawgreenlet module with some utility functions that work with
+the regular greenlets.
+gevent.proc module is deprecated; proc.wrap_errors was moved to
+Internally, gevent.greenlet was split into a number of modules:
+ - gevent.hub provides Hub class and basic utilities, like sleep;
+   Hub is now a subclass of greenlet.
+ - gevent.timeout provides Timeout and with_timeout
+ - gevent.greenlet provides Greenlet class and helpers like joinall
+   and killall.
+ - gevent.rawgreenlet contains the old "polling" versions of
+   joinall and killall (they do not need link() functionality and work
+   with any greenlet by polling their status and sleeping in a loop)
+TODO: add start() method to Timeout; Timeout(5) does not start the timer immediatelly anymore
+TODO: Semaphore and BoundedSemaphore moved from coros to gevent.threading
+      BoundedSemaphore is fixed to behave like standard threading's BoundedSemaphore behaves:
+      raise ValueError if upper limit is reached instead of blocking.
 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. 
+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.