/usr/share/doc/python-gevent-doc/html/whatsnew_1_2.html is in python-gevent-doc 1.2.2-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>What’s new in gevent 1.2 — gevent 1.2.2 documentation</title>
<link rel="stylesheet" href="_static/basic.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="top" title="gevent 1.2.2 documentation" href="index.html" />
<link rel="next" title="API reference" href="reference.html" />
<link rel="prev" title="Introduction" href="intro.html" />
</head>
<body>
<div id="site-wrapper">
<div id="header">
<div id="top">
<div class="left" id="logo">
<h1><a id="title" href="index.html">gevent</a></h1>
</div>
<div class="left navigation" id="main-nav">
<ul class="tabbed">
<li><a href="http://blog.gevent.org">Blog</a></li>
<li><a href="https://github.com/gevent/gevent">Code</a></li>
<li class="current-tab"><a href="contents.html">Docs</a></li>
<li><a href="http://pypi.python.org/pypi/gevent#downloads">Download</a></li>
<li><a href="community.html">Mailing list</a></li>
<li><a href="https://github.com/gevent/gevent/issues">Issues</a></li>
<li><a href="http://webchat.freenode.net/?channels=gevent" rel="nofollow">IRC</a></li>
<li><a href="sfc.html">Donate</a></li>
</ul>
<div class="clearer"> </div>
</div>
<div class="clearer"> </div>
</div>
</div>
<div id="splash">
<div class="col3big left">
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="what-s-new-in-gevent-1-2">
<h1>What’s new in gevent 1.2<a class="headerlink" href="#what-s-new-in-gevent-1-2" title="Permalink to this headline">¶</a></h1>
<p>Detailed information on what has changed is available in the
<span class="xref std std-doc">changelog</span>. This document summarizes the most important changes
since <a class="reference internal" href="whatsnew_1_1.html"><span class="doc">gevent 1.1</span></a>.</p>
<p>In general, gevent 1.2 is a smaller update than gevent 1.1, focusing
on platform support, standard library compatibility, security, bug
fixes and consistency.</p>
<div class="section" id="platform-support">
<h2>Platform Support<a class="headerlink" href="#platform-support" title="Permalink to this headline">¶</a></h2>
<p>gevent 1.2 supports Python 2.7, 3.4, 3.5 and 3.6 on the CPython
(<a class="reference external" href="http://www.python.org/downloads/">python.org</a>) interpreter. It also supports <a class="reference external" href="http://pypy.org">PyPy2</a> 4.0.1 and above
(PyPy2 5.4 or higher is recommended) and PyPy3 5.5.0.</p>
<div class="admonition caution">
<p class="first admonition-title">Caution</p>
<p class="last">Support for Python 2.6 was removed. Support for Python 3.3 is only
tested on PyPy3.</p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">PyPy is not supported on Windows. (gevent’s CFFI backend is not
available on Windows.)</p>
</div>
<p>Python 3.6 was released recently and is supported at the same level as 3.5.</p>
<p>For ease of installation on Windows and OS X, gevent 1.2 is
distributed as pre-compiled binary wheels, in addition to source code.</p>
</div>
<div class="section" id="bug-fixes">
<h2>Bug Fixes<a class="headerlink" href="#bug-fixes" title="Permalink to this headline">¶</a></h2>
<p>Since 1.1.2, gevent 1.2 contains over 240 commits from nine different
dozen contributors. About two dozen pull requests were merged.</p>
</div>
<div class="section" id="improved-subprocess-support">
<h2>Improved subprocess support<a class="headerlink" href="#improved-subprocess-support" title="Permalink to this headline">¶</a></h2>
<p>In gevent 1.1, subprocess monkey-patching was on by default for the
first time. Over time this led to discovery of a few issues and corner
cases that have been fixed in 1.2.</p>
<ul class="simple">
<li>Setting SIGCHLD to SIG_IGN or SIG_DFL after <a class="reference internal" href="gevent.subprocess.html#module-gevent.subprocess" title="gevent.subprocess"><code class="xref py py-mod docutils literal"><span class="pre">gevent.subprocess</span></code></a>
had been used previously could not be reversed, causing
<code class="docutils literal"><span class="pre">Popen.wait</span></code> and other calls to hang. Now, if SIGCHLD has been
ignored, the next time <a class="reference internal" href="gevent.subprocess.html#module-gevent.subprocess" title="gevent.subprocess"><code class="xref py py-mod docutils literal"><span class="pre">gevent.subprocess</span></code></a> is used this will be
detected and corrected automatically. (This potentially leads to
issues with <a class="reference external" href="http://docs.python.org/library/os.html#os.popen" title="(in Python v2.7)"><code class="xref py py-func docutils literal"><span class="pre">os.popen()</span></code></a> on Python 2, but the signal can always
be reset again. Mixing the low-level process handling calls,
low-level signal management and high-level use of
<a class="reference internal" href="gevent.subprocess.html#module-gevent.subprocess" title="gevent.subprocess"><code class="xref py py-mod docutils literal"><span class="pre">gevent.subprocess</span></code></a> is tricky.) Reported in <a class="reference external" href="https://github.com/gevent/gevent/issues/857">issue #857</a> by
Chris Utz.</li>
<li><code class="docutils literal"><span class="pre">Popen.kill</span></code> and <code class="docutils literal"><span class="pre">send_signal</span></code> no longer attempt to send signals
to processes that are known to be exited.</li>
<li>The <code class="xref py py-func docutils literal"><span class="pre">gevent.os.waitpid()</span></code> function is cooperative in more
circumstances. Reported in <a class="reference external" href="https://github.com/gevent/gevent/issues/878">issue #878</a> by Heungsub Lee.</li>
</ul>
</div>
<div class="section" id="api-additions">
<h2>API Additions<a class="headerlink" href="#api-additions" title="Permalink to this headline">¶</a></h2>
<p>Numerous APIs offer slightly expanded functionality in this version.
Look for “changed in version 1.2” or “added in version 1.2” throughout
the documentation for specifics.</p>
<p>Of particular note, several backwards compatible updates to the
subprocess module have been backported from Python 3 to Python 2,
making <a class="reference internal" href="gevent.subprocess.html#module-gevent.subprocess" title="gevent.subprocess"><code class="xref py py-mod docutils literal"><span class="pre">gevent.subprocess</span></code></a> smaller, easier to maintain and in
some cases safer, while letting gevent clients use the updated APIs
even on older versions of Python.</p>
<p>If <code class="docutils literal"><span class="pre">concurrent.futures</span></code> is available (Python 3, or if the Python 2
backport has been installed), then the class
<code class="xref py py-class docutils literal"><span class="pre">gevent.threadpool.ThreadPoolExecutor</span></code> is defined to create an
executor that always uses native threads, even when the system is
monkey-patched.</p>
</div>
<div class="section" id="library-updates">
<h2>Library Updates<a class="headerlink" href="#library-updates" title="Permalink to this headline">¶</a></h2>
<p>The two C libraries that are bundled with gevent have been updated.
libev has been updated from 4.20 to 4.23 (<a class="reference external" href="https://github.com/gevent/gevent/blob/master/deps/libev/Changes">libev release notes</a>) and
c-ares has been updated from 1.10.0 to 1.12.0 (<a class="reference external" href="https://c-ares.haxx.se/changelog.html">c-ares release notes</a>).</p>
</div>
<div class="section" id="compatibility">
<h2>Compatibility<a class="headerlink" href="#compatibility" title="Permalink to this headline">¶</a></h2>
<p>This release is intended to be compatible with 1.1.x with no changes
to client source code, so long as only non-deprecated and supported
interfaces were used (as always, internal, non-documented
implementation details may have changed).</p>
<p>In particular the deprecated <code class="docutils literal"><span class="pre">gevent.coros</span></code> module has been removed
and <code class="docutils literal"><span class="pre">gevent.corecext</span></code> and <code class="docutils literal"><span class="pre">gevent.corecffi</span></code> have also been removed.</p>
<p>For security, <code class="docutils literal"><span class="pre">gevent.pywsgi</span></code> no longer accepts incoming headers
containing an underscore, and header values passed to
<code class="docutils literal"><span class="pre">start_response</span></code> cannot contain a carriage return or newline. See
<a class="reference external" href="https://github.com/gevent/gevent/issues/819">issue #819</a> and <a class="reference external" href="https://github.com/gevent/gevent/issues/775">issue #775</a>, respectively.</p>
</div>
</div>
<p><strong>Next page: <a href="reference.html" title="next chapter">API reference</a></strong></p>
</div>
</div>
</div>
</div>
</div>
<div class="col3 right">
<div class="body">
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4 class="label label-blue"><a href="contents.html">Table Of Contents</a></h4>
<ul>
<li><a class="reference internal" href="#">What’s new in gevent 1.2</a><ul>
<li><a class="reference internal" href="#platform-support">Platform Support</a></li>
<li><a class="reference internal" href="#bug-fixes">Bug Fixes</a></li>
<li><a class="reference internal" href="#improved-subprocess-support">Improved subprocess support</a></li>
<li><a class="reference internal" href="#api-additions">API Additions</a></li>
<li><a class="reference internal" href="#library-updates">Library Updates</a></li>
<li><a class="reference internal" href="#compatibility">Compatibility</a></li>
</ul>
</li>
</ul>
<ul>
<li>Next: <a href="reference.html" title="next chapter">API reference</a></li>
<li>Previous: <a href="intro.html" title="previous chapter">Introduction</a></li>
</ul>
<h4 class="label label-orange">Related pages</h4>
<ul>
<li><a href="https://github.com/gevent/gevent/tree/master/examples"
title="Browse gevent/examples in the development repository">Code examples</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="clearer"> </div>
</div>
<div id="footer">
<div class="left" id="footer-left">
<p>version 1.2.2 <a href="http://denisbilenko.com" class="quiet-link">© 2009-2015 Denis Bilenko, gevent contributors</a></p>
<div class="clearer"> </div>
</div>
<div class="right" id="footer-right">
<p class="large"><a href="http://blog.gevent.org">Blog</a> <span class="text-separator">|</span> <a href="https://github.com/gevent/gevent">Code</a> <span class="text-separator">|</span> <a href="contents.html">Docs</a> <span class="text-separator">|</span> <a href="http://pypi.python.org/pypi/gevent">Download</a> <span class="text-separator">|</span> <a href="community.html">Mailing list</a> <span class="text-separator">|</span> <a href="https://github.com/gevent/gevent/issues">Issue tracker</a> <span class="text-separator">|</span> <a href="http://webchat.freenode.net/?channels=gevent" rel="nofollow">IRC</a> <span class="text-separator">|</span> <a href="#top" class="quiet">Page Top ↑</a></p>
</div>
<div class="clearer"> </div>
</div>
</div>
</body>
</html>
|