gevent 1.1a2 available

113 views
Skip to first unread message

Jason Madden

unread,
Jul 8, 2015, 7:16:45 PM7/8/15
to gev...@googlegroups.com
Hi,

This is the second alpha release of what will eventually become gevent 1.1. There are numerous bugfixes and changes over 1.1a1, including a fix to hanging SSL sockets. The complete changelog is below.

This release has been made possible by many contributors, hopefully most of whom are named below (apologies to anyone left out). 

Please try it out and report any issues you have (https://github.com/gevent/gevent/issues).


  • gevent.threadpool.ThreadPool.imap and imap_unordered now accept multiple iterables.
  • (Experimental) Exceptions raised from iterating using the ThreadPool or Group mapping/application functions should now have the original traceback.
  • gevent.threadpool.ThreadPool.apply now raises any exception raised by the called function, the same as gevent.pool.Group/Pool and the builtin apply function. This obsoletes the undocumented apply_e function. Original PR issue #556 by Robert Estelle.
  • Monkey-patch the selectors module from patch_all and patch_select on Python 3.4. See issue #591.
  • Additional query functions for the gevent.monkey module allow knowing what was patched. Discussed in issue #135 and implemented in pull request #325 by Nathan Hoad.
  • In non-monkey-patched environments under Python 2.7.9 or above or Python 3, using a gevent SSL socket could cause the greenlet to block. See issue #597 by David Ford.
  • gevent.socket.socket.sendall supports arbitrary objects that implement the buffer protocol (such as ctypes structures), just like native sockets. Reported in issue #466 by tzickel.
  • Added support for the onerror attribute present in CFFI 1.2.0 for better signal handling under PyPy. Thanks to Armin Rigo and Omer Katz. (See https://bitbucket.org/cffi/cffi/issue/152/handling-errors-from-signal-handlers-in)
  • The gevent.subprocess module is closer in behaviour to the standard library under Python 3, at least on POSIX. Thepass_fdsrestore_signals, and start_new_session arguments are now unimplemented, as are the timeoutparameters to various functions. Under Python 2, the previously undocumented timeout parameter to Popen.communicate raises an exception like its Python 3 counterpart.
  • An exception starting a child process with the gevent.subprocess module no longer leaks file descriptors. Reported in pull request #374 by 陈小玉.
  • The example echoserver.py no longer binds to the standard X11 TCP port. Reported in issue #485 by minusf.
  • gevent.iwait no longer throws LoopExit if the caller switches greenlets between return values. Reported and initial patch in pull request #467 by Alexey Borzenkov.
  • The default threadpool and default threaded resolver work in a forked child process, such as with multiprocessing.Process. Previously the child process would hang indefinitely. Reported in issue #230 by Lx Yu.
  • Fork watchers are more likely to (eventually) get called in a multi-threaded program.
  • gevent.killall accepts an arbitrary iterable for the greenlets to kill. Reported in issue #404 by Martin Bachwerk; seen in combination with older versions of simple-requests.
  • gevent.local.local objects are now eligible for garbage collection as soon as the greenlet finishes running, matching the behaviour of the built-in threading.local (when implemented natively). Reported in issue #387 by AusIV.
  • Killing a greenlet (with gevent.kill or gevent.greenlet.Greenlet.kill) before it is actually started and switched to now prevents the greenlet from ever running, instead of raising an exception when it is later switched to. See issue #330 reported by Jonathan Kamens.
Jason
Reply all
Reply to author
Forward
0 new messages