setup.pycan be run from a directory containing spaces. Reported
in :issue:319by Ivan Smirnov.setup.pycan build with newer versions of clang on OS X. They
enforce the distinction between CFLAGS and CPPFLAGS.gevent.lock.Semaphoreis atomic on PyPy, just like it is on
CPython. This comes at a small performance cost.- Fixed regression that failed to set the
successfulvalue to
False when killing a greenlet before it ran with a non-default
exception. Fixed in :pr:608by Heungsub Lee. - libev's child watchers caused
os.waitpidto become unreliable
due to the use of signals on POSIX platforms. This was especially
noticeable when usinggevent.subprocessin combination with
multiprocessing. Now, the monkey-patchedosmodule provides
awaitpidfunction that seeks to ameliorate this. Reported in
:issue:600by champax and :issue:452by Łukasz Kawczyński. - On platforms that implement
select.poll, provide a
gevent-friendlygevent.select.polland corresponding
monkey-patch. Implemented in :pr:604by Eddi Linder. - Allow passing of events to the io callback under PyPy. Reported in
:issue:531by M. Nunberg and implemented in :pr:604. gevent.thread.allocate_lock(and so a monkey-patched standard
libraryallocate_lock) more closely matches the behaviour of the
builtin: an unlocked lock cannot be released, and attempting to do
so throws the correct exception (thread.erroron Python 2,
RuntimeErroron Python 3). Previously, over-releasing a lock was
silently ignored. Reported in :issue:308by Jędrzej Nowak.gevent.fileobject.FileObjectThreaduses the threadpool to close
the underling file-like object. Reported in :issue:201by
vitaly-krugl.- Malicious or malformed HTTP chunked transfer encoding data sent to
thegevent.pywsgihandler is handled more robustly, resulting in
"HTTP 400 bad request" responses instead of a 500 error or, in the
worst case, a server-side hang. Reported in :issue:229by Björn
Lindqvist. - Importing the standard library
threadingmodule before using
gevent.monkey.patch_all()no longer causes Python 3.4 to fail to
get thereprof the main thread, and other CPython platforms to
return an unjoinable DummyThread. (Note that this is not
recommended.) Reported in :issue:153. - Under Python 2, use the
iopackage to implement
FileObjectPosix. This unifies the code with the Python 3
implementation, and fixes problems with usingseek(). See
:issue:151. - Under Python 2, importing a module that uses gevent blocking
functions at its top level from multiple greenlets no longer
produces import errors (Python 3 handles this case natively).
Reported in :issue:108by shaun and initial fix based on code by
Sylvain Zimmer. gevent.spawn,spawn_rawandspawn_later, as well as the
Greenletconstructor, immediately produce usefulTypeErrors
if asked to run something that cannot be run. Previously, the
spawned greenlet would die with an uncaughtTypeErrorthe first
time it was switched to. Reported in :issue:119by stephan.- Recursive use of
gevent.threadpool.ThreadPool.applyno longer
raises aLoopExiterror (usingThreadPool.spawnand then
geton the result still could; you must be careful to use the
correct hub). Reported in :issue:131by 8mayday. - When the
threadingmodule is monkey-patched, the module-level
lock in theloggingmodule is made greenlet-aware, as are the
instance locks of any configured handlers. This makes it safer to
import modules that use the standard pattern of creating a
module-levelLoggerinstance before monkey-patching. Configuring
loggingwith a basic configuration and then monkey-patching is
also safer (but not configurations that involve such things as the
SocketHandler). - Fix monkey-patching of
threading.RLockunder Python 3. - Under Python 3, monkey-patching at the top-level of a module that
was imported by another module could result in aRuntimeError
fromimportlib. Reported in :issue:615by Daniel Mizyrycki.
(The same thing could happen under Python 2 if athreading.RLock
was held around the monkey-patching call; this is less likely but
not impossible with import hooks.) - Fix configuring c-ares for a 32-bit Python when running on a 64-bit
platform. Reported in :issue:381and fixed in :pr:616by Chris
Lane. - (Experimental) Let the
pywsgi.WSGIServeraccept a
logging.Loggerinstance for itslogand (new)error_log
parameters. Take care that the system is fully monkey-patched very
early in the process's lifetime if attempting this, and note that
non-file handlers have not been tested. Fixes :issue:106.