Author: Richard Plangger <planri...@gmail.com> Branch: extradoc Changeset: r737:7da22d5ebd79 Date: 2016-04-29 08:37 +0200 http://bitbucket.org/pypy/pypy.org/changeset/7da22d5ebd79/
Log: updated the architectures on features.html and regenerated them diff --git a/compat.html b/compat.html --- a/compat.html +++ b/compat.html @@ -111,15 +111,15 @@ not support refcounting semantics. The following code won't fill the file immediately, but only after a certain period of time, when the GC does a collection:</p> -<div class="syntax python"><pre><span class="nb">open</span><span class="p">(</span><span class="s">"filename"</span><span class="p">,</span> <span class="s">"w"</span><span class="p">)</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">"stuff"</span><span class="p">)</span><br/></pre></div> +<div class="syntax python"><pre><span></span><span class="nb">open</span><span class="p">(</span><span class="s2">"filename"</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">)</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">"stuff"</span><span class="p">)</span><br/></pre></div> <p>The proper fix is</p> -<div class="syntax python"><pre><span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="s">"filename"</span><span class="p">,</span> <span class="s">"w"</span><span class="p">)</span><br/><span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">"stuff"</span><span class="p">)</span><br/><span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span><br/></pre></div> +<div class="syntax python"><pre><span></span><span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="s2">"filename"</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">)</span><br/><span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">"stuff"</span><span class="p">)</span><br/><span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span><br/></pre></div> <p>or using the <tt class="docutils literal">with</tt> keyword</p> -<div class="syntax python"><pre><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s">"filename"</span><span class="p">,</span> <span class="s">"w"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span><br/> <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">"stuff"</span><span class="p">)</span><br/></pre></div> +<div class="syntax python"><pre><span></span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">"filename"</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span><br/> <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">"stuff"</span><span class="p">)</span><br/></pre></div> <p>Similarly, remember that you must <tt class="docutils literal">close()</tt> a non-exhausted generator in order to have its pending <tt class="docutils literal">finally</tt> or <tt class="docutils literal">with</tt> clauses executed immediately:</p> -<div class="syntax python"><pre><span class="k">def</span> <span class="nf">mygen</span><span class="p">():</span><br/> <span class="k">with</span> <span class="n">foo</span><span class="p">:</span><br/> <span class="k">yield</span> <span class="mi">42</span><br/><br/><span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mygen</span><span class="p">():</span><br/> <span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="mi">42</span><span class="p">:</span><br/> <span class="k">break</span> <span class="c"># foo.__exit__ is not run immediately!</span><br/><br/><span class="c"># fixed version:</span><br/><span class="n">gen</span> <span class="o">=</span> <span class="n">mygen</span><span class="p">()</span><br/><span class="k">try</span><span class="p">:</span><br/> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">gen</span><span class="p" >:</span><br/> <span class="k">if</span> <span class="n">x</span> <span >class="o">==</span> <span class="mi">42</span><span class="p">:</span><br/> > <span class="k">break</span><br/><span class="k">finally</span><span >class="p">:</span><br/> <span class="n">gen</span><span >class="o">.</span><span class="n">close</span><span >class="p">()</span><br/></pre></div> +<div class="syntax python"><pre><span></span><span class="k">def</span> <span class="nf">mygen</span><span class="p">():</span><br/> <span class="k">with</span> <span class="n">foo</span><span class="p">:</span><br/> <span class="k">yield</span> <span class="mi">42</span><br/><br/><span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mygen</span><span class="p">():</span><br/> <span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="mi">42</span><span class="p">:</span><br/> <span class="k">break</span> <span class="c1"># foo.__exit__ is not run immediately!</span><br/><br/><span class="c1"># fixed version:</span><br/><span class="n">gen</span> <span class="o">=</span> <span class="n">mygen</span><span class="p">()</span><br/><span class="k">try</span><span class="p">:</span><br/> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">gen</span> <span class="p">:</span><br/> <span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="mi">42</span><span class="p">:</span><br/> <span class="k">break</span><br/><span class="k">finally</span><span class="p">:</span><br/> <span class="n">gen</span><span class="o">.</span><span class="n">close</span><span class="p">()</span><br/></pre></div> <p>More generally, <tt class="docutils literal">__del__()</tt> methods are not executed as predictively as on CPython: they run “some time later” in PyPy (or not at all if the program finishes running in the meantime). See <a class="reference external" href="http://pypy.readthedocs.org/en/latest/cpython_differences.html#differences-related-to-garbage-collection-strategies">more details diff --git a/features.html b/features.html --- a/features.html +++ b/features.html @@ -72,13 +72,20 @@ <p>PyPy is a replacement for CPython. It is built using the RPython language that was co-developed with it. The main reason to use it instead of CPython is speed: it runs generally faster (see next section).</p> -<p><strong>PyPy</strong> implements <strong>Python 2.7.10</strong> and runs on Intel -<a class="reference external" href="http://en.wikipedia.org/wiki/IA-32">x86 (IA-32)</a> , <a class="reference external" href="http://en.wikipedia.org/wiki/X86_64">x86_64</a> and <a class="reference external" href="http://en.wikipedia.org/wiki/ARM">ARM</a> platforms, with PPC being -stalled. It supports all of the core language, passing the Python test suite +<p><strong>PyPy</strong> implements <strong>Python 2.7.10</strong>. +It supports all of the core language, passing the Python test suite (with minor modifications that were already accepted in the main python in newer versions). It supports most of the commonly used Python standard library modules. For known differences with CPython, see our <a class="reference external" href="compat.html">compatibility</a> page.</p> +<p>The following CPU architectures are supported and maintained:</p> +<ul class="simple"> +<li><a class="reference external" href="http://en.wikipedia.org/wiki/IA-32">x86 (IA-32)</a></li> +<li><a class="reference external" href="http://en.wikipedia.org/wiki/X86_64">x86_64</a></li> +<li><a class="reference external" href="http://en.wikipedia.org/wiki/ARM">ARM</a> platforms</li> +<li><a class="reference external" href="https://de.wikipedia.org/wiki/PowerPC">PPC</a> 64bit both little and big endian</li> +<li><a class="reference external" href="https://de.wikipedia.org/wiki/System/390">s390x</a> running on Linux</li> +</ul> <p>If you are interested in helping to move forward, see our <a class="reference external" href="howtohelp.html">howtohelp</a> page.</p> <p>We also have a beta release of <strong>PyPy3</strong> which implements <strong>Python 3.2.5</strong>. It runs on the same platforms as above.</p> diff --git a/source/features.txt b/source/features.txt --- a/source/features.txt +++ b/source/features.txt @@ -10,14 +10,22 @@ language that was co-developed with it. The main reason to use it instead of CPython is speed: it runs generally faster (see next section). -**PyPy** implements **Python 2.7.10** and runs on Intel -`x86 (IA-32)`_ , `x86_64`_ and `ARM`_ platforms, with PPC being -stalled. It supports all of the core language, passing the Python test suite +**PyPy** implements **Python 2.7.10**. +It supports all of the core language, passing the Python test suite (with minor modifications that were already accepted in the main python in newer versions). It supports most of the commonly used Python standard library modules. For known differences with CPython, see our `compatibility`_ page. +The following CPU architectures are supported and maintained: + +* `x86 (IA-32)`_ +* `x86_64`_ +* `ARM`_ platforms +* `PPC`_ 64bit both little and big endian +* `s390x`_ running on Linux + + If you are interested in helping to move forward, see our `howtohelp`_ page. We also have a beta release of **PyPy3** which implements **Python 3.2.5**. @@ -27,6 +35,8 @@ .. _`x86 (IA-32)`: http://en.wikipedia.org/wiki/IA-32 .. _`x86_64`: http://en.wikipedia.org/wiki/X86_64 .. _`ARM`: http://en.wikipedia.org/wiki/ARM +.. _`PPC`: https://de.wikipedia.org/wiki/PowerPC +.. _`s390x`: https://de.wikipedia.org/wiki/System/390 .. _`howtohelp`: howtohelp.html _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit