[pypy-commit] pypy.org nikola: fix two typos
cfbolz
pypy.commits at gmail.com
Wed Jan 8 03:41:57 EST 2020
Author: Carl Friedrich Bolz-Tereick <cfbolz at gmx.de>
Branch: nikola
Changeset: r971:8c85569a1071
Date: 2020-01-08 09:38 +0100
http://bitbucket.org/pypy/pypy.org/changeset/8c85569a1071/
Log: fix two typos
diff --git a/pages/index.rst b/pages/index.rst
--- a/pages/index.rst
+++ b/pages/index.rst
@@ -41,14 +41,14 @@
.. class:: small
-On average, PyPy is **4.4 times faser** than CPython
+On average, PyPy is **4.4 times faster** than CPython
.. figure:: images/pypy_speed_graph.png
:alt: PyPy vs. Python speed comparison graph"
:figclass: text-sm
PyPy trunk (with JIT) benchmark times normalized to CPython. Smaller is
- better. Based on he geometric average of all benchmarks
+ better. Based on the geometric average of all benchmarks
.. raw:: html
diff --git a/public/archive.html b/public/archive.html
--- a/public/archive.html
+++ b/public/archive.html
@@ -61,7 +61,7 @@
</header><p>No posts found.</p>
</article></main><footer id="footer"><p>
<img src="images/pypy-logo-nav-grey.png" alt="PyPy Logo"> Contents ©
-2019 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
+2020 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
</p>
</footer>
diff --git a/public/blog/index.html b/public/blog/index.html
--- a/public/blog/index.html
+++ b/public/blog/index.html
@@ -64,7 +64,7 @@
</main><footer id="footer"><p>
<img src="images/pypy-logo-nav-grey.png" alt="PyPy Logo"> Contents ©
-2019 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
+2020 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
</p>
</footer>
diff --git a/public/categories/index.html b/public/categories/index.html
--- a/public/categories/index.html
+++ b/public/categories/index.html
@@ -63,7 +63,7 @@
</div>
</header></article></main><footer id="footer"><p>
<img src="images/pypy-logo-nav-grey.png" alt="PyPy Logo"> Contents ©
-2019 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
+2020 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
</p>
</footer>
diff --git a/public/compat.html b/public/compat.html
--- a/public/compat.html
+++ b/public/compat.html
@@ -109,11 +109,11 @@
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>
-<pre class="code python"><a name="rest_code_171ff66a5a8940aea74fd4c766cc746e-1"></a><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>
+<pre class="code python"><a name="rest_code_70036feadffb497296ad8b0a7e6a5477-1"></a><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>
</pre>
<p>The proper fix is</p>
-<pre class="code python"><a name="rest_code_6d970e24940243f390d3e2518dab1da7-1"></a><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>
-<a name="rest_code_6d970e24940243f390d3e2518dab1da7-2"></a> <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>
+<pre class="code python"><a name="rest_code_fa080b8497dc418fa273f6f2e9cc4984-1"></a><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>
+<a name="rest_code_fa080b8497dc418fa273f6f2e9cc4984-2"></a> <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>
</pre>
<p>The same problem---not closing your files---can also show up if your
program opens a large number of files without closing them explicitly.
@@ -127,22 +127,22 @@
<p>Similarly, remember that you must <code class="docutils literal">close()</code> a non-exhausted
generator in order to have its pending <code class="docutils literal">finally</code> or <code class="docutils literal">with</code>
clauses executed immediately:</p>
-<pre class="code python"><a name="rest_code_35bd84f66c384000a4efa36835f2f48f-1"></a><span class="k">def</span> <span class="nf">mygen</span><span class="p">():</span>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-2"></a> <span class="k">with</span> <span class="n">foo</span><span class="p">:</span>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-3"></a> <span class="k">yield</span> <span class="mi">42</span>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-4"></a>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-5"></a><span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mygen</span><span class="p">():</span>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-6"></a> <span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="mi">42</span><span class="p">:</span>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-7"></a> <span class="k">break</span> <span class="c1"># foo.__exit__ is not run immediately!</span>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-8"></a>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-9"></a><span class="c1"># fixed version:</span>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-10"></a><span class="n">gen</span> <span class="o">=</span> <span class="n">mygen</span><span class="p">()</span>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-11"></a><span class="k">try</span><span class="p">:</span>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-12"></a> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">gen</span><span class="p">:</span>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-13"></a> <span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="mi">42</span><span class="p">:</span>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-14"></a> <span class="k">break</span>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-15"></a><span class="k">finally</span><span class="p">:</span>
-<a name="rest_code_35bd84f66c384000a4efa36835f2f48f-16"></a> <span class="n">gen</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+<pre class="code python"><a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-1"></a><span class="k">def</span> <span class="nf">mygen</span><span class="p">():</span>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-2"></a> <span class="k">with</span> <span class="n">foo</span><span class="p">:</span>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-3"></a> <span class="k">yield</span> <span class="mi">42</span>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-4"></a>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-5"></a><span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mygen</span><span class="p">():</span>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-6"></a> <span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="mi">42</span><span class="p">:</span>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-7"></a> <span class="k">break</span> <span class="c1"># foo.__exit__ is not run immediately!</span>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-8"></a>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-9"></a><span class="c1"># fixed version:</span>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-10"></a><span class="n">gen</span> <span class="o">=</span> <span class="n">mygen</span><span class="p">()</span>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-11"></a><span class="k">try</span><span class="p">:</span>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-12"></a> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">gen</span><span class="p">:</span>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-13"></a> <span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="mi">42</span><span class="p">:</span>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-14"></a> <span class="k">break</span>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-15"></a><span class="k">finally</span><span class="p">:</span>
+<a name="rest_code_a1b6cbdc4e004d87a13d05c47ad77398-16"></a> <span class="n">gen</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
</pre>
<p>More generally, <code class="docutils literal">__del__()</code> methods are not executed as predictively
as on CPython: they run "some time later" in PyPy (or not at all if
@@ -163,7 +163,7 @@
</article></main><footer id="footer"><p>
<img src="images/pypy-logo-nav-grey.png" alt="PyPy Logo"> Contents ©
-2019 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
+2020 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
</p>
</footer>
diff --git a/public/contact.html b/public/contact.html
--- a/public/contact.html
+++ b/public/contact.html
@@ -82,7 +82,7 @@
</article></main><footer id="footer"><p>
<img src="images/pypy-logo-nav-grey.png" alt="PyPy Logo"> Contents ©
-2019 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
+2020 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
</p>
</footer>
diff --git a/public/download.html b/public/download.html
--- a/public/download.html
+++ b/public/download.html
@@ -257,11 +257,11 @@
trunk using <a class="reference external" href="https://www.mercurial-scm.org/">Mercurial</a>. The trunk usually works and is of course
more up-to-date. The following command should run in about 7 minutes
nowadays if you have hg >= 3.7 (it is much slower with older versions):</p>
-<pre class="code bash"><a name="rest_code_eb222efdcc57450f9c01afcce48233ec-1"></a>hg clone https://bitbucket.org/pypy/pypy
+<pre class="code bash"><a name="rest_code_c1f6a57f6dc145cf9d0be6cc55504407-1"></a>hg clone https://bitbucket.org/pypy/pypy
</pre>
<p>The trunk contains PyPy 2. For PyPy 3, switch to the correct branch:</p>
-<pre class="code bash"><a name="rest_code_85d4249d66294887b619ae00370a5a1a-1"></a><span class="c1"># switch to the branch that implements Python 3.6</span>
-<a name="rest_code_85d4249d66294887b619ae00370a5a1a-2"></a>hg update py3.6
+<pre class="code bash"><a name="rest_code_db060d4350a7428cbd3ae2ce693c5595-1"></a><span class="c1"># switch to the branch that implements Python 3.6</span>
+<a name="rest_code_db060d4350a7428cbd3ae2ce693c5595-2"></a>hg update py3.6
</pre>
<p>Alternatively, get one of the following smaller packages for the source at
the same revision as the above binaries:</p>
@@ -275,19 +275,19 @@
</li>
<li>
<p>Enter the <code class="docutils literal">goal</code> directory:</p>
-<pre class="code bash"><a name="rest_code_5322dcf80b114303b4e460f5a48867ff-1"></a><span class="nb">cd</span> pypy/pypy/goal
+<pre class="code bash"><a name="rest_code_cbfc2282773844319735dc5bd20ffd1a-1"></a><span class="nb">cd</span> pypy/pypy/goal
</pre>
</li>
<li>
<p>Run the <code class="docutils literal">rpython</code> script. Here are the common combinations
of options (works also with <code class="docutils literal">python</code> instead of <code class="docutils literal">pypy</code>;
requires CPython 2.7 or PyPy 2, even to build PyPy 3):</p>
-<pre class="code bash"><a name="rest_code_ad08c81eebce4adda7a757d2b555e51b-1"></a><span class="c1"># get the JIT version</span>
-<a name="rest_code_ad08c81eebce4adda7a757d2b555e51b-2"></a>pypy ../../rpython/bin/rpython -Ojit targetpypystandalone
-<a name="rest_code_ad08c81eebce4adda7a757d2b555e51b-3"></a><span class="c1"># get the no-jit version</span>
-<a name="rest_code_ad08c81eebce4adda7a757d2b555e51b-4"></a>pypy ../../rpython/bin/rpython -O2 targetpypystandalone
-<a name="rest_code_ad08c81eebce4adda7a757d2b555e51b-5"></a><span class="c1"># get the sandbox version</span>
-<a name="rest_code_ad08c81eebce4adda7a757d2b555e51b-6"></a>pypy ../../rpython/bin/rpython -O2 --sandbox targetpypystandalone
+<pre class="code bash"><a name="rest_code_7f73c5eee7ec4910a08037efbd3341cf-1"></a><span class="c1"># get the JIT version</span>
+<a name="rest_code_7f73c5eee7ec4910a08037efbd3341cf-2"></a>pypy ../../rpython/bin/rpython -Ojit targetpypystandalone
+<a name="rest_code_7f73c5eee7ec4910a08037efbd3341cf-3"></a><span class="c1"># get the no-jit version</span>
+<a name="rest_code_7f73c5eee7ec4910a08037efbd3341cf-4"></a>pypy ../../rpython/bin/rpython -O2 targetpypystandalone
+<a name="rest_code_7f73c5eee7ec4910a08037efbd3341cf-5"></a><span class="c1"># get the sandbox version</span>
+<a name="rest_code_7f73c5eee7ec4910a08037efbd3341cf-6"></a>pypy ../../rpython/bin/rpython -O2 --sandbox targetpypystandalone
</pre>
</li>
<li><p>Enjoy Mandelbrot <code class="docutils literal"><span class="pre">:-)</span></code> It takes on the order of half an hour to
@@ -320,9 +320,9 @@
call it with <code class="docutils literal"><span class="pre">...pypy-c</span> <span class="pre">../../rpython/bin/rpython</span> <span class="pre">-Ojit</span></code>.</p>
<p>2. if even using PyPy instead of CPython is not enough, try to tweak
some internal parameters. Example (slower but saves around 400MB):</p>
-<pre class="code bash"><a name="rest_code_77ce200d788b4103830bd644a28a8433-1"></a><span class="nv">PYPY_DONT_RUN_SUBPROCESS</span><span class="o">=</span><span class="m">1</span> <span class="nv">PYPY_GC_MAX_DELTA</span><span class="o">=</span>200MB <span class="se">\</span>
-<a name="rest_code_77ce200d788b4103830bd644a28a8433-2"></a>pypy --jit <span class="nv">loop_longevity</span><span class="o">=</span><span class="m">300</span> ../../rpython/bin/rpython -Ojit --source
-<a name="rest_code_77ce200d788b4103830bd644a28a8433-3"></a><span class="c1"># then read the next point about --source</span>
+<pre class="code bash"><a name="rest_code_1d541122efac4444b614f7d18e9d1fe5-1"></a><span class="nv">PYPY_DONT_RUN_SUBPROCESS</span><span class="o">=</span><span class="m">1</span> <span class="nv">PYPY_GC_MAX_DELTA</span><span class="o">=</span>200MB <span class="se">\</span>
+<a name="rest_code_1d541122efac4444b614f7d18e9d1fe5-2"></a>pypy --jit <span class="nv">loop_longevity</span><span class="o">=</span><span class="m">300</span> ../../rpython/bin/rpython -Ojit --source
+<a name="rest_code_1d541122efac4444b614f7d18e9d1fe5-3"></a><span class="c1"># then read the next point about --source</span>
</pre>
</li>
<li><p>You can run translations with <code class="docutils literal"><span class="pre">--source</span></code>, which only builds the C
@@ -343,9 +343,9 @@
<p>Once PyPy is translated from source the binary package similar to those
provided in the section <a class="reference internal" href="download.html#default-with-a-jit-compiler">Default (with a JIT Compiler)</a> above could be
easily created with <code class="docutils literal">package.py</code> script:</p>
-<pre class="code bash"><a name="rest_code_a0dd03f8836b440982e9ed4bcd9d5999-1"></a><span class="nb">cd</span> ./pypy/pypy/tool/release/
-<a name="rest_code_a0dd03f8836b440982e9ed4bcd9d5999-2"></a>python package.py --help <span class="c1">#for information</span>
-<a name="rest_code_a0dd03f8836b440982e9ed4bcd9d5999-3"></a>python package.py --archive-name pypy-my-own-package-name
+<pre class="code bash"><a name="rest_code_8bbac17aef5e4c6583369269ff7919bd-1"></a><span class="nb">cd</span> ./pypy/pypy/tool/release/
+<a name="rest_code_8bbac17aef5e4c6583369269ff7919bd-2"></a>python package.py --help <span class="c1">#for information</span>
+<a name="rest_code_8bbac17aef5e4c6583369269ff7919bd-3"></a>python package.py --archive-name pypy-my-own-package-name
</pre>
<p>It is recommended to use package.py because custom scripts will
invariably become out-of-date. If you want to write custom scripts
@@ -455,7 +455,7 @@
</article></main><footer id="footer"><p>
<img src="images/pypy-logo-nav-grey.png" alt="PyPy Logo"> Contents ©
-2019 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
+2020 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
</p>
</footer>
diff --git a/public/features.html b/public/features.html
--- a/public/features.html
+++ b/public/features.html
@@ -157,16 +157,16 @@
build <code class="docutils literal"><span class="pre">pypy-sandbox</span></code> from it (see <a class="reference external" href="download.html#building-from-source">Building from source</a>). These
instructions give you a <code class="docutils literal"><span class="pre">pypy-c</span></code> that you should rename to
<code class="docutils literal"><span class="pre">pypy-sandbox</span></code> to avoid future confusion. Then run:</p>
-<pre class="code bash"><a name="rest_code_8e62c9019a8d4f5285cd3e9e15afe580-1"></a><span class="nb">cd</span> pypy/sandbox
-<a name="rest_code_8e62c9019a8d4f5285cd3e9e15afe580-2"></a>pypy_interact.py path/to/pypy-sandbox
-<a name="rest_code_8e62c9019a8d4f5285cd3e9e15afe580-3"></a><span class="c1"># don't confuse it with pypy/goal/pyinteractive.py!</span>
+<pre class="code bash"><a name="rest_code_d8a8660498ac4e2f88a5b8fcf70faaa8-1"></a><span class="nb">cd</span> pypy/sandbox
+<a name="rest_code_d8a8660498ac4e2f88a5b8fcf70faaa8-2"></a>pypy_interact.py path/to/pypy-sandbox
+<a name="rest_code_d8a8660498ac4e2f88a5b8fcf70faaa8-3"></a><span class="c1"># don't confuse it with pypy/goal/pyinteractive.py!</span>
</pre>
<p>You get a fully sandboxed interpreter, in its own filesystem hierarchy
(try <code class="docutils literal"><span class="pre">os.listdir('/')</span></code>). For example, you would run an untrusted
script as follows:</p>
-<pre class="code bash"><a name="rest_code_d48bb7a9ea1d499c9f2cb67b35ca403f-1"></a>mkdir virtualtmp
-<a name="rest_code_d48bb7a9ea1d499c9f2cb67b35ca403f-2"></a>cp untrusted.py virtualtmp/
-<a name="rest_code_d48bb7a9ea1d499c9f2cb67b35ca403f-3"></a>pypy_interact.py --tmp<span class="o">=</span>virtualtmp pypy-sandbox /tmp/untrusted.py
+<pre class="code bash"><a name="rest_code_c0777f208eeb440cb2a30c4791d5446d-1"></a>mkdir virtualtmp
+<a name="rest_code_c0777f208eeb440cb2a30c4791d5446d-2"></a>cp untrusted.py virtualtmp/
+<a name="rest_code_c0777f208eeb440cb2a30c4791d5446d-3"></a>pypy_interact.py --tmp<span class="o">=</span>virtualtmp pypy-sandbox /tmp/untrusted.py
</pre>
<p>Note that the path <code class="docutils literal">/tmp/untrusted.py</code> is a path inside the sandboxed
filesystem. You don't have to put <code class="docutils literal">untrusted.py</code> in the real <code class="docutils literal">/tmp</code>
@@ -180,7 +180,7 @@
</article></main><footer id="footer"><p>
<img src="images/pypy-logo-nav-grey.png" alt="PyPy Logo"> Contents ©
-2019 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
+2020 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
</p>
</footer>
diff --git a/public/index.html b/public/index.html
--- a/public/index.html
+++ b/public/index.html
@@ -20,15 +20,12 @@
<meta property="og:site_name" content="PyPy">
<meta property="og:title" content="Welcome to PyPy">
<meta property="og:url" content="https://www.pypy.org/">
-<meta property="og:description" content="A fast, compliant alternative implementation of Python
+<meta property="og:description" content='A fast, compliant alternative implementation of Python
Get Started : Download and install
What is PyPy : Features
Documentation (external link)
-
-On average, PyPy is 4.4 times faser than CPython
-
-
-PyPy">
+"If you want your code to run faster,
+you should probabl'>
<meta property="og:type" content="article">
<meta property="article:published_time" content="2019-12-28T16:14:02Z">
</head>
@@ -75,25 +72,20 @@
</header><div class="e-content entry-content" itemprop="articleBody text">
- <div>
-<div class="row">
+ <div class="row">
<div class="column pb-4">
<img alt="PyPy logo" src="images/pypy-logo.svg" style="width: 350px;"><p>A <a class="reference external" href="http://speed.pypy.org/">fast</a>, <a class="reference external" href="compat.html">compliant</a> alternative implementation of <a class="reference external" href="http://python.org/">Python</a></p>
<p class="button"><a class="reference external" href="download.html">Get Started</a> : Download and install</p>
<p class="button"><a class="reference external" href="features.html">What is PyPy</a> : Features</p>
<p class="button"><a class="reference external" href="https://doc.pypy.org">Documentation</a> (external link)</p>
-</div>
-<div class="column pb-4">
-<p class="small">On average, PyPy is <strong>4.4 times faser</strong> than CPython</p>
-<div class="text-sm figure">
-<img alt='PyPy vs. Python speed comparison graph"' src="images/pypy_speed_graph.png"><p class="caption">PyPy trunk (with JIT) benchmark times normalized to CPython. Smaller is
-better. Based on he geometric average of all benchmarks</p>
-</div>
-</div>
-</div>
<pre class="literal-block">"If you want your code to run faster,
you should probably just use PyPy."
-- Guido van Rossum (creator of Python)</pre>
+<p>On average, PyPy is <strong>4.4 times faster</strong> than CPython</p>
+<div class="text-sm figure">
+<img alt='PyPy vs. Python speed comparison graph"' src="images/pypy_speed_graph.png"><p class="caption">PyPy trunk (with JIT) benchmark times normalized to CPython. Smaller is
+better. Based on the geometric average of all benchmarks</p>
+</div>
<p><strong>Advantages and distinct Features</strong></p>
<ul class="simple">
<li><p><strong>Speed:</strong> thanks to its Just-in-Time compiler, Python programs
@@ -108,11 +100,12 @@
<li><p>As well as other <a class="reference external" href="features.html">features</a>.</p></li>
</ul>
</div>
+</div>
</div>
</article></main><footer id="footer"><p>
<img src="images/pypy-logo-nav-grey.png" alt="PyPy Logo"> Contents ©
-2019 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
+2020 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
</p>
</footer>
diff --git a/public/index.rst b/public/index.rst
--- a/public/index.rst
+++ b/public/index.rst
@@ -34,32 +34,22 @@
.. _`What is PyPy`: features.html
.. _`Documentation`: https://doc.pypy.org
-.. raw:: html
- </div>
- <div class="column pb-4" "flex-basis: 400px">
+::
-.. class:: small
+ "If you want your code to run faster,
+ you should probably just use PyPy."
+ -- Guido van Rossum (creator of Python)
-On average, PyPy is **4.4 times faser** than CPython
+On average, PyPy is **4.4 times faster** than CPython
.. figure:: images/pypy_speed_graph.png
:alt: PyPy vs. Python speed comparison graph"
:figclass: text-sm
PyPy trunk (with JIT) benchmark times normalized to CPython. Smaller is
- better. Based on he geometric average of all benchmarks
+ better. Based on the geometric average of all benchmarks
-.. raw:: html
-
- </div>
- </div>
-
-::
-
- "If you want your code to run faster,
- you should probably just use PyPy."
- -- Guido van Rossum (creator of Python)
**Advantages and distinct Features**
diff --git a/public/people.html b/public/people.html
--- a/public/people.html
+++ b/public/people.html
@@ -188,7 +188,7 @@
</article></main><footer id="footer"><p>
<img src="images/pypy-logo-nav-grey.png" alt="PyPy Logo"> Contents ©
-2019 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
+2020 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
</p>
</footer>
diff --git a/public/performance.html b/public/performance.html
--- a/public/performance.html
+++ b/public/performance.html
@@ -235,13 +235,13 @@
<div class="section" id="string-concatenation-is-expensive">
<h3>String concatenation is expensive</h3>
<p>In CPython, you may want to replace:</p>
-<pre class="code python"><a name="rest_code_ce6361ac82b941c2baf7683e62801171-1"></a><span class="n">s</span> <span class="o">=</span> <span class="n">head</span> <span class="o">+</span> <span class="n">body</span> <span class="o">+</span> <span class="n">maybe</span> <span class="o">+</span> <span class="n">tail</span>
+<pre class="code python"><a name="rest_code_932017a3c2d84bb982ab371c27785e79-1"></a><span class="n">s</span> <span class="o">=</span> <span class="n">head</span> <span class="o">+</span> <span class="n">body</span> <span class="o">+</span> <span class="n">maybe</span> <span class="o">+</span> <span class="n">tail</span>
</pre>
<p>with the admittedly less readable:</p>
-<pre class="code python"><a name="rest_code_c50435e403854b8eac9c35780c72b6d8-1"></a><span class="n">s</span> <span class="o">=</span> <span class="s2">"</span><span class="si">%(head)s%(body)s%(maybe)s%(tail)s</span><span class="s2">"</span> <span class="o">%</span> <span class="nb">locals</span><span class="p">()</span>
+<pre class="code python"><a name="rest_code_69e68d1d51ff463ebd512343ae0ab687-1"></a><span class="n">s</span> <span class="o">=</span> <span class="s2">"</span><span class="si">%(head)s%(body)s%(maybe)s%(tail)s</span><span class="s2">"</span> <span class="o">%</span> <span class="nb">locals</span><span class="p">()</span>
</pre>
<p>or even:</p>
-<pre class="code python"><a name="rest_code_45df624352d84e12a607edff5600123f-1"></a><span class="n">s</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{head}{body}{maybe}{tail}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="nb">locals</span><span class="p">())</span>
+<pre class="code python"><a name="rest_code_173ee5bb4c34441bb6e1ea4a45e617ca-1"></a><span class="n">s</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{head}{body}{maybe}{tail}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="nb">locals</span><span class="p">())</span>
</pre>
<p>Both of the latter forms avoid multiple-allocation overhead.
But PyPy's JIT makes the overhead of intermediate concatenations
@@ -249,8 +249,8 @@
small, bound and constant. (And <code class="docutils literal">locals()</code> is rather slow
with PyPy's JIT.)</p>
<p>On the other hand, in code like this with a string-valued foo() function:</p>
-<pre class="code python"><a name="rest_code_98503b81c63d4dbe8a95eb4b488622a2-1"></a><span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mylist</span><span class="p">:</span>
-<a name="rest_code_98503b81c63d4dbe8a95eb4b488622a2-2"></a> <span class="n">s</span> <span class="o">+=</span> <span class="n">foo</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
+<pre class="code python"><a name="rest_code_18614ba6a1144dd39058438e85bdf56d-1"></a><span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mylist</span><span class="p">:</span>
+<a name="rest_code_18614ba6a1144dd39058438e85bdf56d-2"></a> <span class="n">s</span> <span class="o">+=</span> <span class="n">foo</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
</pre>
<p>the JIT cannot optimize out intermediate copies. This code is
actually quadratic in the total size of the mylist strings due to
@@ -258,10 +258,10 @@
is always fine for bytearrays, because in this case <code class="docutils literal">+=</code> is an
in-place operation.)</p>
<p>This:</p>
-<pre class="code python"><a name="rest_code_577f1ce781034a32aa3369ac2ae4572b-1"></a><span class="n">parts</span> <span class="o">=</span> <span class="p">[]</span>
-<a name="rest_code_577f1ce781034a32aa3369ac2ae4572b-2"></a><span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mylist</span><span class="p">:</span>
-<a name="rest_code_577f1ce781034a32aa3369ac2ae4572b-3"></a> <span class="n">parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">foo</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
-<a name="rest_code_577f1ce781034a32aa3369ac2ae4572b-4"></a><span class="n">s</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">parts</span><span class="p">)</span>
+<pre class="code python"><a name="rest_code_ac7860eb3b5340cbb49fa7f1f237b9b9-1"></a><span class="n">parts</span> <span class="o">=</span> <span class="p">[]</span>
+<a name="rest_code_ac7860eb3b5340cbb49fa7f1f237b9b9-2"></a><span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mylist</span><span class="p">:</span>
+<a name="rest_code_ac7860eb3b5340cbb49fa7f1f237b9b9-3"></a> <span class="n">parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">foo</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
+<a name="rest_code_ac7860eb3b5340cbb49fa7f1f237b9b9-4"></a><span class="n">s</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">parts</span><span class="p">)</span>
</pre>
<p>can be much faster because all the string concatenation in the last
line creates exactly one new string object with one C-level copy
@@ -373,7 +373,7 @@
</article></main><footer id="footer"><p>
<img src="images/pypy-logo-nav-grey.png" alt="PyPy Logo"> Contents ©
-2019 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
+2020 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a>
</p>
</footer>
diff --git a/public/rss.xml b/public/rss.xml
--- a/public/rss.xml
+++ b/public/rss.xml
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
-<?xml-stylesheet type="text/xsl" href="assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>PyPy</title><link>https://www.pypy.org/</link><description>A Faster Python</description><atom:link href="https://www.pypy.org/rss.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2019 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> </copyright><lastBuildDate>Mon, 30 Dec 2019 07:43:17 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs></channel></rss>
\ No newline at end of file
+<?xml-stylesheet type="text/xsl" href="assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>PyPy</title><link>https://www.pypy.org/</link><description>A Faster Python</description><atom:link href="https://www.pypy.org/rss.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2020 <a href="mailto:pypy-dev at pypy.org">The PyPy Team</a> </copyright><lastBuildDate>Wed, 08 Jan 2020 08:33:50 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs></channel></rss>
\ No newline at end of file
diff --git a/public/sitemap.xml b/public/sitemap.xml
--- a/public/sitemap.xml
+++ b/public/sitemap.xml
@@ -7,42 +7,42 @@
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>https://www.pypy.org/</loc>
- <lastmod>2019-12-30T13:22:00Z</lastmod>
+ <lastmod>2020-01-08T08:35:00Z</lastmod>
</url>
<url>
<loc>https://www.pypy.org/archive.html</loc>
- <lastmod>2019-12-30T13:28:00Z</lastmod>
+ <lastmod>2020-01-08T08:33:00Z</lastmod>
</url>
<url>
<loc>https://www.pypy.org/blog/</loc>
- <lastmod>2019-12-30T07:43:00Z</lastmod>
+ <lastmod>2020-01-08T05:16:00Z</lastmod>
</url>
<url>
<loc>https://www.pypy.org/categories/</loc>
- <lastmod>2019-12-30T07:43:00Z</lastmod>
+ <lastmod>2020-01-08T05:16:00Z</lastmod>
</url>
<url>
<loc>https://www.pypy.org/compat.html</loc>
- <lastmod>2019-12-30T13:28:00Z</lastmod>
+ <lastmod>2020-01-08T08:33:00Z</lastmod>
</url>
<url>
<loc>https://www.pypy.org/contact.html</loc>
- <lastmod>2019-12-30T13:28:00Z</lastmod>
+ <lastmod>2020-01-08T08:33:00Z</lastmod>
</url>
<url>
<loc>https://www.pypy.org/download.html</loc>
- <lastmod>2019-12-30T13:28:00Z</lastmod>
+ <lastmod>2020-01-08T08:33:00Z</lastmod>
</url>
<url>
<loc>https://www.pypy.org/features.html</loc>
- <lastmod>2019-12-30T13:28:00Z</lastmod>
+ <lastmod>2020-01-08T08:33:00Z</lastmod>
</url>
<url>
<loc>https://www.pypy.org/people.html</loc>
- <lastmod>2019-12-30T13:28:00Z</lastmod>
+ <lastmod>2020-01-08T08:33:00Z</lastmod>
</url>
<url>
<loc>https://www.pypy.org/performance.html</loc>
- <lastmod>2019-12-30T13:28:00Z</lastmod>
+ <lastmod>2020-01-08T08:33:00Z</lastmod>
</url>
</urlset>
\ No newline at end of file
diff --git a/public/sitemapindex.xml b/public/sitemapindex.xml
--- a/public/sitemapindex.xml
+++ b/public/sitemapindex.xml
@@ -7,10 +7,10 @@
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<sitemap>
<loc>https://www.pypy.org/rss.xml</loc>
- <lastmod>2019-12-30T07:43:00Z</lastmod>
+ <lastmod>2020-01-08T08:33:00Z</lastmod>
</sitemap>
<sitemap>
<loc>https://www.pypy.org/sitemap.xml</loc>
- <lastmod>2019-12-30T13:28:00Z</lastmod>
+ <lastmod>2020-01-08T08:35:00Z</lastmod>
</sitemap>
</sitemapindex>
\ No newline at end of file
More information about the pypy-commit
mailing list