diff --git a/README b/README
index de90045ba162d007c5fe5412df14ca9a94a31cb2_UkVBRE1F..a6456ff7279d526d3d115faf2174e8f0b36167f0_UkVBRE1F 100644
--- a/README
+++ b/README
@@ -4,5 +4,5 @@
 See source/README.
 
 The site is pull into pypy.org by a cron job on a psf-hosted instance,
-see https://github.com/python/psf-chef/blob/master/cookbooks/pypy-home/recipes/default.rb
+see https://github.com/python/psf-salt/tree/master/salt/pypy-web
 The people with access to the instance are the ones in
@@ -8,3 +8,3 @@
 The people with access to the instance are the ones in
-https://github.com/python/psf-chef/tree/master/data_bags/users
-with pypy-home access
+https://github.com/python/psf-salt/blob/master/pillar/base/users.sls
+with pypy-web access
diff --git a/README-DO-NOT-EDIT b/README-DO-NOT-EDIT
index de90045ba162d007c5fe5412df14ca9a94a31cb2_UkVBRE1FLURPLU5PVC1FRElU..a6456ff7279d526d3d115faf2174e8f0b36167f0_UkVBRE1FLURPLU5PVC1FRElU 100644
--- a/README-DO-NOT-EDIT
+++ b/README-DO-NOT-EDIT
@@ -1,2 +1,3 @@
-These html files are not written by hand!
-See source/README.
+The content of public is not written by hand!
+It are generated via a Makefile.
+The files in source/* are the old yatiblog sources.
diff --git a/archive.html b/archive.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_YXJjaGl2ZS5odG1s..0000000000000000000000000000000000000000
--- a/archive.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div class="section-info" id="all-articles"><strong>Blog Posts Archive</strong></div>
-<ul>
-</ul>
-<br />
-<div class="section-info" id="all-articles"><strong>Other Articles</strong></div>
-<ul>
-</ul>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/compat.html b/compat.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_Y29tcGF0Lmh0bWw=..0000000000000000000000000000000000000000
--- a/compat.html
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy - Python compatibility</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div id="main">
-<h1 class="title">Python compatibility</h1>
-<p>PyPy implements the Python language version 2.7.13. It supports all of the core
-language, passing 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 <a class="reference external" href="http://docs.python.org/library/">standard library modules</a>; details below.</p>
-<p>PyPy3 implements the Python language version 3.6.9.  It has been released,
-but Python is a large language and it is quite possible that a few things are missing.</p>
-<p class="download-menu"><a class="reference external" href="http://packages.pypy.org">List of installable top 1000 PyPI packages</a></p>
-<p>PyPy has support for the <a class="reference external" href="http://docs.python.org/c-api/">CPython C API</a>, however there are constructs
-that are <cite>not compatible</cite>.  We strongly advise use of <a class="reference external" href="http://cffi.readthedocs.org/">CFFI</a>
-instead. CFFI come builtin with PyPy. Many libraries will require
-a bit of effort to work, but there are known success stories. Check out
-PyPy blog for updates, as well as the <a class="reference external" href="https://bitbucket.org/pypy/compatibility/wiki/Home">Compatibility Wiki</a>.</p>
-<p>C extensions need to be recompiled for PyPy in order to work. Depending on
-your build system, it might work out of the box or will be slightly harder.</p>
-<p>Standard library modules supported by PyPy. Note that large parts of python
-library are implemented in pure python, so they don't have to be listed
-there. Please just check if it imports. If it imports, it should work.</p>
-<ul class="simple">
-<li><tt class="docutils literal">__builtin__, __pypy__, _ast, _cffi_backend, _codecs, _collections, _continuation, _csv, _file, _hashlib, _io, _locale, _lsprof, _md5, _minimal_curses, _multibytecodec, _multiprocessing, _numpypy, _pickle_support, _pypyjson, _random, _rawffi, _sha, _socket, _sre, _ssl, _struct, _testing, _warnings, _weakref, array, binascii, bz2, cStringIO, cmath, cppyy, cpyext, crypt, errno, exceptions, fcntl, gc, imp, itertools, marshal, math, mmap, operator, parser, posix, pwd, pyexpat, pypyjit, select, signal, symbol, sys, termios, thread, time, token, unicodedata, zipimport, zlib</tt></li>
-</ul>
-<p>Supported, but written in pure Python:</p>
-<ul class="simple">
-<li><tt class="docutils literal">cPickle, ctypes, datetime, dbm, _functools, grp, readline, resource, sqlite3, syslog</tt></li>
-</ul>
-<p>All modules that are pure python in CPython of course work.</p>
-<p>Python libraries known to work under PyPy (the list is not exhaustive).
-A <a class="reference external" href="http://packages.pypy.org">fuller list</a> is available.</p>
-<ul class="simple">
-<li>ctypes</li>
-<li>django</li>
-<li>sqlalchemy</li>
-<li>flask</li>
-<li>twisted</li>
-<li>pylons</li>
-<li>divmod's nevow</li>
-<li>pyglet</li>
-<li>Pillow (the PIL fork)</li>
-<li><a class="reference external" href="https://github.com/amauryfa/lxml/tree/cffi/">lxml</a></li>
-<li>NumPy</li>
-</ul>
-<p>The main difference that is not going to be fixed is that PyPy does
-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></span><span class="nb">open</span><span class="p">(</span><span class="s2">&quot;filename&quot;</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;stuff&quot;</span><span class="p">)</span><br/></pre></div>
-<p>The proper fix is</p>
-<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">&quot;filename&quot;</span><span class="p">,</span> <span class="s2">&quot;w&quot;</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">&quot;stuff&quot;</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></span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&quot;filename&quot;</span><span class="p">,</span> <span class="s2">&quot;w&quot;</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">&quot;stuff&quot;</span><span class="p">)</span><br/></pre></div>
-<p>The same problem&ndash;not closing your files&ndash;can also show up if your
-program opens a large number of files without closing them explicitly.
-In that case, you can easily hit the system limit on the number of file
-descriptors that are allowed to be opened at the same time.</p>
-<p>Since release 5.4, PyPy can be run with the command-line option <tt class="docutils literal"><span class="pre">-X</span>
-<span class="pre">track-resources</span></tt> (as in, <tt class="docutils literal">pypy <span class="pre">-X</span> <span class="pre">track-resources</span> myprogram.py</tt>).
-This produces a ResourceWarning when the GC closes a non-closed file or
-socket.  The traceback for the place where the file or socket was
-allocated is given as well, which aids finding places where <tt class="docutils literal">close()</tt>
-is missing.</p>
-<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></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 &ldquo;some time later&rdquo; 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
-here</a>.</p>
-<p>Note that PyPy returns unused memory to the operating system if there
-is a madvise() system call (at least Linux, OS X, BSD) or on Windows.  It is
-important to realize that you may not see this in <tt class="docutils literal">top</tt>.  The unused
-pages are marked with <tt class="docutils literal">MADV_FREE</tt>, which tells the system &ldquo;if you
-need more memory at some point, grab this page&rdquo;.  As long as memory is
-plentiful, the <tt class="docutils literal">RES</tt> column in <tt class="docutils literal">top</tt> might remains high.  (Exceptions to
-this rule are systems with no <tt class="docutils literal">MADV_FREE</tt>, where we use
-<tt class="docutils literal">MADV_DONTNEED</tt>, which forcefully lowers the <tt class="docutils literal">RES</tt>.  This includes
-Linux &lt;= 4.4.)</p>
-<p>A more complete list of known differences is available at <a class="reference external" href="http://pypy.readthedocs.org/en/latest/cpython_differences.html">our dev site</a>.</p>
-</div>
-<div id="sidebar">
-</div>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/contact.html b/contact.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_Y29udGFjdC5odG1s..0000000000000000000000000000000000000000
--- a/contact.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy - Contact</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div id="main">
-<h1 class="title">Contact</h1>
-<ul class="simple">
-<li>irc: <strong>#pypy</strong> on <strong>irc.freenode.net</strong></li>
-<li>mailing list: <a class="reference external" href="http://mail.python.org/mailman/listinfo/pypy-dev">pypy-dev at python.org</a></li>
-<li>for security related issues, non-public funding enquiries etc. please contact <a class="reference external" href="mailto:pypy-z&#64;python.org">pypy-z&#64;python.org</a></li>
-<li>the bitbucket <a class="reference external" href="https://bitbucket.org/pypy/pypy/issues?status=new&amp;status=open">bug tracker</a> (registration required to open new issues or to comment)</li>
-<li>more on our <a class="reference external" href="http://doc.pypy.org">dev site</a>.</li>
-<li>code on <a class="reference external" href="https://bitbucket.org/pypy/pypy/overview">bitbucket</a>.</li>
-</ul>
-</div>
-<div id="sidebar">
-</div>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/don1.html b/don1.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_ZG9uMS5odG1s..0000000000000000000000000000000000000000
--- a/don1.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<ul>
-  <li>
-    <a href="#" onclick="stm_donate(); return false;">Donate towards STM in pypy</a><br/>
-    <a href="#" onclick="py3k_donate(); return false;"><b>Donate towards py3k in pypy</b></a><br/>
-    <a href="#" onclick="general_donate(); return false;">Donate towards general pypy progress</a><br/>
-    <!-- a href="#" onclick="numpy_donate(); return false;">Donate towards NumPy in pypy</a><br/ --!>
-  </li>
-  <li>
-<script>
-  $(function() {
-    $("#progressbar").progressbar({
-      value: 65.2
-   });
-  });
-</script>
-
-   <!-- Income:PyPy:Donations:Py3k / 0.95 -->
-   $68455 of $105000 (65.2%)
-   <div id="progressbar">
-   </div>
-
-  </li>
-  <li>
-  <span id="donate_text">This donation goes towards supporting Python 3 in PyPy.
-  Current status:
-    we have $4093 left
-  in the account.</br> <a href="py3donate.html">Read proposal</a></span>
-  </li>
-  <li>
-  <div class="sidepic">
-    <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
-    <input type="hidden" name="cmd" value="_s-xclick"/>
-    <input type="hidden" name="hosted_button_id" value="XBG5EK3URC5G8"/>
-    <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"/>
-    <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"/>
-    </form>
-  </div>
-  </li>
-  <li>
-    <div class="sidepic">
-      <a id="main_download" href="download.html">Download PyPy</a>
-    </div>
-  </li>
-</ul>
diff --git a/don2.html b/don2.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_ZG9uMi5odG1s..0000000000000000000000000000000000000000
--- a/don2.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<ul>
-  <li>
-    <!-- <a href="#" onclick="stm_donate(); return false;">Donate towards STM in pypy</a><br/> -->
-    <!-- <a href="#" onclick="py3k_donate(); return false;">Donate towards py3k in pypy</a><br/> -->
-    <b>Donate towards general PyPy progress</b><br/>
-    <!-- a href="#" onclick="numpy_donate(); return false;">Donate towards NumPy in pypy</a><br/ --!>
-  </li>
-  <li>
-  <!--
-    <span id="donate_text">This donation will go towards general PyPy progress
-    --!>
-    <span id="donate_text">PyPy cannot accept donations at the moment
-  </li>
-  <li>
-  <div class="sidepic">
-  <!--
-  <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
-<input type="hidden" name="cmd" value="_s-xclick" />
-<input type="hidden" name="hosted_button_id" value="J268ZTLRE2BW8" />
-<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" />
-<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1" />
-</form>
---!>
-    </div>
-  </li>
-  <li>
-    <div class="sidepic">
-      <a id="main_download" href="download.html">Download PyPy</a>
-    </div>
-  </li>
-</ul>
diff --git a/don3.html b/don3.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_ZG9uMy5odG1s..0000000000000000000000000000000000000000
--- a/don3.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<ul>
-  <li>
-    <a href="#" onclick="stm_donate(); return false;">Donate towards STM in pypy</a><br/>
-    <a href="#" onclick="py3k_donate(); return false;">Donate towards py3k in pypy</a><br/>
-    <a href="#" onclick="general_donate(); return false;">Donate towards general pypy progress</a><br/>
-    <!-- a href="#" onclick="numpy_donate(); return false;"><b>Donate towards NumPy in pypy</b></a><br/ --!>
-  </li>
-  <li>
-<script>
-  $(function() {
-    $("#progressbar").progressbar({
-      value: 88.7
-   });
-  });
-</script>
-
-   <!-- Income:PyPy:Donations:Numpy / 0.95 -->
-   $53247 of $60000 (88.7%)
-   <div id="progressbar">
-   </div>
-
-  </li>
-  <li>
-  <span id="donate_text">This donation goes towards supporting NumPy in PyPy.
-  Current status:
-    we have $8029 left
-  in the account.</br> <a href="numpydonate.html">Read proposal</a></span>
-  </li>
-  <li>
-    <div class="sidepic">
-      <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
-        <input type="hidden" name="cmd" value="_s-xclick">
-        <input type="hidden" name="hosted_button_id" value="7SMJUEAP83RFQ">
-        <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
-        <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
-      </form>
-    </div>
-  </li>
-  <li>
-    <div class="sidepic">
-      <a id="main_download" href="download.html">Download PyPy</a>
-    </div>
-  </li>
-</ul>
-
diff --git a/don4.html b/don4.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_ZG9uNC5odG1s..0000000000000000000000000000000000000000
--- a/don4.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<ul>
-  <li>
-    <a href="#" onclick="stm_donate(); return false;"><b>Donate towards STM in pypy</b></a><br/>
-    <a href="#" onclick="py3k_donate(); return false;">Donate towards py3k in pypy</a><br/>
-    <a href="#" onclick="general_donate(); return false;">Donate towards general pypy progress</a><br/>
-    <!-- a href="#" onclick="numpy_donate(); return false;">Donate towards NumPy in pypy</a><br/ --!>
-  </li>
-  <li>
-<script>
-  $(function() {
-    $("#progressbar").progressbar({
-      value: 74.0
-   });
-  });
-</script>
-
-   2nd call:
-   <!-- Income:PyPy:Donations:Transactional Memory from April 8, 2014,
-   divided by 0.9 -->
-   $59201 of $80000 (74.0%)
-   <div id="progressbar">
-   </div>
-
-  </li>
-  <li>
-  <span id="donate_text">At this time, donations towards supporting the
-  Transactional Memory in PyPy are closed.  <a href="tmdonate2.html">Read
-  more...</a></span>
-  
-  <!--
-  Current status:
-    we have $47383 left
-  in the account.</br> <a href="tmdonate2.html">Read proposal (2nd call)</a></span>
-  </li>
-  <li>
-  <li>
-    <div class="sidepic">
-      <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
-      <input type="hidden" name="cmd" value="_s-xclick">
-      <input type="hidden" name="hosted_button_id" value="XU6QHLK6CZX6E">
-      <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
-      <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
-      </form>
-    </div>
-  </li>
-  <li>
-    <div class="sidepic">
-      <a id="main_download" href="download.html">Download PyPy</a>
-    </div-->
-  </li>
-</ul>
-
diff --git a/download.html b/download.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_ZG93bmxvYWQuaHRtbA==..0000000000000000000000000000000000000000
--- a/download.html
+++ /dev/null
@@ -1,453 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy - Download and install</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div id="main">
-<h1 class="title">Download and install</h1>
-<p class="download-menu">There are <a class="reference external" href="http://buildbot.pypy.org/nightly/trunk/">nightly binary builds</a> available. Those builds are not always
-as stable as the release, but they contain numerous bugfixes and
-performance improvements.</p>
-<p>We provide binaries for x86, aarch64, ppc64 and s390x running on different operating systems such as
-Linux, Mac OS X and Windows (<a class="reference external" href="http://doc.pypy.org/en/latest/release-v7.3.0.html">what's new in PyPy 7.3.0?</a>):</p>
-<ul class="simple">
-<li>the Python2.7 compatible release — <strong>PyPy2.7 v7.3.0</strong></li>
-<li>the Python3.6 compatible release — <strong>PyPy3.6 v7.3.0</strong></li>
-<li>the Python2.7 Software Transactional Memory special release — <strong>PyPy-STM 2.5.1</strong> (Linux x86-64 only)</li>
-</ul>
-<ul class="download-menu simple">
-<li>Download<ul>
-<li><a class="reference internal" href="#default-with-a-jit-compiler">Default (with a JIT Compiler)</a></li>
-<li><a class="reference internal" href="#other-versions">Other versions</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#installing">Installing</a> (optional)</li>
-<li><a class="reference internal" href="#installing-more-modules">Installing more modules</a></li>
-<li><a class="reference internal" href="#building-from-source">Building from source</a></li>
-<li><a class="reference internal" href="#packaging">Packaging</a></li>
-<li><a class="reference internal" href="#checksums">Checksums</a></li>
-</ul>
-<div class="section" id="jit-compiler-version">
-<span id="default-with-a-jit-compiler"></span><h1>&ldquo;JIT Compiler&rdquo; version</h1>
-<p>These binaries include a Just-in-Time compiler.  They only work on
-x86 CPUs that have the <a class="reference external" href="http://en.wikipedia.org/wiki/SSE2">SSE2</a> instruction set (most of
-them do, nowadays), or on x86-64 CPUs. They also contain <a class="reference external" href="http://www.stackless.com/">stackless</a>
-extensions, like <a class="reference external" href="http://pypy.readthedocs.org/en/latest/stackless.html#greenlets">greenlets</a>.</p>
-</div>
-<div class="section" id="linux-binaries-and-common-distributions">
-<h1>Linux binaries and common distributions</h1>
-<p>Since version 7.3, the linux x86 binaries in the links below ship with versions
-of OpenSSL, SQLite3, libffi, expat, and TCL/TK binary libraries linked in. This
-make the binaries &ldquo;portable&rdquo; so that they should run on any current glibc-based
-linux platform. The ideas were adopted from the <a class="reference external" href="https://github.com/squeaky-pl/portable-pypy#portable-pypy-distribution-for-linux">portable-pypy</a> package.</p>
-<p>This solution to the portability problem means that the versions of the
-packaged libraries are frozen to the version shipped, so updating your system
-libraries will not affect this installation of PyPy. Also see the note about
-SSL certificates below.</p>
-<p>For aarch64, s390x, and ppc64, the binaries target a specific operating system.
-These binaries are dynamically linked, and thus might not be usable due to the
-sad story of linux binary compatibility.  This means that <strong>Linux binaries are
-only usable on the distributions written next to them</strong> unless you're ready to
-hack your system by adding symlinks to the libraries it tries to open.  There
-are better solutions:</p>
-<ul class="simple">
-<li>download PyPy from your release vendor (usually an outdated
-version): <a class="reference external" href="http://packages.ubuntu.com/search?keywords=pypy&amp;searchon=names">Ubuntu</a> (<a class="reference external" href="https://launchpad.net/~pypy/+archive/ppa">PPA</a>), <a class="reference external" href="http://packages.debian.org/sid/pypy">Debian</a>, <a class="reference external" href="https://github.com/Homebrew/homebrew-core/blob/master/Formula/pypy.rb">Homebrew</a>, MacPorts,
-<a class="reference external" href="http://fedoraproject.org/wiki/Features/PyPyStack">Fedora</a>, <a class="reference external" href="http://packages.gentoo.org/package/dev-python/pypy">Gentoo</a> and <a class="reference external" href="https://wiki.archlinux.org/index.php/PyPy">Arch</a> are known to package PyPy, with various
-degrees of being up-to-date.</li>
-<li>use <tt class="docutils literal">sudo snap install <span class="pre">--classic</span> &lt;package&gt;</tt>, where <tt class="docutils literal">&lt;package&gt;</tt> is
-<tt class="docutils literal">pypy</tt> or <cite>pypy3`</cite>. Snap is a non-vendor specific package manager for
-linux, and repackages the download tarballs below with the latest platform-
-specific libraries (again, without changing <tt class="docutils literal">libffi</tt>).</li>
-<li><a class="reference external" href="https://doc.pypy.org/en/latest/build.html#build-cffi-import-libraries-for-the-stdlib">recompile the CFFI-based</a> TCL/TK, OpenSSL, or sqlite3 modules, using system
-libraries and the scripts in <tt class="docutils literal">pypy/lib_pypy</tt>. This solution will not solve
-compatibility issues with libffi, since that is baked into PyPy.</li>
-<li>or <a class="reference internal" href="#translate">translate</a> your own PyPy.</li>
-</ul>
-<p class="download-menu">SSL Certificates</p>
-<p class="download-menu">While the linux binaries ship an OpenSSL library, they do not ship a
-certificate store for SSL certificates. If you wish to use SSL module,
-you will need a valid certificate store. You can use the <a class="reference external" href="https://pypi.org/project/certifi/">certifi</a> package
-and set <tt class="docutils literal">SSL_CERT_FILE</tt> to <tt class="docutils literal">certifi.where()</tt> or install your platform
-certificates which should be discovered by the <tt class="docutils literal">_ssl</tt> module.</p>
-</div>
-<div class="section" id="python2-7-compatible-pypy-7-3-0">
-<span id="release"></span><h1>Python2.7 compatible PyPy 7.3.0</h1>
-<ul class="download-menu simple">
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.3.0-linux32.tar.bz2">Linux x86 binary (32bit, built on CenOS6)</a></li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.3.0-linux64.tar.bz2">Linux x86-64 binary (64bit, built on CentOS6)</a></li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.3.0-osx64.tar.bz2">Mac OS X binary (64bit)</a></li>
-<li>FreeBSD x86 and x86_64: see <a class="reference external" href="http://www.freshports.org/lang/pypy">FreshPorts</a></li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.3.0-win32.zip">Windows binary (32bit)</a> (you might need the VC runtime library
-installer <a class="reference external" href="https://www.microsoft.com/en-us/download/details.aspx?id=52685">vcredist.x86.exe</a>.)</li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.3.0-aarch64.tar.bz2">Linux aarch64 binary (64bit, built on Ubuntu 18.04)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.3.0-ppc64.tar.bz2">PowerPC PPC64 Linux binary (64bit big-endian, Fedora 20)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.3.0-ppc64le.tar.bz2">PowerPC PPC64le Linux binary (64bit little-endian, Fedora 21)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.3.0-s390x.tar.bz2">s390x Linux binary (built on Redhat Linux 7.2)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.3.0-src.tar.bz2">Source (tar.bz2)</a>; <a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.3.0-src.zip">Source (zip)</a>.  See below for more about the sources.</li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads">All our downloads,</a> including previous versions.  We also have a
-<a class="reference external" href="http://buildbot.pypy.org/mirror/">mirror</a>, but please use only if you have troubles accessing the links above</li>
-</ul>
-</div>
-<div class="section" id="python-3-6-compatible-pypy3-6-v7-3-0">
-<h1>Python 3.6 compatible PyPy3.6 v7.3.0</h1>
-<ul class="download-menu simple">
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.3.0-linux64.tar.bz2">Linux x86-64 binary (64bit, built on CentOS6)</a></li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.3.0-linux32.tar.bz2">Linux x86 binary (32bit, built on CentOS6)</a></li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.3.0-osx64.tar.bz2">Mac OS X binary (64bit)</a> (High Sierra &gt;= 10.13, not for Sierra and below)</li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.3.0-win32.zip">Windows binary (32bit)</a> (you might need the VC runtime library
-installer <a class="reference external" href="https://www.microsoft.com/en-us/download/details.aspx?id=52685">vcredist.x86.exe</a>.)</li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.3.0-aarch64.tar.bz2">Linux aarch64 binary (64bit, built on Ubuntu 18.04)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.3.0-ppc64.tar.bz2">PowerPC PPC64 Linux binary (64bit big-endian, Fedora 20)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.3.0-ppc64le.tar.bz2">PowerPC PPC64le Linux binary (64bit little-endian, Fedora 21)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.3.0-s390x.tar.bz2">s390x Linux binary (built on Redhat Linux 7.2)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.3.0-src.tar.bz2">Source (tar.bz2)</a>; <a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.3.0-src.zip">Source (zip)</a>.  See below for more about the sources.</li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads">All our downloads,</a> including previous versions.  We also have a
-<a class="reference external" href="http://buildbot.pypy.org/mirror/">mirror</a>, but please use only if you have troubles accessing the links above</li>
-</ul>
-<p>If your CPU is really, really old, it may be a x86-32 without SSE2.
-There is untested support for manually translating PyPy's JIT without
-SSE2 (<tt class="docutils literal"><span class="pre">--jit-backend=x86-without-sse2</span></tt>) but note that your machine
-is probably low-spec enough that running CPython on it is a better
-idea in the first place.</p>
-<p><tt class="docutils literal">[1]:</tt> stating it again: the Linux binaries are provided for the
-distributions listed here.  <strong>If your distribution is not exactly this
-one, it won't work,</strong> you will probably see: <tt class="docutils literal">pypy: error while loading shared
-libraries: &#8230;</tt>.</p>
-</div>
-<div class="section" id="pypy-stm-2-5-1">
-<h1>PyPy-STM 2.5.1</h1>
-<p>This is a special version of PyPy!  See the <a class="reference external" href="http://doc.pypy.org/en/latest/stm.html">Software Transactional
-Memory</a> (STM) documentation.</p>
-<ul class="simple">
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy-stm-2.5.1-linux64.tar.bz2">PyPy-STM Linux x86-64 binary (64bit, tar.bz2 built on Ubuntu 12.04 - 16.04)</a></li>
-</ul>
-</div>
-<div class="section" id="other-versions">
-<span id="other-versions-without-a-jit"></span><h1>Other versions</h1>
-<p>The other versions of PyPy are:</p>
-<ul class="simple">
-<li>The most up-to-date <a class="reference external" href="http://buildbot.pypy.org/nightly/trunk/">nightly binary builds</a> with a JIT, if the official
-release is too old for what you want to do. There are versions for
-different libc on this site too.</li>
-<li>Reverse debugger: This version enables debugging your Python
-programs by going forward and backward in time.  See the <a class="reference external" href="https://bitbucket.org/pypy/revdb/">RevDB
-documentation</a>.</li>
-</ul>
-<ul class="simple">
-<li>Old-style sandboxing: A special safe version.
-<em>This is NOT the version announced in-development during 2019!</em>
-Read the docs about <a class="reference external" href="features.html#sandboxing">sandboxing</a>.
-This version is <strong>not supported</strong> and not actively maintained.  You
-will likely have to fix some issues yourself, or checkout an old
-version, or otherwise play around on your own.  We provide this
-documentation only for historical reasons.  Please do not use in
-production.  For reference, there are some very old, unmaintained
-binaries for Linux (<a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy-1.8-sandbox-linux64.tar.bz2">32bit</a>, <a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy-1.8-sandbox-linux.tar.bz2">64bit</a>).</li>
-</ul>
-</div>
-<div class="section" id="installing">
-<h1>Installing</h1>
-<p>All binary versions are packaged in a <tt class="docutils literal">tar.bz2</tt> or <tt class="docutils literal">zip</tt> file.  When
-uncompressed, they run in-place.  You can uncompress them
-either somewhere in your home directory or, say, in <tt class="docutils literal">/opt</tt>.
-If you want, put a symlink from somewhere like
-<tt class="docutils literal">/usr/local/bin/pypy</tt> to <tt class="docutils literal">/path/to/pypy_expanded/bin/pypy</tt>.  Do
-not move or copy the executable <tt class="docutils literal">pypy</tt> outside the tree &ndash; put
-a symlink to it, otherwise it will not find its libraries.</p>
-</div>
-<div class="section" id="installing-more-modules">
-<h1>Installing more modules</h1>
-<p>There are as yet few distribution-ready packages.
-We recommend installing <tt class="docutils literal">pip</tt>, which is the standard package
-manager of Python.  It works like it does on CPython as explained in the
-<a class="reference external" href="http://doc.pypy.org/en/latest/install.html">installation documentation</a>.</p>
-<p>If you use your distribution's PyPy package we recommend you install packages
-into a virtualenv. If you try to build a module and the build process complains
-about &ldquo;missing Python.h&rdquo;, you may need to install the pypy-dev package.</p>
-</div>
-<div class="section" id="building-from-source">
-<span id="translate"></span><h1>Building from source</h1>
-<p>(see more build <a class="reference external" href="http://pypy.readthedocs.org/en/latest/build.html">instructions</a>)</p>
-<ol class="arabic">
-<li><p class="first">Get the source code.  The preferred way is to checkout the current
-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 &gt;= 3.7 (it is much slower with older versions):</p>
-<pre class="literal-block">
-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="literal-block">
-# for PyPy 3: switch to the branch of PyPy that implements Python 3.6
-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>
-<ul class="simple">
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.3.0-src.tar.bz2">pypy2.7-v7.3.0-src.tar.bz2</a> (sources, PyPy 2 only)</li>
-<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.3.0-src.tar.bz2">pypy3.6-v7.3.0-src.tar.bz2</a> (sources, PyPy 3 only)</li>
-</ul>
-</li>
-<li><p class="first">Make sure you <strong>installed the dependencies.</strong>  See the list <a class="reference external" href="http://pypy.readthedocs.org/en/latest/build.html#install-build-time-dependencies">here</a>.</p>
-</li>
-<li><p class="first">Enter the <tt class="docutils literal">goal</tt> directory:</p>
-<pre class="literal-block">
-cd pypy/pypy/goal
-</pre>
-</li>
-<li><p class="first">Run the <tt class="docutils literal">rpython</tt> script.  Here are the common combinations
-of options (works also with <tt class="docutils literal">python</tt> instead of <tt class="docutils literal">pypy</tt>;
-requires CPython 2.7 or PyPy 2, even to build PyPy 3):</p>
-<pre class="literal-block">
-pypy ../../rpython/bin/rpython -Ojit targetpypystandalone           # get the JIT version
-pypy ../../rpython/bin/rpython -O2 targetpypystandalone             # get the no-jit version
-pypy ../../rpython/bin/rpython -O2 --sandbox targetpypystandalone   # get the sandbox version
-</pre>
-</li>
-<li><p class="first">Enjoy Mandelbrot <tt class="docutils literal"><span class="pre">:-)</span></tt>  It takes on the order of half an hour to
-finish the translation, and about 3GB of RAM on a 32-bit system
-and about 5GB on 64-bit systems.  (Do not start a translation on a
-machine with insufficient RAM!  It will just swap forever.  See
-notes below in that case.)</p>
-</li>
-<li><p class="first">If you want to install this PyPy as root, please read the next section,
-<a class="reference internal" href="#packaging">Packaging</a>.</p>
-</li>
-</ol>
-<p>Notes:</p>
-<ul>
-<li><p class="first">It is recommended to use PyPy to do translations, instead of using CPython,
-because it is twice as fast.  You should just start by downloading an
-official release of PyPy (with the JIT).  If you really have to use CPython
-then note that we are talking about CPython 2.7 here, not CPython 3.x.
-(Older versions like 2.6 are out.)</p>
-</li>
-<li><p class="first">On some 32-bit systems, the address space limit of 2 or 3 GB of RAM
-can be an issue.  More generally you may be just a little bit low of
-RAM.  First note that 2 GB is really not enough nowadays; on Windows
-you first need to refer to the <a class="reference external" href="http://doc.pypy.org/en/latest/windows.html#preparing-windows-for-the-large-build">Windows build instructions</a>.  More
-precisely, translation on 32-bit takes at this point 2.7 GB if PyPy is
-used and 2.9 GB if CPython is used.  There are two workarounds:</p>
-<p>1. use PyPy, not CPython.  If you don't have any PyPy so far, not even
-an older version, then you need to build one first, with some parts
-removed.  So, first translate with <tt class="docutils literal"><span class="pre">...rpython</span> <span class="pre">-Ojit</span>
-targetpypystandalone <span class="pre">--withoutmod-micronumpy</span> <span class="pre">--withoutmod-cpyext</span></tt>,
-then copy <tt class="docutils literal"><span class="pre">pypy-c</span></tt> and <tt class="docutils literal">libpypy_c.so</tt> somewhere else, and finally
-call it with <tt class="docutils literal"><span class="pre">...pypy-c</span> <span class="pre">../../rpython/bin/rpython</span> <span class="pre">-Ojit</span></tt>.</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="literal-block">
-PYPY_DONT_RUN_SUBPROCESS=1 PYPY_GC_MAX_DELTA=200MB pypy --jit loop_longevity=300 ../../rpython/bin/rpython -Ojit --source
-# then read the next point about --source
-</pre>
-</li>
-<li><p class="first">You can run translations with <tt class="docutils literal"><span class="pre">--source</span></tt>, which only builds the C
-source files (and prints at the end where).  Then you can <tt class="docutils literal">cd</tt> there
-and execute <tt class="docutils literal">make</tt>.  This is another way to reduce memory usage.
-Note that afterwards, you have to run manually <tt class="docutils literal"><span class="pre">pypy-c</span>
-<span class="pre">.../pypy/tool/build_cffi_imports.py</span></tt> if you want to be able to import
-the cffi-based modules.</p>
-</li>
-<li><p class="first">Like other JITs, PyPy doesn't work out of the box on some Linux
-distributions that trade full POSIX compliance for extra security
-features.  E.g. with PAX, you have to run PyPy with <tt class="docutils literal">paxctl <span class="pre">-cm</span></tt>.
-This also applies to translation (unless you use CPython to run the
-translation and you specify <tt class="docutils literal"><span class="pre">--source</span></tt>).</p>
-</li>
-</ul>
-</div>
-<div class="section" id="packaging">
-<h1>Packaging</h1>
-<p>Once PyPy is translated from source the binary package similar to those
-provided in the section <a class="reference internal" href="#default-with-a-jit-compiler">Default (with a JIT Compiler)</a> above could be
-easily created with <tt class="docutils literal">package.py</tt> script as following:</p>
-<pre class="literal-block">
-cd ./pypy/pypy/tool/release/
-python package.py --help #for information
-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
-anyway, note an easy-to-miss point: some modules are written with CFFI,
-and require some compilation.  If you install PyPy as root without
-pre-compiling them, normal users will get errors:</p>
-<ul class="simple">
-<li>PyPy 2.5.1 or earlier: normal users would see permission errors.
-Installers need to run <tt class="docutils literal">pypy <span class="pre">-c</span> &ldquo;import gdbm&rdquo;</tt> and other similar
-commands at install time; the exact list is in <a class="reference external" href="https://bitbucket.org/pypy/pypy/src/default/pypy/tool/release/package.py">package.py</a>.  Users
-seeing a broken installation of PyPy can fix it after-the-fact if they
-have sudo rights, by running once e.g. <tt class="docutils literal">sudo pypy <span class="pre">-c</span> &quot;import gdbm</tt>.</li>
-<li>PyPy 2.6 and later: anyone would get <tt class="docutils literal">ImportError: no module named
-_gdbm_cffi</tt>.  Installers need to run <tt class="docutils literal">pypy _gdbm_build.py</tt> in the
-<tt class="docutils literal">lib_pypy</tt> directory during the installation process (plus others;
-see the exact list in <a class="reference external" href="https://bitbucket.org/pypy/pypy/src/default/pypy/tool/release/package.py">package.py</a>).  Users seeing a broken
-installation of PyPy can fix it after-the-fact, by running <tt class="docutils literal">pypy
-/path/to/lib_pypy/_gdbm_build.py</tt>.  This command produces a file
-called <tt class="docutils literal"><span class="pre">_gdbm_cffi.pypy-41.so</span></tt> locally, which is a C extension
-module for PyPy.  You can move it at any place where modules are
-normally found: e.g. in your project's main directory, or in a
-directory that you add to the env var <tt class="docutils literal">PYTHONPATH</tt>.</li>
-</ul>
-</div>
-<div class="section" id="checksums">
-<h1>Checksums</h1>
-<p>Here are the checksums for each of the downloads of PyPy 7.3.0, 7.2.0, 7.1.1, 7.1.0</p>
-<p>pypy2.7-7.3.0 sha256:</p>
-<pre class="literal-block">
-a3dd8d5e2a656849fa344dce4679d854a19bc4a096a0cf62b46a1be127a5d56c  pypy2.7-v7.3.0-aarch64.tar.bz2
-eac1308b7d523003a5f6d20f58406d52ab14611bcec750122ae513a5a35110db  pypy2.7-v7.3.0-linux32.tar.bz2
-f4950a54378ac637da2a6defa52d6ffed96af12fcd5d74e1182fb834883c9826  pypy2.7-v7.3.0-linux64.tar.bz2
-ca7b056b243a6221ad04fa7fc8696e36a2fb858396999dcaa31dbbae53c54474  pypy2.7-v7.3.0-osx64.tar.bz2
-82e62869812aa2953a4f83e96c813cbc52973dfa5e42605e72b6610ac13f2481  pypy2.7-v7.3.0-ppc64.tar.bz2
-592a6db77270b922ffa13cbeced9eabbc36c532ded9fc145f6a19073d3e78499  pypy2.7-v7.3.0-ppc64le.tar.bz2
-d254b82a00021339762198e41ba7f72316010d0f9bd4dcd7b0755185da9c005e  pypy2.7-v7.3.0-s390x.tar.bz2
-b0b25c7f8938ab0fedd8dedf26b9e73c490913b002b484c1b2f19d5844a518de  pypy2.7-v7.3.0-src.tar.bz2
-42dc84a277e7a5e635fe39bbd745f06135902c229a257123332b7555800d915b  pypy2.7-v7.3.0-src.zip
-a9e3c5c983edba0313a41d3c1ab55b080816c4129e67a6c272c53b9dbcdd97ec  pypy2.7-v7.3.0-win32.zip
-</pre>
-<p>pypy3.6-7.3.0 sha256:</p>
-<pre class="literal-block">
-b900241bca7152254c107a632767f49edede99ca6360b9a064141267b47ef598  pypy3.6-v7.3.0-aarch64.tar.bz2
-7045b295d38ba0b5ee65bd3f078ca249fcf1de73fedeaab2d6ad78de2eab0f0e  pypy3.6-v7.3.0-linux32.tar.bz2
-d3d549e8f43de820ac3385b698b83fa59b4d7dd6cf3fe34c115f731e26ad8856  pypy3.6-v7.3.0-linux64.tar.bz2
-87b2545dad75fe3027b4b2108aceb9fdadcdd24e61ae312ac48b449fdd452bf3  pypy3.6-v7.3.0-osx64.tar.bz2
-e2587e8da2abb12a86bf75941ce739124d2a1156367a9a3d729ac31d0841c300  pypy3.6-v7.3.0-ppc64.tar.bz2
-d6f3b701313df69483b43ebdd21b9652ae5e808b2eea5fbffe3b74b82d2e7433  pypy3.6-v7.3.0-ppc64le.tar.bz2
-0fe2f7bbf42ea88b40954d7de773a43179a44f40656f2f58201524be70699544  pypy3.6-v7.3.0-s390x.tar.bz2
-48d12c15fbcbcf4a32882a883195e1f922997cde78e7a16d4342b9b521eefcfa  pypy3.6-v7.3.0-src.tar.bz2
-8ae9efd0a2aadb19e892bbd07eca8ef51536296a3ef93964149aceba511e79ca  pypy3.6-v7.3.0-src.zip
-30e6870c4f3d8ef91890a6556a98080758000ba7c207cccdd86a8f5d358998c1  pypy3.6-v7.3.0-win32.zip
-</pre>
-<p>pypy2.7-7.2.0 sha256:</p>
-<pre class="literal-block">
-57b0be053c6a5f069e23b843f38863cf7920f5eef7bc89f2e086e5c3a28a2ba9  pypy2.7-v7.2.0-aarch64.tar.bz2
-76d666e5aee54b519d6ec1af4ef0cbdc85f7f9276dd554e97deb026adfd0c936  pypy2.7-v7.2.0-linux32.tar.bz2
-05acf28e6a243026ecad933b9361d8f74b41f00818071b76b38c4694cc4c9599  pypy2.7-v7.2.0-linux64.tar.bz2
-36aa2f2440e762333569118dd0b3d5371d575c40966effa194d116c5453ddb52  pypy2.7-v7.2.0-osx64.tar.bz2
-fb51150a4ce94b0ca8587899ba69c41fc58a6b35c5340ea6926376ecb9cfcac4  pypy2.7-v7.2.0-ppc64.tar.bz2
-5c4224525657c29b815cb2c6b3f9bc5a267368cc6adf0fedb235a6052929f65f  pypy2.7-v7.2.0-ppc64le.tar.bz2
-bb7ae585ecb4d904c890e28a2c5b6bd379f57cc3d9e38ff45597ff54fa935eaa  pypy2.7-v7.2.0-s390x.tar.bz2
-55cb7757784fbe3952102447f65b27d80e6c885a464a7af1a9ce264492439dcc  pypy2.7-v7.2.0-src.tar.bz2
-897038550614d558f9f6718409b107e27903ef2b2b57ec250939d1b1ebdf0aba  pypy2.7-v7.2.0-src.zip
-956eeaaaac053e5d0917e77a3d2ad1933ab5561eb3e6e71235780b5aa5fd2bb7  pypy2.7-v7.2.0-win32.zip
-</pre>
-<p>pypy2.7-7.1.1 sha256:</p>
-<pre class="literal-block">
-41ca390a76ca0d47b8353a0d6a20d5aab5fad8b0bb647b960d8c33e873d18ef5  pypy2.7-v7.1.1-linux32.tar.bz2
-73b09ef0860eb9ad7997af3030b22909806a273d90786d78420926df53279d66  pypy2.7-v7.1.1-linux64.tar.bz2
-31a17294dec96c2191885c776b4ee02112957dc874f7ba03e570537a77b78c35  pypy2.7-v7.1.1-osx64.tar.bz2
-1ef94c3a9c67c2335cee0b21753036b4696ed588b9d54b7b8036a6ae47f7001d  pypy2.7-v7.1.1-s390x.tar.bz2
-5f06bede6d71dce8dfbfe797aab26c8e35cb990e16b826914652dc093ad74451  pypy2.7-v7.1.1-src.tar.bz2
-d9b07a2954ad6dbde94feffd848311e2b5169563d33e3e9f17969579b01a4158  pypy2.7-v7.1.1-src.zip
-9c59226311f216a181e70ee7b5aa4d9665a15d00f24ae02acec9af7d96355f63  pypy2.7-v7.1.1-win32.zip
-</pre>
-<p>pypy2.7-7.1.0 sha256:</p>
-<pre class="literal-block">
-44ec91e8cb01caab289d8763c203f3aaf288d14325a6c42692bd1ac4e870d758  pypy2.7-v7.1.0-linux32.tar.bz2
-fef176a29a2ef068c00c8098e59dab935ca6e956f089672b3f7351da95a034f5  pypy2.7-v7.1.0-linux64.tar.bz2
-8be43685ce718b0768387450fc6dc395d60809b778b6146c353ef67826022153  pypy2.7-v7.1.0-osx64.tar.bz2
-b065f55741bcb37863f1eca30ce91c9d79159371a6994100930cdc2ede3237bc  pypy2.7-v7.1.0-s390x.tar.bz2
-b051a71ea5b4fa27d0a744b28e6054661adfce8904dcc82500716b5edff5ce4b  pypy2.7-v7.1.0-src.tar.bz2
-e60ce30f9947844da43daaa7658adc0c05330681305225954114772f42df06ec  pypy2.7-v7.1.0-src.zip
-76658c9ad679d562b8b6a09d006caa666406337b9834ff56db16980c5e549f20  pypy2.7-v7.1.0-win32.zip
-</pre>
-<p>pypy3.6-7.2.0 sha256:</p>
-<pre class="literal-block">
-f82dc9dc6c692417ee9727f23beae75364a5757ebdc657a2a1d0010ac3ad17ab  pypy3.6-v7.2.0-aarch64.tar.bz2
-45e99de197cb3e974cfc8d45e0076ad2066852e61e56b3eafd1237efafd2c43e  pypy3.6-v7.2.0-linux32.tar.bz2
-aa128e555ad0fe5c4c15104ae0903052bd232b6e3a73f5fe023d27b8fd0d6089  pypy3.6-v7.2.0-linux64.tar.bz2
-836abb0ec303b90a684533711ed3b8269d3e8c64805b595e410920abdea678ac  pypy3.6-v7.2.0-osx64.tar.bz2
-14021d196e393b3a6d2395ab94ceec347753715e37223efe4c50b7c141b351a2  pypy3.6-v7.2.0-ppc64.tar.bz2
-6aef73a3b68e9a6c062cadd83d3db16790960cf97401ca6f2aad2195e9b05c35  pypy3.6-v7.2.0-ppc64le.tar.bz2
-a11da8118064db102d159e9221319c428b298c4a87f26166fd6ae94be8d6ae0d  pypy3.6-v7.2.0-s390x.tar.bz2
-0d7c707df5041f1593fe82f29c40056c21e4d6cb66554bbd66769bd80bcbfafc  pypy3.6-v7.2.0-src.tar.bz2
-405ac35695dd374d5ea192cb44cb47231f9a65812cc7b6549df33df12ffe54db  pypy3.6-v7.2.0-src.zip
-c926f622bec24a8b348591d631717ace83b3a6c3c2dac02b157b622b97d1fc9c  pypy3.6-v7.2.0-win32.zip
-</pre>
-<p>pypy3.6-7.1.1 sha256:</p>
-<pre class="literal-block">
-cb11ef4b0df569c28390b1ee93029159e1b90bfbad98df6abd629d5203b2abd9  pypy3.6-v7.1.1-linux32.tar.bz2
-8014f63b1a34b155548852c7bf73aab2d41ebddf2c8fb603dc9dd8509be93db0  pypy3.6-v7.1.1-linux64.tar.bz2
-a5c2f2bfa2b4a4d29e8a67baab95699b169054066df218a14f171bb84a6df0c0  pypy3.6-v7.1.1-osx64.tar.bz2
-4a91bf2d9a142b6dbf82b5301cb510535ae9a54e1645546b2e0735a7b5ed85ba  pypy3.6-v7.1.1-s390x.tar.bz2
-6a3ef876e3691a54f4cff045028ec3be94ab9beb2e99f051b83175302c1899a8  pypy3.6-v7.1.1-src.tar.bz2
-4a3ebeb767740f2dc0b886d02797d21d7d69f154cf951bb991c19bd485e6cae1  pypy3.6-v7.1.1-src.zip
-8b513b254de5f31890f5956569de9aec3a0a91d7aba72fc89d66901f4a8ccf49  pypy3.6-v7.1.1-win32.zip
-</pre>
-<p>pypy 3.6-v7.1.0 sha256:</p>
-<pre class="literal-block">
-031bfac61210a6e161bace0691b854dc15d01b0e624dc0588c544ee5e1621a83  pypy3.6-v7.1.0-linux32.tar.bz2
-270dd06633cf03337e6f815d7235e790e90dabba6f4b6345c9745121006925fc  pypy3.6-v7.1.0-linux64.tar.bz2
-d46e005ba095cb4a7006079ffbf4fe63c18cf5e9d8ce9ce8383efc1a4863ab5b  pypy3.6-v7.1.0-osx64.tar.bz2
-243cd0cc188a94c1f064f402ae72b8ba4303eb3137eac53c53826472b8005098  pypy3.6-v7.1.0-s390x.tar.bz2
-faa81f469bb2a7cbd22c64f22d4b4ddc5a1f7c798d43b7919b629b932f9b1c6f  pypy3.6-v7.1.0-src.tar.bz2
-4858e7e8a0007bc3b381bd392208b28d30889a4e5a88a3c28e3d9dc4f25b654e  pypy3.6-v7.1.0-src.zip
-77a0576a3d518210467f0df2d0d9a1892c664566dc02f25d974c2dbc6b4749e7  pypy3.6-v7.1.0-win32.zip
-</pre>
-</div>
-</div>
-<div id="sidebar">
-</div>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/features.html b/features.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_ZmVhdHVyZXMuaHRtbA==..0000000000000000000000000000000000000000
--- a/features.html
+++ /dev/null
@@ -1,184 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy - What is PyPy?</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div id="main">
-<h1 class="title">What is PyPy?</h1>
-<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.13 and 3.6.9</strong>.
-It supports all of the core language, passing the Python 2.7 test suite
-and most of the 3.6 test suite (with minor modifications) 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> and <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 (ARMv6 or ARMv7, with VFPv3)</li>
-<li><a class="reference external" href="http://en.wikipedia.org/wiki/AArch64">AArch64</a></li>
-<li><a class="reference external" href="https://de.wikipedia.org/wiki/PowerPC">PowerPC</a> 64bit both little and big endian</li>
-<li><a class="reference external" href="https://de.wikipedia.org/wiki/System/390">System Z (s390x)</a></li>
-</ul>
-<p>PyPy's x86 version runs on several operating systems, such as Linux
-(32/64 bits), Mac OS X (64 bits), Windows (32 bits), OpenBSD, FreeBSD.
-All non-x86 versions are only supported on Linux.</p>
-<p>If you are interested in helping to move forward, see our <a class="reference external" href="howtohelp.html">howtohelp</a> page.</p>
-<div class="section" id="the-main-features-of-pypy">
-<h1>The main features of PyPy:</h1>
-</div>
-<div class="section" id="speed">
-<h1>Speed</h1>
-<p>Our <a class="reference external" href="download.html#with-a-jit-compiler">main executable</a> comes with a Just-in-Time compiler.  It is
-<a class="reference external" href="http://speed.pypy.org/">really fast</a> in running most benchmarks &ndash; including very large and
-complicated Python applications, not just 10-liners.</p>
-<p>There are two cases that you should be aware where PyPy will <em>not</em> be
-able to speed up your code:</p>
-<ul class="simple">
-<li>Short-running processes: if it doesn't run for at least a few seconds,
-then the JIT compiler won't have enough time to warm up.</li>
-<li>If all the time is spent in run-time libraries (i.e. in C functions),
-and not actually running Python code, the JIT compiler will not help.</li>
-</ul>
-<p>So the case where PyPy works best is when executing long-running
-programs where a significant fraction of the time is spent executing
-Python code.  This is the case covered by the majority of <a class="reference external" href="http://speed.pypy.org/">our
-benchmarks</a>, but not all of them &ndash; the goal of PyPy is to get speed
-but still support (ideally) any Python program.</p>
-</div>
-<div class="section" id="memory-usage">
-<h1>Memory usage</h1>
-<p>Memory-hungry Python programs (several hundreds of MBs or more) might
-end up taking less space than they do in CPython.  It is not always
-the case, though, as it depends on a lot of details.  Also note that
-the baseline is higher than CPython's.</p>
-</div>
-<div class="section" id="stackless">
-<h1>Stackless</h1>
-<p>Support for <a class="reference external" href="http://www.stackless.com/">Stackless</a> and greenlets are now integrated in the normal
-PyPy.  More detailed information is available <a class="reference external" href="http://doc.pypy.org/en/latest/stackless.html">here</a>.</p>
-</div>
-<div class="section" id="other-features">
-<h1>Other features</h1>
-<p>PyPy has many secondary features and semi-independent
-projects.  We will mention here:</p>
-<ul>
-<li><p class="first"><strong>Other languages:</strong>  we also implemented other languages that makes
-use of our RPython toolchain: <a class="reference external" href="https://bitbucket.org/cfbolz/pyrolog/">Prolog</a> (almost complete), as
-well as <a class="reference external" href="https://bitbucket.org/pypy/lang-smalltalk/">Smalltalk</a>, <a class="reference external" href="https://bitbucket.org/pypy/lang-js/">JavaScript</a>, <a class="reference external" href="https://bitbucket.org/pypy/lang-io/">Io</a>, <a class="reference external" href="https://bitbucket.org/pypy/lang-scheme/">Scheme</a> and <a class="reference external" href="https://bitbucket.org/pypy/lang-gameboy/">Gameboy</a>.</p>
-<p>There is also a Ruby implementation called <a class="reference external" href="http://topazruby.com/">Topaz</a> and a PHP implementation
-called <a class="reference external" href="http://www.hippyvm.com/">HippyVM</a>.</p>
-</li>
-</ul>
-</div>
-<div class="section" id="sandboxing">
-<h1>Sandboxing</h1>
-<p>PyPy's <em>sandboxing</em> is a working prototype for the idea of running untrusted
-user programs. Unlike other sandboxing approaches for Python, PyPy's does not
-try to limit language features considered &ldquo;unsafe&rdquo;. Instead we replace all
-calls to external libraries (C or platform) with a stub that communicates
-with an external process handling the policy.</p>
-<table class="docutils">
-<colgroup>
-<col width="100%" />
-</colgroup>
-<tbody valign="top">
-<tr><td><strong>Please be aware that it is a prototype only.</strong>  <em>It needs work to become
-more complete, and you are welcome to help.  In particular, almost none
-of the extension modules work (not even</em> <tt class="docutils literal">time</tt> <em>), and</em> <tt class="docutils literal">pypy_interact</tt>
-<em>is merely a demo.  Also, a more complete system would include a way
-to do the same as</em> <tt class="docutils literal">pypy_interact</tt> <em>from other languages than Python,
-to embed a sandboxed interpreter inside programs written in other
-languages.</em></td>
-</tr>
-</tbody>
-</table>
-<p>To run the sandboxed process, you need to get the full sources and
-build <tt class="docutils literal"><span class="pre">pypy-sandbox</span></tt> from it (see <a class="reference external" href="download.html#building-from-source">Building from source</a>).  These
-instructions give you a <tt class="docutils literal"><span class="pre">pypy-c</span></tt> that you should rename to
-<tt class="docutils literal"><span class="pre">pypy-sandbox</span></tt> to avoid future confusion.  Then run:</p>
-<pre class="literal-block">
-cd pypy/sandbox
-pypy_interact.py path/to/pypy-sandbox
-# don't confuse it with pypy/goal/pyinteractive.py!
-</pre>
-<p>You get a fully sandboxed interpreter, in its own filesystem hierarchy
-(try <tt class="docutils literal"><span class="pre">os.listdir('/')</span></tt>).  For example, you would run an untrusted
-script as follows:</p>
-<pre class="literal-block">
-mkdir virtualtmp
-cp untrusted.py virtualtmp/
-pypy_interact.py --tmp=virtualtmp pypy-sandbox /tmp/untrusted.py
-</pre>
-<p>Note that the path <tt class="docutils literal">/tmp/untrusted.py</tt> is a path inside the sandboxed
-filesystem.  You don't have to put <tt class="docutils literal">untrusted.py</tt> in the real <tt class="docutils literal">/tmp</tt>
-directory at all.</p>
-<p>To read more about its features, try <tt class="docutils literal">pypy_interact.py <span class="pre">--help</span></tt> or go to
-<a class="reference external" href="http://pypy.readthedocs.org/en/latest/sandbox.html">our documentation site</a>.</p>
-</div>
-</div>
-<div id="sidebar">
-</div>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/files/favicon2.png b/files/favicon2.png
new file mode 100644
index 0000000000000000000000000000000000000000..d147173629864f7e6da122767d521a77265c38f7
GIT binary patch
literal 9731
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
Rk23%O002ovPDHLkV1hGG@RR@m

diff --git a/howtohelp.html b/howtohelp.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_aG93dG9oZWxwLmh0bWw=..0000000000000000000000000000000000000000
--- a/howtohelp.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy - How to help?</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div id="main">
-<h1 class="title">How to help?</h1>
-<p>Here are some ideas to help PyPy development:</p>
-<ul class="simple">
-<li>use pypy for your projects and provide detailed <a class="reference external" href="contact.html">feedback</a></li>
-<li>talk to us about how to support Python 3.x</li>
-<li>write blog posts or tweets about your experiences</li>
-<li>help porting to new platforms</li>
-<li><a class="reference external" href="contact.html">contact</a> us and get involved</li>
-<li><a class="reference external" href="http://morepypy.blogspot.com/2010/11/speeding-up-pypy-by-donations.html">donate</a> some money to enable others to help</li>
-</ul>
-</div>
-<div id="sidebar">
-</div>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/index.html b/index.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_aW5kZXguaHRtbA==..0000000000000000000000000000000000000000
--- a/index.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy - Welcome to PyPy</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div id="main">
-<h1 class="title">Welcome to PyPy</h1>
-<p>PyPy is a <a class="reference external" href="http://speed.pypy.org/">fast</a>, <a class="reference external" href="compat.html">compliant</a> alternative implementation of the <a class="reference external" href="http://python.org/">Python</a>
-language (2.7.13 and 3.6.9). It has several advantages and distinct features:</p>
-<blockquote>
-<ul>
-<li><p class="first"><strong>Speed:</strong> thanks to its Just-in-Time compiler, Python programs
-often run <a class="reference external" href="http://speed.pypy.org/">faster</a> on PyPy.  <a class="reference external" href="http://en.wikipedia.org/wiki/Just-in-time_compilation">(What is a JIT compiler?)</a></p>
-<p>&ldquo;If you want your code to run faster, you should probably just use PyPy.&rdquo;
-&mdash; Guido van Rossum (creator of Python)</p>
-</li>
-<li><p class="first"><strong>Memory usage:</strong> memory-hungry Python programs (several hundreds of
-MBs or more) might end up taking <a class="reference external" href="http://morepypy.blogspot.com/2009/10/gc-improvements.html">less space</a> than they do in CPython.</p>
-</li>
-<li><p class="first"><strong>Compatibility:</strong> PyPy is <a class="reference external" href="compat.html">highly compatible</a> with existing python code.
-It supports <a class="reference external" href="https://cffi.readthedocs.org">cffi</a> and can run popular python libraries like <a class="reference external" href="https://twistedmatrix.com/">twisted</a>
-and <a class="reference external" href="https://www.djangoproject.com/">django</a>.</p>
-</li>
-<li><p class="first"><strong>Stackless:</strong> PyPy comes by default with support for <a class="reference external" href="features.html#stackless">stackless mode</a>,
-providing micro-threads for massive concurrency.</p>
-</li>
-<li><p class="first">As well as other <a class="reference external" href="features.html">features</a>.</p>
-</li>
-</ul>
-</blockquote>
-<p class="download"><a class="reference external" href="download.html">Download and try out PyPy</a></p>
-<p>Want to know more? A good place to start is our detailed <a class="reference external" href="http://speed.pypy.org/">speed</a> and
-<a class="reference external" href="compat.html">compatibility</a> reports!</p>
-</div>
-<div id="sidebar">
-</div>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/numpydonate.html b/numpydonate.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_bnVtcHlkb25hdGUuaHRtbA==..0000000000000000000000000000000000000000
--- a/numpydonate.html
+++ /dev/null
@@ -1,232 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy - Call for donations - PyPy to support Numpy!</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div id="main">
-<h1 class="title">Call for donations - PyPy to support Numpy!</h1>
-<p>UPDATE (Febuary 2016):</p>
-<blockquote>
-<em>We have closed this campaign. We have achieved most of the goals
-of the orignal work plan while raising most of the funds. Work
-will continue to make Numpy and the rest of the numeric stack more
-usable on PyPy.</em></blockquote>
-<p>UPDATE (May 2014):</p>
-<blockquote>
-<em>Thanks to our donors, we have raised 80% of
-the total so far.  Work on this topic has been happening, and
-continues to happen, within the budget &ndash; even if not within the
-timeline described below.  We have simply not found enough time to
-work on it as much as we wanted, and thus did not consume the money as
-quickly as predicted.  The ratio &ldquo;progress / $ used&rdquo; so far
-corresponds roughly to what we expected.  The document below is the
-original call for proposal, and we still accept donations for this
-topic. See the</em> <a class="reference external" href="http://morepypy.blogspot.com/search/label/numpy">latest status reports</a> <em>on our blog for updates.
-There is also an automatically generated</em> <a class="reference external" href="http://buildbot.pypy.org/numpy-status/latest.html">coverage dashboard</a> <em>showing
-what parts of NumPy are already usable.</em></blockquote>
-<p>This is a proposal to provide a fully compatible working <a class="reference external" href="http://numpy.scipy.org/">NumPy</a> implementation
-for PyPy. This has long be en a very commonly <a class="reference external" href="http://morepypy.blogspot.com/2011/06/report-back-from-our-survey.html">requested feature</a> for PyPy
-as well as a worthy goal given that PyPy performs extremely well on numeric
-workloads.</p>
-<p>We already had some success providing a very basic <a class="reference external" href="http://morepypy.blogspot.com/2011/05/numpy-in-pypy-status-and-roadmap.html">NumPy implementation</a>,
-however we believe that raising funds can significantly speed up its
-development, by paying people to work full time on it.</p>
-<p>Below you'll find the <a class="reference internal" href="#work-plan">work plan</a> and the associated
-fundraising targets we need to make things happen.  Once we reach the
-necessary target for each stage, we will start contracting
-developers.  Contracts and money are managed by the non-profit
-<a class="reference external" href="http://sfconservancy.org/">Software Freedom Conservancy</a> of which the PyPy project is a member.
-The current elected representatives are Carl Friedrich Bolz, Holger
-Krekel and Jacob Hallen and they will – in close collaboration with
-Conservancy and the core developers – select the best developers for
-implementing NumPy among well known PyPy contributors.</p>
-<p>Should we not receive enough donations to complete all stages by 1st March 2012
-at the latest, we will try our best to make PyPy support NumPy anyway.  We
-however reserve the right to shift any unused funds to other PyPy activities
-when that date is reached.  Of course, since the Conservancy is a
-501(c)(3) charitable organization incorporated in NY, USA, all funds will,
-regardless of their use, be spent in a way that benefits the general
-public, the advancement of Open Source and Free Software,
-and in particular the PyPy community and the PyPy codebase.</p>
-<p><strong>Note</strong> For donations higher than $1,000, we can arrange for an invoice
-and a different payment method to avoid the high Paypal fees.  Please
-contact pypy at sfconservancy.org if you want to know details on how
-to donate via other means.</p>
-<div class="section" id="what-is-numpy">
-<h1>What is NumPy?</h1>
-<p><a class="reference external" href="http://numpy.scipy.org/">NumPy</a> is a framework for doing numerical calculations in Python. It has
-become the de-facto standard for doing any kinds of computations that involve
-n-dimensional arrays. Please consult the NumPy website for more details.</p>
-</div>
-<div class="section" id="why-does-numpy-on-pypy-make-sense">
-<h1>Why does NumPy on PyPy make sense?</h1>
-<p>NumPy on PyPy makes sense for a couple of reasons: Firstly, it is by
-far the most requested feature from PyPy. Secondly, PyPy <a class="reference external" href="http://morepypy.blogspot.com/2011/07/realtime-image-processing-in-python.html">performs
-well</a> on numerical loads already.  Therefore bringing NumPy into the
-equation is a reasonable next step - as it's a very convenient and popular tool
-for doing this kind of work. The resulting implementation should move
-Python in scientific world from being a merely &ldquo;glue&rdquo; language into
-being the main implementation language for a lot of people in
-the scientific/numeric worlds. This will benefit current users of NumPy as
-well as people who so far have to cope with lower level languages like C
-or Fortran for speed purposes.</p>
-</div>
-<div class="section" id="speed">
-<h1>Speed</h1>
-<p>The current implementation of NumPy on PyPy is reasonably fast - it ranges
-from roughly the same speed to 2-5x faster for stacked large array operations
-to 100-300x for accessing NumPy array elements one by one. The exact speed
-depends very much how NumPy is used, but the target would be to be within an
-order of magnitude from handwritten C.
-To achieve this, we would
-need to teach our JIT backends how to use modern vector instructions, like SSE
-or AVX. Hence, we split the proposal into two parts, first part covers compatibility
-with a reasonable approach to keeping current speed achievements, second part
-is about teaching the JIT how to vectorize certain operations, which should bring
-PyPy's NumPy as a very competitive tool compared to other available
-solutions for numerical computations, like matlab or C++ array libraries.</p>
-<div class="section" id="id1">
-<span id="work-plan"></span><h2>Work plan</h2>
-</div>
-</div>
-<div class="section" id="about-estimates-and-costs">
-<h1>About estimates and costs</h1>
-<p>For each step, we estimated the time that it would take to complete for an
-experienced developer who is already familiar with the PyPy codebase.  From
-this number, the money is calculated considering an hourly rate of $60, and a
-5% general donation which goes to the <a class="reference external" href="http://sfconservancy.org/">Software Freedom Conservancy</a> itself, the non-profit
-organization of which the PyPy project is a member and which manages all the
-issues related to donations, payments, and tax-exempt status.</p>
-<p>We split the proposal into two parts - we plan to implement them in the same
-order, starting by the time we raise the corresponding funding targets:</p>
-<ul>
-<li><p class="first"><strong>Compatibility</strong>:</p>
-<p>This part covers the core NumPy Python API. We'll implement all NumPy APIs
-that are officially documented and we'll pass all of NumPy's tests that
-cover documented APIs and are not implementation details.
-Specifically, we don't plan to:</p>
-<ul class="simple">
-<li>implement NumPy's C API</li>
-<li>implement other scientific libraries, like SciPy, matplotlib or biopython</li>
-</ul>
-<p>Estimated costs: USD$30,000. Estimated duration: 3 months.</p>
-</li>
-<li><p class="first"><strong>Speed</strong>:</p>
-<p>This part will cover significant speed improvements in the JIT that would
-make numeric computations faster. This includes, but is not necesarilly
-limited to:</p>
-<ul class="simple">
-<li>write a set of benchmarks covering various use cases</li>
-<li>teaching the JIT backend (or multiple backends) how to deal with vector
-operations, like SSE</li>
-<li>experiments with automatic parallelization using multiple threads, akin
-to numexpr</li>
-<li>improving the JIT register allocator that will make a difference, especially
-for tight loops</li>
-</ul>
-<p>As with all speed improvements, it's relatively hard to predict exactly
-how it'll cope, however we expect the results to be within an order
-of magnitude of handwritten C equivalent.</p>
-<p>Estimated costs: USD$30,000. Estimated duration: 3 months.</p>
-</li>
-</ul>
-<div class="section" id="benefits-of-this-work-to-the-python-community-and-the-general-public">
-<h2>Benefits of This Work to the Python Community and the General Public</h2>
-<p>Python has become one of the most popular dynamic programming languages in
-the world.  Web developers, educators, and scientific programmers alike
-all value Python because Python code is often more readable and because
-Python often increases programmer productivity.</p>
-<p>Traditionally, languages like Python ran more slowly than static, compiled
-languages; Python developers chose to sacrifice execution speed for ease
-of programming.  The PyPy project created a substantially improved Python
-language implementation, including a fast Just-in-time (JIT) compiler.
-The increased execution speed that PyPy provides has attracted many users,
-who now find their Python code runs up to four times faster under PyPy
-than under the reference implementation written in C.</p>
-<p>Meanwhile, adoption of Python is already underway for those researchers
-and developers who work specifically on computing that requires fast
-numeric operations.  Numpy support in PyPy will allow for Python's use by
-those developers and researchers who want the ease of programming that
-Python provides, the speed of PyPy, <em>and</em> the speedups for numerical work
-that Numpy can provide.</p>
-<p>PyPy's developers make all PyPy software available to the public without
-charge, under PyPy's Open Source copyright license, the permissive MIT
-License.  PyPy's license assures that PyPy is equally available to
-everyone freely on terms that allow both non-commercial and commercial
-activity.  This license allows for academics, for-profit software
-developers, volunteers and enthusiasts alike to collaborate together to
-make a better Python implementation for everyone.</p>
-<p>NumPy support for PyPy will be licensed similarly, and therefore NumPy
-support can directly help researchers and developers who seek to do
-numeric computing but want an easier programming language to use than
-Fortan or C, which is typically used for these applications.  Being
-licensed freely to the general public means that opportunities to use,
-improve and learn about how NumPy works itself will be generally available
-to everyone.</p>
-</div>
-</div>
-</div>
-<div id="sidebar">
-</div>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/people.html b/people.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_cGVvcGxlLmh0bWw=..0000000000000000000000000000000000000000
--- a/people.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy - People of PyPy</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div id="main">
-<h1 class="title">People of PyPy</h1>
-<div class="section" id="armin-rigo">
-<h1>Armin Rigo</h1>
-<img alt="image/people/arigo.png" src="image/people/arigo.png" />
-<p>Armin Rigo is a former researcher at the Heinrich-Heine Universitat
-Düsseldorf (Germany).  He studied Mathematics at the University
-of Lausanne (Switzerland), obtained his Ph.D. in Logic and Set
-Theory at the Free University of Brussels (Belgium) in 2002, and
-worked at the University of Southampton (UK) until 2005.  He is
-the author of Psyco, the first just-in-time compiler for Python.
-He is one of the founders and lead developers of the PyPy project
-which began in 2003.  He has taken part in all areas, from the Python
-language definition to the RPython translation framework,
-including the garbage collector and the tracing just-in-time
-compiler.</p>
-</div>
-<div class="section" id="maciej-fijalkowski">
-<h1>Maciej Fijałkowski</h1>
-<img alt="image/people/fijal_thumb.png" src="image/people/fijal_thumb.png" />
-<p>Maciej is a freelancer working mostly on PyPy for the past several years.
-He's a core developer since 2006, working on all kinds of parts in
-the entire codebase including JIT, GC and assembler backends.
-Maciej has been going to many conferences, advertising PyPy to a broader
-audience for the past several years, including a keynote at Pycon 2010.
-He's also the main maintainer of
-<a class="reference external" href="https://bitbucket.org/pypy/jitviewer">jitviewer</a>, a tool for analyzing performance of your python programs under
-PyPy.</p>
-</div>
-<div class="section" id="carl-friedrich-bolz">
-<h1>Carl Friedrich Bolz</h1>
-<img alt="image/people/cfbolz.jpg" src="image/people/cfbolz.jpg" />
-<p>Carl Friedrich is a core developer since 2005, currently doing his PhD at the
-Heinrich-Heine Universität Düsseldorf (Germany). He has worked on most aspects
-of PyPy, from the core interpreter to the GC to the JIT. He has published
-several papers about the inner workings of PyPy, presenting them at various
-scientific conferences. Carl Friedrich is also interested in other dynamic
-language implementation and was the original author of the Prolog
-implementation.</p>
-<p>Carl Friedrich likes science fiction novels and sometimes plays the bassoon.</p>
-</div>
-<div class="section" id="antonio-cuni">
-<h1>Antonio Cuni</h1>
-<img alt="image/people/antocuni.png" src="image/people/antocuni.png" />
-<p>Antonio Cuni loves skiing, mountains and programming languages.  He studied
-Computer Science at the University of Genova (Italy), and then at the same
-university he obtained his Ph.D. in Computer Science in 2010, with a
-dissertation about the PyPy CLI JIT backend.  He has been a core PyPy
-developer since 2006, working in various areas including the &ldquo;object oriented
-backends&rdquo; for the CLI and JVM, the RPython translation framework, the Python
-interpreter and the JIT compiler generator.  Apart from PyPy, he is the author of
-other popular tools such as <tt class="docutils literal">pdb++</tt>.</p>
-</div>
-<div class="section" id="benjamin-peterson">
-<h1>Benjamin Peterson</h1>
-<p>Both a PyPy and CPython core developer, Benjamin knows way too much about the
-nooks and cranies of the Python language. He is driven by a fascination with
-interpreters and compilers of all shapes and sizes. Around the PyPy project, he
-tries to be generally useful and has taken on major projects including rewriting
-PyPy's Python compiler and porting PyPy to Python 2.7.</p>
-</div>
-<div class="section" id="alex-gaynor">
-<h1>Alex Gaynor</h1>
-<img alt="image/people/alex.jpg" src="image/people/alex.jpg" />
-<p>Alex is software engineer living in Washington, DC. He's been a PyPy developer
-since 2010, and has worked on many parts of the codebase, including the JIT
-compiler's optimizers, the RPython translation toolchain, and the Python
-interpreter. In addition to his work on PyPy, Alex is also the creator of
-Topaz, a Ruby VM built on RPython and a core developer of Django (a Python web
-framework) and CPython, as well as a retired member of the board of directors
-of the Python Software Foundation.</p>
-</div>
-<div class="section" id="hakan-ardo">
-<h1>Håkan Ardö</h1>
-<img alt="image/people/hakanardo.jpg" src="image/people/hakanardo.jpg" />
-<p>Håkan Ardö received his master of science degree in electrical
-engineering from Lund University in 2002. He specialized in
-VLSI-design and Image Processing. He worked as a software
-engineer at Axis Communications 2002-2003 before doing his
-PhD at the Centre for Mathematical Sciences of Lund University
-2003-2009 in the Mathematical Imaging Group. His thesis work consisted
-of designing image processing algorithms for traffic surveillance,
-aiming for a system that automatically measures the safety of an
-intersection or road segment. He is currently working part-time as a
-postdoc at the Centre for Mathematical Sciences of Lund University
-continuing this work and part-time as CTO with a spinoff company
-Cognimatics. His contributions to PyPy started 2010 and consists of
-the array module as well as work on the JIT compiler's trace optimizers.</p>
-</div>
-<div class="section" id="holger-krekel">
-<h1>Holger Krekel</h1>
-<img alt="image/people/holger1.jpg" src="image/people/holger1.jpg" />
-<p>Holger Krekel is a founder of the PyPy project and has participated in
-PyPy core developement for several years as well as maintained much of
-its infrastructure.  He also is the author of the popular <a class="reference external" href="http://pytest.org">py.test</a> and
-<a class="reference external" href="http://codespeak.net/tox">tox</a> testing tools as well as <a class="reference external" href="http://codespeak.net/execnet">execnet</a>, a library for easily deploying
-different interacting Python interpreters side by side.  He helped
-manage multiple PyPy funding contracts through his company merlinux and is a
-PyPy representative within the Software Freedom Conservancy (SFC).  He
-holds a summa cum laude degree in computer science with a thesis about
-artificial intelligence applied to the game of Go.  As of 2011 he is on
-another sabbatical-ish leave, caring for his newborn son, travelling
-and pondering what comes next.  Other than that he continues to care
-for testing and some PyPy co-ordination bits behind the scene.</p>
-</div>
-<div class="section" id="samuele-pedroni">
-<h1>Samuele Pedroni</h1>
-<p>Samuele Pedroni got involved with PyPy almost at its inception in the
-spring of 2003. One of the design contributors to PyPy, his help has
-ranged from infrastructure and processes, through building out
-RPython&#8230; optimizing the Python interpreter, to compressing resume
-data in the last incarnation of the JIT compiler. Tempted away into the
-application side of the software equation, these days he contributes
-some words and wisdom to PyPy's paper writing.</p>
-</div>
-<div class="section" id="many-more-people">
-<h1>Many more people</h1>
-<p>PyPy is and has always been an effort of many volunteers. Consult the <a class="reference external" href="https://bitbucket.org/pypy/pypy/src/tip/LICENSE">LICENSE</a>
-file for details.</p>
-</div>
-</div>
-<div id="sidebar">
-</div>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/performance.html b/performance.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_cGVyZm9ybWFuY2UuaHRtbA==..0000000000000000000000000000000000000000
--- a/performance.html
+++ /dev/null
@@ -1,371 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy - Performance</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div id="main">
-<h1 class="title">Performance</h1>
-<div class="contents topic" id="contents">
-<p class="topic-title first">Contents</p>
-<ul class="simple">
-<li><a class="reference internal" href="#profiling-vmprof" id="id1">Profiling: vmprof</a></li>
-<li><a class="reference internal" href="#optimization-strategy" id="id2">Optimization strategy</a></li>
-<li><a class="reference internal" href="#micro-tuning-tips" id="id3">Micro-tuning tips</a></li>
-<li><a class="reference internal" href="#insider-s-point-of-view" id="id4">Insider's point of view</a></li>
-</ul>
-</div>
-<p>This document collects strategies, tactics and tricks for making your
-code run faster under PyPy.  Many of these are also useful hints for
-stock Python and other languages.  For contrast, we also describe some
-CPython (stock Python) optimizations that are not needed in PyPy.</p>
-<hr class="docutils" />
-<div class="section" id="profiling-vmprof">
-<span id="profiling"></span><span id="profiler"></span><h1><a class="toc-backref" href="#id1">Profiling: vmprof</a></h1>
-<p>As a general rule, when considering performance issues, follow these
-three points: first <em>measure</em> them (it is counter-productive to fight
-imaginary performance issues); then <em>profile</em> your code (it is useless
-to optimize the wrong parts).  Only optimize then.</p>
-<p>PyPy 2.6 introduced <a class="reference external" href="https://vmprof.readthedocs.org/">vmprof</a>, a very-low-overhead statistical profiler.
-The standard, non-statistical <tt class="docutils literal">cProfile</tt> is also supported, and can be
-enabled without turning off the JIT.  We do recommend vmprof anyway
-because turning on cProfile can distort the result (sometimes massively,
-though hopefully this should not be too common).</p>
-</div>
-<hr class="docutils" />
-<div class="section" id="optimization-strategy">
-<h1><a class="toc-backref" href="#id2">Optimization strategy</a></h1>
-<p>These suggestions apply to all computer languages.  They're here as
-reminders of things to try before any Python or PyPy-specific tweaking.</p>
-<div class="section" id="build-a-regression-test-suite">
-<h2>Build a regression-test suite</h2>
-<p>Before you start tuning, build a regression-test suite for your code.
-This front-loads a significant amount of work, but it means you can
-try lots of optimizations without worrying so much about introducing
-functional bugs.</p>
-</div>
-<div class="section" id="measure-don-t-guess">
-<h2>Measure, don't guess</h2>
-<p>Human beings are bad at guessing or intuiting where the hotspots in code are.
-Measure, don't guess; use a <a class="reference internal" href="#profiler">profiler</a> to pin down the 20% of the
-code where the code is spending 80% of its time, then speed-tune that.</p>
-<p>Measuring will save you a lot of effort wasted on tuning parts of the code
-that aren't actually bottlenecks.</p>
-<p>As you tune, re-profile frequently  so you can see how the hottest spots
-are shifting around.</p>
-</div>
-<div class="section" id="i-o-bound-is-different-from-compute-bound">
-<h2>I/O-bound is different from compute-bound</h2>
-<p>Be aware of the difference between code that is compute-bound (slow
-because it's doing a huge number of instructions) and code that is I/O
-bound (slow because of disk or network delays).</p>
-<p>Expect to get most of your gains from optimizing compute-bound code.
-It's usually (though not always) a sign that you're near the end of
-worthwhile tuning when <a class="reference internal" href="#profiling">profiling</a> shows that the bulk of the
-application's time is spent on network and disk I/O.</p>
-</div>
-<div class="section" id="tune-your-algorithms-first">
-<h2>Tune your algorithms first</h2>
-<p>Generally, when your code is doing things that are O(n**2) or larger
-in the size of your data set, the cost of those operations is going
-to swamp any small gains you can pick up with the tricks we describe
-here.</p>
-<p>Tune your algorithms first.  It's time to think about applying our
-list of micro-tuning tips  <em>after</em> you think you've optimized out
-intrinsically expensive operations.</p>
-<p>That said, be prepared for the possibility that you will discover
-better-hidden algorithmic problems as you micro-tune.  Likely
-you will go through this cycle more than once.</p>
-</div>
-<div class="section" id="focus-on-tight-loops">
-<h2>Focus on tight loops</h2>
-<p>It's extremely common for high time costs to lurk within some
-innocuous-looking code inside a tight loop - especially in code
-that does something like a searching/matching/lookup operation
-or any kind of graph traversal.</p>
-<p>Probably the most common kind of performance-killer in compute-bound
-code is an O(n**2) operation that is disguised by being some sort of
-O(n) lookup or match inside an O(n) loop.</p>
-<p>Another common time-sink is relatively expensive common-setup
-operations that are performed inside tight loops but could be moved
-to before they start.  (For a representative case of this, see the
-micro-tuning tip on regexp compilation.)</p>
-</div>
-<div class="section" id="smaller-is-faster">
-<h2>Smaller is faster</h2>
-<p>Modern computers have multiple levels of memory caching, some directly
-on the processor chip.  Causing a cache miss at any level incurs a
-performance penalty proportional to random-access time for the next
-outward (and much slower) layer of cache.</p>
-<p>Accordingly, smaller is faster.  Programs or routines with a small
-enough working set to fit inside a fast cache will be as fast as
-that cache is. To make your code fast, reduce the length of the
-series of Python or JIT-compiler opcodes it generates by making
-it simpler.</p>
-<p>The tradeoff here is that algorithmic tuning often trades time for
-space - that is, it increases the size of an algorithm's working set
-by including pre-computations or tables or reverse maps in order to
-avoid O(n**2) operations.</p>
-<p>It's impossible to predict in advance where the sweet spot in that
-tradeoff will be.  You have to try different things and measure -
-which takes us right back to &ldquo;Measure, don't guess&rdquo;.  And another
-function of your regression test suite can be as a speed benchmark.</p>
-</div>
-</div>
-<hr class="docutils" />
-<div class="section" id="micro-tuning-tips">
-<h1><a class="toc-backref" href="#id3">Micro-tuning tips</a></h1>
-<p>These are in no particular order.</p>
-<div class="section" id="keep-it-simple">
-<h2>Keep it simple</h2>
-<p>Simple is better than complex. The PyPy JIT is not very smart; the
-simpler your code is the better it will run. Here again, though, you face
-a tradeoff: you may need to pay with more algorithmic complexity in order
-to avoid brute-force operations that are O(n**2) or worse.</p>
-<p>Write plain-vanilla code in plain-vanilla ways. The PyPy JIT has many
-productions that optimize a common usage pattern against an uncommon
-usage pattern.</p>
-</div>
-<div class="section" id="global-variables">
-<h2>Global variables</h2>
-<p>In CPython, global variables and functions (including package imports)
-are much more expensive to reference than locals; avoid them.  (This
-is also good modularity practice).</p>
-<p>The cost of CPython global references is high enough that, for example, if you
-have code in a frequently-visited inner loop that uses int() a lot, it
-may be worthwhile to create a local copy of the reference with &ldquo;int =
-int&rdquo; in an enclosing block.</p>
-<p>However, this in <em>not</em> true in JITted PyPy code. The &ldquo;int = int&rdquo; hack
-won't buy you performance, it's just an extra copy.  The modularity
-reason for avoiding globals are still valid.</p>
-</div>
-<div class="section" id="regular-expressions">
-<h2>Regular expressions</h2>
-<p>Regular-expression compilation is expensive.  If the regexp pattern in
-a search, match, or replace operation is static (doesn't mutate at
-runtime) refactor so it's only done once.</p>
-<p>If the regexp compilation is in a class method, consider doing it as
-the initializer of a regexp-valued static (shared) class member and
-using that class member in your operation.</p>
-<p>If the regexp compilation is in a free function, consider moving it
-to module level and referencing the resulting regexp object
-(but see the warning above about global variables).</p>
-</div>
-<div class="section" id="old-vs-new-style-classes">
-<h2>Old- vs. new-style classes</h2>
-<p>New-style classes allow faster attribute access and take up less core
-per instance than old-style classes.  Much of this advantage may be
-lost, however, if attribute names are not constant. For example: x.a
-= y or even setattr(x, &lsquo;a&rsquo;, y) will be much faster than a dynamic
-version: setattr(x, &lsquo;a&rsquo; + some_variable, y).</p>
-<p>Classes that inherit from both new- and old-style classes are
-<em>extremely</em> slow; avoid at all costs.</p>
-<p>In PyPy, isinstance() called against an old-style class was very slow
-until 2.0.</p>
-</div>
-<div class="section" id="string-concatenation-is-expensive">
-<h2>String concatenation is expensive</h2>
-<p>In CPython, you may want to replace:</p>
-<pre class="literal-block">
-s = head + body + maybe + tail
-</pre>
-<p>with the admittedly less readable:</p>
-<pre class="literal-block">
-s = &quot;%(head)s%(body)s%(maybe)s%(tail)s&quot; % locals()
-</pre>
-<p>or even:</p>
-<pre class="literal-block">
-s = &quot;{head}{body}{maybe}{tail}&quot;.format(**locals())
-</pre>
-<p>Both of the latter forms avoid multiple-allocation overhead.
-But PyPy's JIT makes the overhead of intermediate concatenations
-go away in linear code that keeps the number of concatenations
-small, bound and constant.  (And <tt class="docutils literal">locals()</tt> 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="literal-block">
-for x in mylist:
-    s += foo(x)
-</pre>
-<p>the JIT cannot optimize out intermediate copies.  This code is
-actually quadratic in the total size of the mylist strings due to
-repeated string copies of ever-larger prefix segments.  (Such code
-is always fine for bytearrays, because in this case <tt class="docutils literal">+=</tt> is an
-in-place operation.)</p>
-<p>This:</p>
-<pre class="literal-block">
-parts = []
-for x in mylist:
-    parts.append(foo(x))
-s = &quot;&quot;.join(parts)
-</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
-sequence (and list operations are relatively cheap).</p>
-</div>
-<div class="section" id="frame-introspection-and-tracing-are-slow">
-<h2>Frame introspection and tracing are slow</h2>
-<p>Certain function calls can disable PyPy's speed options over
-stretches of surrounding code called &ldquo;JIT scopes&rdquo;.</p>
-<p>A JIT like PyPy's works based on the assumption that the only thing
-worth optimizing are loops that are executed often. Whenever the
-interpreter enters a loop in the interpreted program, the JIT records
-what the interpreter does, creating a trace. This trace is optimized,
-compiled to machine code and executed when the loop is hit with the
-conditions observed during tracing.  This trace is one kind of JIT scope.</p>
-<p>Another kind of JIT scope that matters is a function, considered as
-a unit for inlining.</p>
-<p>Note that a JIT scope is a run-time phenomenon, not a compile-time
-one.  It's not confined by source-code module boundaries.  A library-
-or foreign-module call in a frequently-called loop or inlined function
-will be part of its JIT scope.</p>
-<p>locals(), globals(), sys._getframe(), sys.exc_info(), and sys.settrace
-work in PyPy, but they incur a performance penalty that can be huge by
-disabling the JIT over the enclosing JIT scope.</p>
-<p><em>(Thanks Eric S. Raymond for the text above)</em></p>
-</div>
-</div>
-<hr class="docutils" />
-<div class="section" id="insider-s-point-of-view">
-<h1><a class="toc-backref" href="#id4">Insider's point of view</a></h1>
-<p>This section describes performance issues from the point of view of
-insiders of the project; it should be particularly interesting if you
-plan to contribute in that area.</p>
-<p>One of the goals of the PyPy project is to provide a fast and compliant
-python interpreter. Some of the ways we achieve this are by providing a
-high-performance garbage collector (GC) and a high-performance
-Just-in-Time compiler (JIT).  Results of comparing PyPy and CPython can
-be found on the <a class="reference external" href="http://speed.pypy.org">speed website</a>. Those benchmarks are not a random
-collection: they are a combination of real-world Python programs &ndash;
-benchmarks originally included with the (now dead) Unladen Swallow
-project &ndash; and benchmarks for which we found PyPy to be slow (and improved).
-Consult the descriptions of each for details.</p>
-<p>The JIT, however, is not a magic bullet. There are several characteristics
-that might surprise people who are not used to JITs in
-general or to the PyPy JIT in particular.  The JIT is generally good at
-speeding up straight-forward Python code that spends a lot of time in the
-bytecode dispatch loop, i.e., running actual Python code &ndash; as opposed
-to running things that only are invoked by Python code.  Good
-examples include numeric calculations or any kind of heavily
-object-oriented program.  Bad examples include doing computations with
-large longs &ndash; which is performed by unoptimizable support code.  When the
-JIT cannot help, PyPy is generally slower than CPython.</p>
-<p>More specifically, the JIT is known not to work on:</p>
-<ul class="simple">
-<li><strong>Tests</strong>: The ideal unit tests execute each piece of tested code
-once.  This leaves no time for the JIT to warm up.</li>
-<li><strong>Really short-running scripts</strong>: A rule of thumb is if something runs below
-0.2s the JIT has no chance, but it depends a lot on the program in question.
-In general, make sure you warm up your program before running benchmarks, if
-you're measuring something long-running like a server.  The time required
-to warm up the JIT varies; give it at least a couple of seconds.  (PyPy's
-JIT takes an especially long time to warm up.)</li>
-<li><strong>Long-running runtime functions</strong>: These are the functions provided
-by the runtime of PyPy that do a significant amount of work.
-PyPy's runtime is generally not as optimized as CPython's and we expect those
-functions to take somewhere between the same time as CPython to twice as long.
-This includes, for example, computing with longs, or sorting large lists.
-A counterexample is regular expressions: although they take time, they
-come with their own JIT.</li>
-</ul>
-<p>Unrelated things that we know PyPy to be slow at (note that we're probably
-working on it):</p>
-<ul class="simple">
-<li><strong>CPython C extension modules</strong>: Any C extension module recompiled
-with PyPy takes a very large hit in performance.  PyPy supports C
-extension modules solely to provide basic functionality.
-If the extension module is for speedup purposes only, then it
-makes no sense to use it with PyPy at the moment.  Instead, remove it
-and use a native Python implementation, which also allows opportunities
-for JIT optimization.  If the extension module is
-both performance-critical and an interface to some C library, then it
-might be worthwhile to consider rewriting it as a pure Python version
-that uses <a class="reference external" href="http://cffi.readthedocs.org/">CFFI</a> for the interface.</li>
-<li><strong>Missing RPython modules</strong>: A few modules of the standard library
-(like <tt class="docutils literal">csv</tt> and <tt class="docutils literal">cPickle</tt>) are written in C in CPython, but written
-natively in pure Python in PyPy.  Sometimes the JIT is able to do a
-good job on them, and sometimes not.  In most cases (like <tt class="docutils literal">csv</tt> and
-<tt class="docutils literal">cPickle</tt>), we're slower than CPython, with the notable exception of
-<tt class="docutils literal">json</tt> and <tt class="docutils literal">heapq</tt>.</li>
-<li><strong>Abuse of itertools</strong>: The itertools module is often &ldquo;abused&rdquo; in the
-sense that it is used for the wrong purposes.  From our point of view,
-itertools is great if you have iterations over millions of items, but
-not for most other cases.  It gives you 3 lines in functional style
-that replace 10 lines of Python loops (longer but arguably much easier
-to read).  The pure Python version is generally not slower even on
-CPython, and on PyPy it allows the JIT to work much better &ndash; simple
-Python code is fast.  The same argument also applies to <tt class="docutils literal">filter()</tt>,
-<tt class="docutils literal">reduce()</tt>, and to some extend <tt class="docutils literal">map()</tt> (although the simple case
-is JITted), and to all usages of the <tt class="docutils literal">operator</tt> module we can think
-of.</li>
-<li><strong>Ctypes</strong>: Ctypes is slower than on CPython.  Consider <a class="reference external" href="http://cffi.readthedocs.org/">CFFI</a> instead,
-which has special paths inside the JIT.</li>
-</ul>
-<p>We generally consider things that are slower on PyPy than CPython to be bugs
-of PyPy.  If you find some issue that is not documented here,
-please report it to our <a class="reference external" href="https://bitbucket.org/pypy/pypy/issues?status=new&amp;status=open">bug tracker</a> for investigation.</p>
-</div>
-</div>
-<div id="sidebar">
-</div>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/public/favicon2.png b/public/favicon2.png
new file mode 100644
index 0000000000000000000000000000000000000000..d147173629864f7e6da122767d521a77265c38f7
GIT binary patch
literal 9731
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
Rk23%O002ovPDHLkV1hGG@RR@m

diff --git a/py3donate.html b/py3donate.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_cHkzZG9uYXRlLmh0bWw=..0000000000000000000000000000000000000000
--- a/py3donate.html
+++ /dev/null
@@ -1,326 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy - Call for donations - PyPy to support Python3!</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div id="main">
-<h1 class="title">Call for donations - PyPy to support Python3!</h1>
-<p>UPDATE (December 2017):</p>
-<blockquote>
-PyPy3 supporting Python 3.5 has been released.</blockquote>
-<p>UPDATE (August 2016):</p>
-<blockquote>
-<em>We are soon releasing a beta supporting Python 3.3.  For the next
-full year, though, see</em> <a class="reference external" href="https://morepypy.blogspot.ch/2016/08/pypy-gets-funding-from-mozilla-for.html">PyPy gets funding from Mozilla for Python 3.5
-support</a>.  <em>Individual donations through here are still welcome, and
-go towards the same goal, which is upgrading PyPy to support Python
-3.x (which really means 3.3/3.5 by now).  Thanks to all our past
-contributors!  Your money has been put to good use so far.</em></blockquote>
-<p>UPDATE (February 2014):</p>
-<blockquote>
-<em>Thanks to our donors, we have raised 45% of
-the total so far.  Work on this topic has been happening, and
-continues to happen, within the budget &ndash; even if not within the
-timeline described below.  We have simply not found enough time to
-work on it as much as we wanted, and thus did not consume the money as
-quickly as predicted.  The ratio &ldquo;progress / $ used&rdquo; so far
-corresponds roughly to what we expected.  The document below is the
-original call for proposal, and we still accept donations for this
-topic.</em></blockquote>
-<p>The release of Python 3 has been a major undertaking for the Python
-community, both technically and socially.  So far the PyPy interpreter
-implements only version 2 of the Python language and is increasingly
-used in production systems.  It thus contributes to the general risk
-of a long lasting Python community split where a lot of people
-continue using Python 2 while others work with Python 3, making it
-harder for everyone.</p>
-<p>The PyPy project is in a unique position in that it could support
-Python 3 without having to discontinue supporting Python 2, with the possibility of reusing a large part of the code base and fully
-reusing its unique translation and JIT-Compiler technologies.
-However, it requires a lot of work, and it will take a long time
-before we can complete a Python 3 port if we only wait for volunteer
-work.  Thus, we are asking the community to help with funding the
-necessary work, to make it happen faster.  <a class="reference internal" href="#here">Here</a> is a more detailed view on how our proposed work benefits the Python community and the general public.</p>
-<p>Below you'll find the <a class="reference internal" href="#planned-stages-of-work">planned stages of work</a> and the associated
-fundraising targets we need to make things happen.  Once we reach the
-necessary target for each stage, we will start contracting
-developers.  Contracts and money are managed by the non-profit
-<a class="reference external" href="http://sfconservancy.org/">Software Freedom Conservancy</a> of which the PyPy project is a member.
-The current elected representatives are Carl Friedrich Bolz, Holger
-Krekel and Jacob Hallen and they will - in close collaboration with
-Conservancy and the core developers - select the best developers for
-the Python 3 porting job among well known PyPy contributors.</p>
-<p>If you want to see PyPy support Python 3 and Python 2, donate using buttons
-on the side.</p>
-<p>Should we not receive enough donations to complete all stages by 1st March 2012
-at the latest, we will try our best to make PyPy support Python 3 anyway.  We
-however reserve the right to shift any unused funds to other PyPy activities
-when that date is reached.  Of course, since the Conservancy is a
-501(c)(3) charitable organization incorporated in NY, USA, all funds will,
-regardless of their use, be spent in a way that benefits the general
-public, the advancement of Open Source and Free Software,
-and in particular the PyPy community and the PyPy codebase.</p>
-<p><strong>Note</strong> For donations higher than $1,000, we can arrange for an invoice
-and a different payment method to avoid the high Paypal fees.  Please
-contact pypy at sfconservancy.org if you want to know details on how
-to donate via other means.</p>
-<div class="section" id="id2">
-<span id="planned-stages-of-work"></span><h1>Planned stages of work</h1>
-<p>The goal of this project is to write an interpreter that interprets
-version 3 of the Python language. To be precise we would aim at having
-a Python 3.2 interpreter together in the same codebase as the python 2.7
-one.</p>
-<p>At the end of the project, it will be possible to decide at
-translation time whether to build an interpreter which supports Python
-2.7 or Python 3.2 and both versions will be nightly tested and
-available from nightly builds.</p>
-<p>The focus of this project is on compatibility, not performance.  In
-particular, it might be possible that the resulting Python 3
-interpreter will be slower than the Python 2 one.  If needed,
-optimizing and making it more JIT friendly will be the scope of a
-separate project. Our existing JIT generation technology should apply
-out of the box; this disclaimer is only about the extra performance we
-could obtain by tweaking the Python 3 interpreter or writing specific
-interpreter-guided optimizations in the JIT.</p>
-<div class="section" id="about-estimates-and-costs">
-<h2>About estimates and costs</h2>
-<p>For each step, we estimated the time that it would take to complete for an
-experienced developer who is already familiar with the PyPy codebase.  From
-this number, the money is calculated considering an hourly rate of $60, and a
-5% general donation which goes to the <a class="reference external" href="http://sfconservancy.org/">Software Freedom Conservancy</a> itself, the non-profit
-association of which the PyPy project is a member and which manages all the
-issues related to donations, taxes and payments.</p>
-<p>The estimated time to complete the whole project is about 10.5 person-months.</p>
-<p>For comparison, the python-3000 mailing list was created in March 2006; Python
-3.0 was released in December 2008 and Python 3.1, the first release genuinely
-suitable for production use (due to the abysmal I/O performance of 3.0) was
-released in June 2009.  During these 3.5 years, a lot of people contributed to
-the development of Python 3, and while it is hard to turn these numbers into
-precise person-years, it sounds reasonable to think that in total it took
-several person-years.</p>
-<p>We have the advantage of targeting something that already exists without
-having to define the destination as they go along, and also the internal
-architecture of PyPy makes it easier to do the porting.</p>
-</div>
-<div class="section" id="step-1-core-language">
-<h2>Step 1: core language</h2>
-<p>In this step, we implement all the changes to the core language,
-i.e. everything which is not in the extension modules.  This includes, but it
-is not necessarily limited to the following items, which are split into two
-big areas:</p>
-<ul>
-<li><p class="first"><strong>Sub-step 1.1</strong>: string vs unicode and I/O:</p>
-<blockquote>
-<ul class="simple">
-<li>adapt the existing testing infrastructure to support running Python 3 code</li>
-<li>string vs bytes: the interpreter uses unicode strings everywhere.</li>
-<li>the <tt class="docutils literal">print</tt> function</li>
-<li><tt class="docutils literal">open</tt> is now an alias for <tt class="docutils literal">io.open</tt>, removal of the old file type.</li>
-<li>string formatting (for the part which is not already implemented in Python
-2.7)</li>
-<li>the _io module (for the part which is not already implemented in Python
-2.7)</li>
-<li>syntactic changes to make <tt class="docutils literal">io.py</tt> importable (in particular:
-<tt class="docutils literal"><span class="pre">metaclass=...</span></tt> in class declarations)</li>
-<li><strong>Estimate cost</strong>: $35,000</li>
-</ul>
-</blockquote>
-</li>
-<li><p class="first"><strong>Sub-step 1.2</strong>: other syntactic changes, builtin types and functions,
-exceptions:</p>
-<blockquote>
-<ul class="simple">
-<li>views and iterators instead of lists (e.g., <tt class="docutils literal">dict.items()</tt>, <tt class="docutils literal">map</tt>,
-<tt class="docutils literal">range</tt> &amp; co.)</li>
-<li>new rules for ordering comparisons</li>
-<li>removal of old-style classes</li>
-<li>int/long unification</li>
-<li>function annotations</li>
-<li>smaller syntax changes, such as keyword-only arguments, <tt class="docutils literal">nonlocal</tt>,
-extended iterable unpacking, set literals, dict and set comprehension, etc.</li>
-<li>changes to exceptions: <tt class="docutils literal">__traceback__</tt> attribute, chained exceptions,
-<tt class="docutils literal">del e</tt> at the end of the except block, etc.</li>
-<li>changes to builtins: <tt class="docutils literal">super</tt>, <tt class="docutils literal">input</tt>, <tt class="docutils literal">next()</tt>, etc.</li>
-<li>improved <tt class="docutils literal">with</tt> statement</li>
-<li><strong>Estimate cost</strong>: $28,000</li>
-</ul>
-</blockquote>
-</li>
-</ul>
-<p>Note that the distinction between sub-steps 1.1 and 1.2 is blurry, and it might be
-possible that during the development we will decide to move items between the
-two sub-steps, as needed.</p>
-<p>For more information, look at the various &ldquo;What's new&rdquo; documents:</p>
-<ul class="simple">
-<li><a class="reference external" href="http://docs.python.org/py3k/whatsnew/3.0.html">http://docs.python.org/py3k/whatsnew/3.0.html</a></li>
-<li><a class="reference external" href="http://docs.python.org/py3k/whatsnew/3.1.html">http://docs.python.org/py3k/whatsnew/3.1.html</a></li>
-<li><a class="reference external" href="http://docs.python.org/py3k/whatsnew/3.2.html">http://docs.python.org/py3k/whatsnew/3.2.html</a></li>
-</ul>
-<p><strong>Total estimate cost</strong>: $63,000</p></div>
-<div class="section" id="step-2-extension-modules">
-<h2>Step 2: extension modules</h2>
-<p>In this step, we implement all the changes to the extension modules which are
-written in C in CPython.  This includes, but it is not necessarily limited to:</p>
-<ul class="simple">
-<li><tt class="docutils literal">collections</tt>, <tt class="docutils literal">gzip</tt>, <tt class="docutils literal">bz2</tt>, <tt class="docutils literal">decimal</tt>, <tt class="docutils literal">itertools</tt>, <tt class="docutils literal">re</tt>,
-<tt class="docutils literal">functools</tt>, <tt class="docutils literal">pickle</tt>, <tt class="docutils literal">_elementtree</tt>, <tt class="docutils literal">math</tt>, etc.</li>
-</ul>
-<p><strong>Estimate cost</strong>: this is hard to do at this point, we will be able to give a
-more precise estimate as soon as Step 1 is completed.  As a reference, it
-should be possible to complete it with $37,000</p></div>
-<div class="section" id="step-3-cpyext">
-<h2>Step 3: cpyext</h2>
-<p>The <tt class="docutils literal">cpyext</tt> module allows to load CPython C extensions in PyPy.  Since the
-C API changed a lot between Python 2.7 and Python 3.2, <tt class="docutils literal">cpyext</tt> will not
-work out of the box in the Python 3 PyPy interpreter.  In this step, we will
-adapt it to work with Python 3 as well.</p>
-<p>Note that, even for Python 2, <tt class="docutils literal">cpyext</tt> is still in a beta state.  In
-particular, not all extension modules compile and load correctly.  As a
-consequence, the same will be true for Python 3 as well.  As a general rule,
-we expect that if a Python 2 module works with <tt class="docutils literal">cpyext</tt>, the corresponding
-Python 3 version will also work when this step is completed, although the
-details might vary depending on the exact C extension module.</p>
-<p><strong>Estimate cost</strong>: $5,000</p></div>
-</div>
-<div class="section" id="benefits-of-this-work-to-the-python-community-and-the-general-public">
-<span id="here"></span><h1>Benefits of This Work to the Python Community and the General Public</h1>
-<p>Python has become one of the most popular dynamic programming languages in
-the world.  Web developers, educators, and scientific programmers alike
-all value Python because Python code is often more readable and because
-Python often increases programmer productivity.</p>
-<p>Traditionally, languages like Python ran more slowly than static, compiled
-languages; Python developers chose to sacrifice execution speed for ease
-of programming.  The PyPy project created a substantially improved Python
-language implementation, including a fast Just-in-time (JIT) compiler.
-The increased execution speed that PyPy provides has attracted many users,
-who now find their Python code runs up to four times faster under PyPy
-than under the reference implementation written in C. Some programs that
-are particularly JIT-friendly see even greater speedups. See our <a class="reference external" href="http://speed.pypy.org">speed</a>
-website.</p>
-<p>Meanwhile, the Python community is undergoing significant change, with the
-introduction of a new &lsquo;version 3&rsquo; of the Python language (Python 3).
-Python 3 breaks some backwards compatibility with 2.x series, so
-programmers who seek to use Python 3 must port old code.  For example,
-programmers who needed old libraries might want to use Python 2 only and
-programmers wanting to use new language features would like to use Python
-3, but would not be able to use libraries that written for Python 2.x
-without substantial rewrites.  This issue could lead to a dangerous
-community split: programmers who needed old libraries might only use
-Python 2 and programmers seeking new language features would use Python 3,
-but would not be able to use libraries written for Python 2.x.</p>
-<p>PyPy currently supports only Python 2.7.  While PyPy supports only version
-2 of the Python language, PyPy users have an incentive to avoid Python 3.
-Python programmers must chose between the language features in Python 3,
-and the substantial performance benefits offered by PyPy.</p>
-<p>To address this issue, the PyPy team proposes to implement Python 3 on
-PyPy.  With such improvements to PyPy, PyPy can support the entire
-Python-using community and hopefully help to prevent any community split.
-PyPy support of Python 3 would also bring the excellent code execution
-performance of PyPy to those who wish to migrate to Python 3.</p>
-<p>Moreover, by ensuring the latest version of the Python language
-specification (Py3k) works properly and fully on PyPy, the maximal benefit
-of collaboration, learning, and software improvement can happen in the
-entire Python language community.</p>
-<p>A broad community of developers support and develop the PyPy project,
-many of whom work as volunteers. The Py3k grant should help with turning
-some attention towards implementing Python 3. This will not hinder other
-directions in which PyPy is going like improving performance. The goal
-of the PyPy community is to support both Python 2 and Python 3 for the
-foreseeable future.</p>
-<p>PyPy's developers make all PyPy software available to the public without
-charge, under PyPy's Open Source copyright license, the permissive MIT
-License.  PyPy's license assures that PyPy is equally available to
-everyone freely on terms that allow both non-commercial and commercial
-activity.  This license allows for academics, for-profit software
-developers, volunteers and enthusiasts alike to collaborate together to
-make a better Python implementation for everyone.</p>
-<p>Finally, tracing JITs and other programming language execution technology
-used in PyPy are of current and particular interest in computer science
-research.  PyPy helps cross-pollinate knowledge between academic computer
-science and industrial use of Python, since PyPy can function well both as
-a research tool and real-world Python programming language implementation.
-Continued support and evolution of PyPy in any direction, such as support
-for Py3k, increases the features available from PyPy and such improvements
-are expected to spark even more general interest in PyPy itself and the
-Python programming language generally.</p>
-<dl class="docutils">
-<dt>References on Educational Uses of Python:</dt>
-<dd><ul class="first last simple">
-<li><a class="reference external" href="http://wiki.python.org/moin/SchoolsUsingPython">http://wiki.python.org/moin/SchoolsUsingPython</a></li>
-<li><a class="reference external" href="http://www.python.org/doc/essays/cp4e.html">http://www.python.org/doc/essays/cp4e.html</a></li>
-</ul>
-</dd>
-<dt>References for PyPy and its benefits:</dt>
-<dd><ul class="first last simple">
-<li><a class="reference external" href="http://pypy.org/">http://pypy.org/</a></li>
-<li><a class="reference external" href="http://pypy.org/features.html">http://pypy.org/features.html</a></li>
-<li><a class="reference external" href="http://pypy.org/compat.html">http://pypy.org/compat.html</a></li>
-</ul>
-</dd>
-</dl>
-</div>
-</div>
-<div id="sidebar">
-</div>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/redirect_bugs_pypy_org.html b/redirect_bugs_pypy_org.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_cmVkaXJlY3RfYnVnc19weXB5X29yZy5odG1s..0000000000000000000000000000000000000000
--- a/redirect_bugs_pypy_org.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<html>
-<body>
-<h1>PyPy Issue tracker</h1>
-<p>The issue tracker for PyPy moved here:
-<a href="https://bitbucket.org/pypy/pypy/issues?status=new&status=open">https://bitbucket.org/pypy/pypy/issues</a></p>
-<p>You should be redirected automatically.</p>
-
-<script type="text/javascript">
-
-go_to = "https://bitbucket.org/pypy/pypy/issues?status=new&status=open";
-re = /[/]issue([0123456789]+)/g;
-if (tokens = re.exec(document.location.href)) {
-    num = tokens[1];
-    go_to = "https://bitbucket.org/pypy/pypy/issue/" + num + "/";
-}
-document.location.href = go_to;
-
-</script>
-</body>
-</html>
diff --git a/sponsor.html b/sponsor.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_c3BvbnNvci5odG1s..0000000000000000000000000000000000000000
--- a/sponsor.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy - Sponsor PyPy</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div id="main">
-<script>
-  $(function() {
-    $("#progressbar").progressbar({
-      value: 0
-   });
-  });
-</script>
-<h1 class="title">Sponsor PyPy</h1>
-<p>As an Open Source project, PyPy is mostly an effort of volunteers. However,
-we've decided to run a <a class="reference external" href="xxxbloglink">pilot program</a> of <a class="reference external" href="http://en.wikipedia.org/wiki/Crowdfunding">crowdfunding</a> to implement NumPy.</p>
-<p>Our goal is to raise 20000 Euros by the 1st of October 2011. That should allow
-us to finish implementing NumPy by the end of 2011.</p>
-<div id="progressbar">
-  <div class="progresstext">
-  0 of 20000 (0%)
-  </div>
-</div>
-<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
-Sponsor numpy implementation in PyPy by the following amount:<br/>
-<input type="text" name="amount"></input>
-<input type="hidden" name="item_name" value="Sponsor NumPy on PyPy"/>
-<input type="hidden" name="quantity" value="1"/>
-<select name="currency_code">
-  <option value="USD" selected="1">USD</option>
-  <option value="EUR">EUR</option>
-  <option value="GBP">GBP</option>
-</select>
-<input type="hidden" name="cmd" value=" _s-xclick"/>
-<input type="hidden" name="hosted_button_id" value="QVB9EDQXBUPJY">
-<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
-<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
-</form>
-</div>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/success.html b/success.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_c3VjY2Vzcy5odG1s..0000000000000000000000000000000000000000
--- a/success.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy - Success stories</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div id="main">
-<h1 class="title">Success stories</h1>
-<p>PyPy has been successfully used in production by various people. Here are
-few excepts of feedback we received:</p>
-<div class="section" id="lwn-short-experiment">
-<h1>LWN short experiment</h1>
-<p>LWN has a tool they use for parsing &ldquo;git log&rdquo;'s output in order to do analysis
-on the contributors to the Linux kernel. Simply <a class="reference external" href="http://lwn.net/Articles/442268/">by switching to PyPy</a> they
-were able to get a 3x speedup, from 63 seconds to 21 seconds, compared to
-CPython.</p>
-<p>&ldquo;In other ways, PyPy is ready for prime time; it implements the (Python 2.x) language faithfully, and it is fast.&rdquo;</p>
-</div>
-<div class="section" id="myhdl">
-<h1>MyHDL</h1>
-<p>MyHDL got a speed up by <a class="reference external" href="http://www.myhdl.org/doku.php/performance">6-12x compared to CPython</a>, on a range of benchmarks,
-putting it in the same league as other HDL implementations.</p>
-<p>&ldquo;By simply changing the Python interpreter, MyHDL is playing in the same league as Verilog and VHDL simulators. This is a remarkable achievement, given that Python's power stays completely available. There is no reason anymore to avoid MyHDL because of performance concerns.&rdquo;</p>
-</div>
-</div>
-<div id="sidebar">
-</div>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/tmdonate.html b/tmdonate.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_dG1kb25hdGUuaHRtbA==..0000000000000000000000000000000000000000
--- a/tmdonate.html
+++ /dev/null
@@ -1,380 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy - Call for donations - Transactional Memory / Automatic Mutual Exclusion in PyPy</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div id="main">
-<h1 class="title">Call for donations - Transactional Memory / Automatic Mutual Exclusion in PyPy</h1>
-<p class="download-menu"><strong>UPDATE (April 2014): this is the old Call for Donations about
-Transactional Memory</strong>, kept around for historical purposes.  A <a class="reference external" href="tmdonate2.html">new Call
-for Donations</a> is available.</p>
-<div class="section" id="introduction">
-<h1>Introduction</h1>
-<p>In the presence of today's machines with multiple processors, Python
-progress is lagging behind: on any CPU-constrained program, developers
-have a difficult choice to make.  They can use in-process solutions that
-do not offer multi-CPU usage.  In this respect, the natural choice
-nowadays is to use Twisted or other event-based paradigms, or systems
-that hide events in the control flow, like Stackless; or alternatively,
-they can use the existing <tt class="docutils literal">threading</tt> module, with its associated GIL
-and the complexities of real multi-threaded programming (locks,
-deadlocks, races, etc.), which make this solution less attractive.  The
-big alternative is for them to rely on one of various multi-process
-solutions that are outside the scope of the core language; all of them
-in some way or another are hacks that require extra knowledge and time
-to use and that have an impact on the structure of the whole program.</p>
-<p>This proposal is about researching and implementing Transactional Memory
-in PyPy.  This is a technique that recently came to the front of the
-multi-core scene.  It promises to offer multi-core CPU usage without
-requiring to fall back to the multi-process solutions described above,
-and also without using the <tt class="docutils literal">threading</tt> module &ndash; just as a small,
-local extension of the programming language that would be used only in
-the core of the event loops.</p>
-<p>(Jump directly to <a class="reference internal" href="#what-python-interface-will-i-use">What Python interface will I use?</a> for practical
-details.)</p>
-</div>
-<div class="section" id="in-more-details">
-<h1>In more details</h1>
-<p>This is a call for financial help in researching and implementing a
-version of PyPy able to use multiple processors in a single process.
-This will give a GIL-less Python, i.e. a Python that runs without the
-infamous Global Interpreter Lock.</p>
-<p>The basic ideas to do it have been discussed on pypy-dev <a class="reference external" href="http://mail.python.org/pipermail/pypy-dev/2011-August/008153.html">[1]</a> <a class="reference external" href="http://mail.python.org/pipermail/pypy-dev/2012-January/009034.html">[2]</a>
-and on a blog post <a class="reference external" href="http://morepypy.blogspot.com/2012/01/transactional-memory-ii.html">[3]</a>.
-The goal is to adapt Transactional Memory &ndash; currently only available
-as software, but <a class="reference internal" href="#soon-available-as-hardware">soon available as hardware</a> &ndash; to the task of running
-sections of Python code in parallel on multiple processors, while giving
-the programmer the illusion of serial execution.  It is called below
-&ldquo;PyPy-TM&rdquo;.</p>
-<p>The main developer will be Armin Rigo.
-This is a &ldquo;researchy&rdquo; goal in the sense of us not being quite sure of
-the performance of the result.  We currently estimate the one-year
-performance goal at 2x-to-5x slower than regular PyPy in fully serial
-applications.  We feel confident that it can work, though, in the
-following sense: the performance of PyPy-TM running suited applications
-should scale linearly or close-to-linearly with the number of processors.
-This means that you just need a machine with at least 4 or 8 processors,
-which is already common today and will be even more so in one or two
-years.</p>
-<p>You will find below a sketch of the <a class="reference internal" href="#work-plan">work plan</a>.  If more money than
-requested is collected, then the excess will be entered into the general
-PyPy pot, used for example to finance sprint travel costs to students.</p>
-<p><strong>Note</strong> For donations higher than $1,000, we can arrange for an invoice
-and a different payment method to avoid the high Paypal fees.  Please
-contact pypy at sfconservancy.org if you want to know details on how
-to donate via other means.</p>
-<div class="section" id="what-is-the-global-interpreter-lock">
-<h2>What is the Global Interpreter Lock?</h2>
-<p>The GIL, or Global Interpreter Lock, is a single lock in both CPython
-and (so far) PyPy, that all threads must acquire in order to execute
-Python bytecodes.  This means that so far, in Python, even when using
-threads we do not gain any benefit in term of multicore performance.</p>
-</div>
-<div class="section" id="what-is-transactional-memory">
-<h2>What is Transactional Memory?</h2>
-<p><a class="reference external" href="http://en.wikipedia.org/wiki/Transactional_memory">Transactional Memory</a> &ndash; TM &ndash; is a technique imported from databases: every
-time we want to do a change to the processors' main memory, we do it in
-a &ldquo;transaction&rdquo;.  Multiple transactions can be executed in parallel by
-multiple cores.  When a transaction is complete, we try to commit it.
-This might either succeed, or (if another transaction committed
-incompatible changes) fail.  If it fails, which is hopefully rare, we
-need to restart the transaction from scratch.</p>
-</div>
-<div class="section" id="why-hasn-t-the-idea-been-implemented-for-cpython-already">
-<h2>Why hasn't the idea been implemented for CPython already?</h2>
-<p>Because of the additional complexity required, and mostly, because of
-performance issues.  There have been some experiments already with
-CPython on <em>Hardware</em> Transactional Memory:</p>
-<ul class="simple">
-<li><a class="reference external" href="http://sabi.net/nriley/pubs/dls6-riley.pdf">Riley and Zilles (2006)</a></li>
-<li><a class="reference external" href="http://www.cs.auckland.ac.nz/~fuad/parpycan.pdf">Tabba (2010)</a></li>
-</ul>
-<p>The motivation for using PyPy instead of CPython is the extra
-flexibility of the general approach, as well as the ability to utilize
-the JIT in order to remove part of the overhead that comes with
-<em>Software</em> Transactional Memory.</p>
-</div>
-<div class="section" id="a-gil-less-python-is-impossible">
-<h2>A GIL-less Python is impossible.</h2>
-<p>This is a classic criticism of research-oriented projects.  We believe
-that the <a class="reference internal" href="#work-plan">work plan</a> below can make a serious impact on considering
-possible a GIL-less Python.  We believe we can do it, but at the
-very least, even if this work generates a negative result, the negative
-result will document the challenges faced should someone else want to
-reattempt the idea in the future.</p>
-<p>Nevertheless other projects, such as Psyco (also by Armin) and PyPy
-itself, were called impossible before they were attempted, and have
-hitherto been very successful.</p>
-</div>
-<div class="section" id="why-do-it-with-pypy-instead-of-cpython">
-<h2>Why do it with PyPy instead of CPython?</h2>
-<p>Because PyPy is designed to be open to this kind of research.  This will
-require no work in the Python interpreter part of PyPy, and instead we
-can focus on e.g. the concurrent garbage collection and the JIT issues.
-<a class="reference external" href="http://sabi.net/nriley/pubs/dls6-riley.pdf">Riley and Zilles</a> have also experimented with Hardware Transactional
-Memory using PyPy.  By contrast, for example, CPython is stuck with
-reference counting, which is known to be an issue for Transactional
-Memory (<a class="reference external" href="http://www.cs.auckland.ac.nz/~fuad/parpycan.pdf">Tabba</a> proposes to give up and use <a class="reference external" href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/">Boehm</a>, which is a bad
-idea in our experience, particularly because of scalability issues).</p>
-</div>
-<div class="section" id="what-python-interface-will-i-use">
-<h2>What Python interface will I use?</h2>
-<p>Previous attempts on Hardware
-Transactional Memory focused on parallelizing existing programs written
-using the <tt class="docutils literal">thread</tt> or <tt class="docutils literal">threading</tt> modules.  However, as argued
-<a class="reference external" href="http://mail.python.org/pipermail/pypy-dev/2012-January/009044.html">here</a>, this may not be the most practical way to achieve real
-multithreading; it seems that better alternatives would offer good
-scalability too.  Notably, TM could benefit any event-based system that
-is written to dispatch events serially (Twisted-based, most GUI toolkit,
-Stackless, gevent, and so on).  The events would internally be processed
-in parallel, while maintaining the illusion of serial execution, with
-all the corresponding benefits of safety.  This should be possible with minimal
-changes to the event dispatchers. This approach has been described by the
-<a class="reference external" href="http://research.microsoft.com/en-us/projects/ame/default.aspx">Automatic Mutual Exclusion</a> work at Microsoft Research, but not been
-implemented anywhere (to the best of our knowledge).</p>
-<p>Note that, yes, this gives you both sides of the coin: you keep using
-your non-thread-based program (without worrying about locks and their
-drawbacks like deadlocks, races, and friends), <em>and</em> your programs
-benefit from all your cores.</p>
-<p>In more details, a low-level built-in module will provide the basics to
-start transactions in parallel; but this module will be only used
-internally in a tweaked version of, say, a Twisted reactor.  Using this
-reactor will be enough for your existing Twisted-based programs to
-actually run on multiple cores.  You &ndash; as a developer of the
-Twisted-based program &ndash; have only to care about improving the
-parallelizability of your program (e.g. by splitting time-consuming
-transactions into several parts; the exact rules will be published in
-detail once they are known).  But the point is that your program is
-always correct.</p>
-<p>See some <a class="reference external" href="https://bitbucket.org/pypy/pypy/raw/stm-gc/lib_pypy/transaction.py">concrete example</a> of the API.</p>
-</div>
-<div class="section" id="speed">
-<h2>Speed</h2>
-<p>We estimate the one-year performance target to be 2x-to-5x slower than
-the performance of the regular PyPy in fully serial applications.  (Of
-course, the regular PyPy will not disappear; for the foreseeable future,
-PyPy-TM will be an alternative executable.)</p>
-<p>The performance of PyPy-TM running suited applications should scale
-linearly or close-to-linearly with the number of processor.  This means
-that in order to see the benefits, you just need a machine with at least
-4 or 8 processors &ndash; which is already common today and will be even
-more so in one or two years.</p>
-</div>
-<div class="section" id="hardware-transactional-memory">
-<span id="soon-available-as-hardware"></span><h2>Hardware Transactional Memory</h2>
-<p>The performance of PyPy-TM running on Hardware Transactional Memory is
-unknown so far, but should ideally be close to the performance of a
-regular PyPy.</p>
-<p>In more details: This proposal is for work based entirely on <em>Software</em>
-Transactional Memory.  However, in the future the ideas and most of the
-code should map directly to Hardware Transactional Memory (HTM).  We
-expect HTM to reduce a lot the cost of some of the issues that we face,
-but not completely remove it.  For example, <a class="reference external" href="http://developer.amd.com/tools/ASF/Pages/default.aspx">AMD's old proposal</a> was
-that there would be two ways to emit memory-referencing
-instructions: one that goes via the HTM mechanisms, and one (the regular
-one) which doesn't.  Choosing the best one on a
-case-by-case basis in the JIT makes a difference in
-performance (although of course not as great as with Software
-Transactional Memory).</p>
-<p><a class="reference external" href="http://software.intel.com/en-us/avx/">Intel's current proposal</a> on <a class="reference external" href="http://en.wikipedia.org/wiki/Haswell_%28microarchitecture%29">Haswell</a> processors does not have this
-distinction, which means transactions are likely to quickly overflow the
-internal buffers.  As a result, the first generation HTM-capable
-processors may not be suited for the approach described here.  But
-this depends on details like the capacity of the hardware buffers that
-are still secret at this point.</p>
-<p>(Note also that HTM does not solve some of the issues for implementing
-Transactional Memory in CPython, notably the issue with reference
-counting.  We will have to wait for a real CPython experiment before
-we can settle this question.  Also, this would &ldquo;just&rdquo; remove the GIL
-but not offer a multi-core version of non-thread-based programs.)</p>
-</div>
-<div class="section" id="alternatives">
-<h2>Alternatives</h2>
-<p>PyPy-TM will be slower than judicious usage of existing alternatives,
-based on multiple processes that communicate with each other in one way
-or another.  The counter-argument is that TM is not only a cleaner
-solution: there are cases in which it is not doable to organize (or
-retrofit) an existing program into the particular format needed for the
-alternatives.  In particular, small quickly-written programs don't need
-the additional baggage of cross-process communication, and large
-programs can sometimes be almost impossible to turn into multi-process
-versions.  By contrast, we believe that TM can fit naturally into most
-programs, because it only requires local changes to some dispatcher; the
-rest of the program should work without changes.</p>
-</div>
-<div class="section" id="more-readings">
-<h2>More readings</h2>
-<ul class="simple">
-<li><a class="reference external" href="http://morepypy.blogspot.com/2011/08/we-need-software-transactional-memory.html">Original blog post</a></li>
-<li>pypy-dev mails <a class="reference external" href="http://mail.python.org/pipermail/pypy-dev/2011-August/008153.html">[1]</a> <a class="reference external" href="http://mail.python.org/pipermail/pypy-dev/2012-January/009034.html">[2]</a></li>
-<li><a class="reference external" href="http://morepypy.blogspot.com/search/label/stm">All our blog posts about stm</a></li>
-</ul>
-</div>
-</div>
-<div class="section" id="work-plan">
-<h1>Work plan</h1>
-<p>This is an very rough estimate of the amount of work it would take to
-complete the steps for an experienced developer who is already familiar
-with the PyPy codebase.  As this is a research proposal, we cannot
-guarantee the time estimates here, but we do agree to report regularly to
-the community, so our progress can be followed publicly.</p>
-<p>Paid work will be at $60/hour, but at least one developer who will work on
-the project &ndash; Armin Rigo &ndash; has committed to 2 hours
-of volunteer work per paid hour (so
-the total amount of money that we ask is divided by three).  A 5% general
-donation will go to the <a class="reference external" href="http://sfconservancy.org/">Software Freedom Conservancy</a> itself, the
-non-profit organization of which the PyPy project is a member and which
-manages all the issues related to donations, payments, and tax-exempt
-status.</p>
-<ul>
-<li><p class="first"><strong>STM Library</strong>:</p>
-<p>This part covers adapting an existing STM library for PyPy.  It is
-already mostly done (based on <a class="reference external" href="http://www.cs.rochester.edu/research/synchronization/rstm/">rstm</a>), but additional tweaks may be
-required.</p>
-</li>
-<li><p class="first"><strong>Basic tweaks of the translation process</strong>:</p>
-<p>This part covers tweaks needed during the translation process in
-order to generate an STM-aware version of the RPython programs,
-including PyPy itself.  It is partly done, but not finished.
-Estimate: 1 month.</p>
-</li>
-<li><p class="first"><strong>Garbage collection</strong>:</p>
-<p>We need a different garbage collector that is able to cope at least
-with concurrent allocations.  From there, improving the situation is
-its own open-ended subproject: we can add for example various kinds of
-parallel collection, synchronized or unsynchronized root tracing,
-etc.  Estimate for the basic part: 2 months.  Estimate for the rest:
-4 extra months.</p>
-</li>
-<li><p class="first"><strong>User interface</strong>:</p>
-<p>This is the problem of designing and implementing some interface or
-interfaces for the Python programmer.  We put it in its own category
-because of its &ldquo;end-user&rdquo; importance.  Estimate: 2 months.</p>
-</li>
-<li><p class="first"><strong>JIT integration</strong>:</p>
-<p>The above would give us a (probably very slow) version of PyPy-TM.
-This final part is to integrate it with the JIT compiler generator.
-The main issue we foresee is integration with the new GC, detecting
-with object flags or JIT optimizations which objects need
-transactional memory status or not.  We think that with enough such
-optimizations we can seriously lower the overhead of PyPy-TM, maybe
-down to 2x slower than a regular PyPy or better.  Estimate: unknown;
-at least 4 months.</p>
-</li>
-<li><p class="first"><strong>Longer term</strong>:</p>
-<p>In the longer term, we might need to refine the TM processing done
-above, for example to better support I/O (e.g. we can queue the writes
-done to a log file) or to add some special fine-grained support
-(e.g. two transactions that each do <tt class="docutils literal">samelist.append()</tt> do not need
-to conflict in the simple case).  This part is not included
-in the estimates.</p>
-<p>Note: by default, any I/O can be done, but turns the transaction
-&ldquo;inevitable&rdquo;.  An inevitable transaction must not abort, so it must be
-the next one to commit.  This introduces delays at the end of the other
-CPUs' transactions.</p>
-</li>
-</ul>
-<p>Total: 5 months for the initial version; at least 8 additional months
-for the fast version.  We will go with a total estimate of 15 months,
-corresponding to USD$151200.  The amount sought by this fundraising
-campaign,  considering the 2 volunteer hours per paid hour is thus USD$50400.</p>
-</div>
-<div class="section" id="benefits-of-this-work-to-the-python-community-and-the-general-public">
-<h1>Benefits of This Work to the Python Community and the General Public</h1>
-<p>Python has become one of the most popular dynamic programming languages in
-the world.  Web developers, educators, and scientific programmers alike
-all value Python because Python code is often more readable and because
-Python often increases programmer productivity.</p>
-<p>Traditionally, languages like Python ran more slowly than static, compiled
-languages; Python developers chose to sacrifice execution speed for ease
-of programming.  The PyPy project created a substantially improved Python
-language implementation, including a fast Just-in-time (JIT) compiler.
-The increased execution speed that PyPy provides has attracted many users,
-who now find their Python code runs up to four times faster under PyPy
-than under the reference implementation written in C.</p>
-<p>However, in the presence of today's machines with multiple processors,
-Python progress lags behind.  The issue has been described in the
-introduction: developers that really need to use multiple CPUs are
-constrained to select and use one of the multi-process solutions that
-are all in some way or another hacks requiring extra knowledge and
-efforts to use.  The focus of the work described in this proposal is to
-offer an alternative in the core of the Python language &ndash; an
-alternative that can naturally integrate with the rest of the program.
-This alternative will be implemented in PyPy.</p>
-<p>PyPy's developers make all PyPy software available to the public without
-charge, under PyPy's Open Source copyright license, the permissive MIT
-License.  PyPy's license assures that PyPy is equally available to
-everyone freely on terms that allow both non-commercial and commercial
-activity.  This license allows for academics, for-profit software
-developers, volunteers and enthusiasts alike to collaborate together to
-make a better Python implementation for everyone.</p>
-<p>PyPy-TM will be available under the same license.  Being licensed freely
-to the general public means that opportunities to use, improve and learn
-about how Transactional Memory works itself will be generally available
-to everyone.</p>
-</div>
-</div>
-<div id="sidebar">
-</div>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/tmdonate2.html b/tmdonate2.html
deleted file mode 100644
index de90045ba162d007c5fe5412df14ca9a94a31cb2_dG1kb25hdGUyLmh0bWw=..0000000000000000000000000000000000000000
--- a/tmdonate2.html
+++ /dev/null
@@ -1,456 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title>PyPy - 2nd Call for donations - Transactional Memory in PyPy</title>
-	<meta http-equiv="content-language" content="en" />
-	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-	<meta name="author" content="PyPy Team" />
-	<meta name="description" content="PyPy" />
-	<meta name="copyright" content="MIT" />
-	<meta name="document-rating" content="general" />
-	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
-	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
-  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
-	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
-	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
-	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
-  <script type="text/javascript" src="js/script2.js?bust=1"></script>
-</head>
-<body>
-<script type="text/javascript">
-	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
-	if (document.location.protocol !== 'file:') {
-		(function() {
-			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
-		})();
-	}
-</script>
-<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
-<div id="header">
-    <div id="menu-follow">
-    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
-		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
-    </div>
-	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
-	<hr class="clear-left" />
-    <div id="menu-sub">
-      <a href="index.html">Home</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="features.html">What is PyPy?</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="download.html">Download</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="compat.html">Compatibility</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="performance.html">Performance</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://doc.pypy.org">Dev Documentation</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="http://morepypy.blogspot.com">Blog</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="people.html">People</a>
-        <span class="menu-sub-sep"> | </span>
-      <a href="contact.html">Contact</a>
-        <br />
-    </div>
-	<hr class="clear" />
-</div>
-<div id="content">
-<div>
-<div id="main">
-<h1 class="title">2nd Call for donations - Transactional Memory in PyPy</h1>
-<p>UPDATE (September 2016):</p>
-<blockquote>
-<p><strong>This call for donation is closed.  Thank you everybody for
-contributing!</strong></p>
-<p><em>We have actually more money in the pot that we can use in the near
-future.  As it turns out, STM is a hard researchy topic.  Remi Meier
-is still actively working on this topic as part of his Ph.D. thesis.
-Armin Rigo thinks more fundamental work is needed, which will
-eventually lead us to a next generation attempt.</em></p>
-</blockquote>
-<hr class="docutils" />
-<br><br><ul class="download-menu simple">
-<li><a class="reference internal" href="#preamble">Preamble</a></li>
-<li><a class="reference internal" href="#introduction">Introduction</a></li>
-<li><a class="reference internal" href="#in-more-detail">In more detail</a><ul>
-<li><a class="reference internal" href="#what-is-the-global-interpreter-lock">What is the Global Interpreter Lock?</a></li>
-<li><a class="reference internal" href="#what-is-transactional-memory">What is Transactional Memory?</a></li>
-<li><a class="reference internal" href="#hardware-vs-software-transactional-memory">Hardware vs Software Transactional Memory</a></li>
-<li><a class="reference internal" href="#why-do-tm-with-pypy-instead-of-cpython">Why do TM with PyPy instead of CPython?</a></li>
-<li><a class="reference internal" href="#alternatives">Alternatives</a></li>
-<li><a class="reference internal" href="#platforms-other-than-the-x86-64-linux">Platforms other than the x86-64 Linux</a></li>
-<li><a class="reference internal" href="#more-readings">More readings</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#work-plan-and-funding-details">Work plan and funding details</a><ul>
-<li><a class="reference internal" href="#goal-1">Goal 1</a></li>
-<li><a class="reference internal" href="#goal-2">Goal 2</a></li>
-<li><a class="reference internal" href="#goal-3">Goal 3</a></li>
-<li><a class="reference internal" href="#funding">Funding</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#benefits-of-this-work-to-the-python-community-and-the-general-public">Benefits of This Work to the Python Community and the General Public</a></li>
-</ul>
-<div class="section" id="preamble">
-<h1>Preamble</h1>
-<p>This is the second call for donations on the topic of Transactional
-Memory (<em>TM</em>) in PyPy, a way to run CPU-hungry Python programs in
-multithreaded mode.  It is a follow-up on our <a class="reference external" href="http://pypy.org/tmdonate.html">first call for
-donations</a> from two years ago.  At that time, we suggested a
-single-threaded slow-down of somewhere between 2x and 5x.  The aim that
-seems now within reach is rather closer to 1.25x, i.e.  running only 25%
-slower than the regular PyPy.</p>
-<p>We achieved – or overachieved – most goals laid out in the first call by
-a large margin, while at the same time raising only about half the
-money.  The result of this first step is <a class="reference external" href="https://pypy.readthedocs.org/en/latest/stm.html">described in the documentation
-of PyPy</a>.  It is a PyPy without the GIL.  In the best (artificial)
-examples, it runs only 30% slower than a regular PyPy with the JIT.</p>
-<p>The present proposal is about development of the second half: first,
-fixing the various missing low-level optimizations (aiming for this
-25%-30% figure, but for most cases rather than only special examples).
-Then it will most
-importantly focus on developing the Python-facing interface.  This
-includes both internal things (e.g. do dictionaries need to be more
-TM-friendly in general?) as well as directly visible things (e.g. some
-profiler-like interface to explore common conflicts in a program).
-Finally, the third part is
-exploring and tweaking some existing libraries to improve
-their TM-friendliness (e.g. Twisted and Stackless).</p>
-<p>See also the <a class="reference internal" href="#update-on-htm">update on HTM</a> below.</p>
-</div>
-<div class="section" id="introduction">
-<h1>Introduction</h1>
-<p>In the presence of today's machines with multiple processors, Python
-progress is lagging behind: on any CPU-constrained program, developers
-have a difficult choice to make.  They can use in-process solutions that
-do not offer multi-CPU usage.  In this respect, the natural choice
-nowadays is to use Twisted or other event-based paradigms, or systems
-that hide events in the control flow, like Stackless; or alternatively,
-they can use the existing <tt class="docutils literal">threading</tt> module, with its associated GIL
-and the complexities of real multi-threaded programming (locks,
-deadlocks, races, etc.), which make this solution less attractive.  The
-most attractive alternative for most developers is to rely on one of various multi-process
-solutions that are outside the scope of the core Python language. All of them require a
-major restructuring of the program and often need extreme care and extra
-knowledge to use them.</p>
-<p>We propose an implemention of
-Transactional Memory in PyPy.  This is a technique that recently came to
-the forefront of the multi-core scene.  It promises to offer multi-core CPU
-usage in a single process.
-In particular, by modifying the core of the event systems
-mentioned above, we will enable the use of multiple cores, without the
-user needing to use explicitly the <tt class="docutils literal">threading</tt> module.</p>
-<p>The first proposal was launched near the start of 2012 and has covered
-much of the fundamental research, up to the point of getting a first
-version of PyPy working in a very roughly reasonable state (after
-collecting about USD$27'000, which is little more than half of the money
-that was sought; hence the present second call for donations).</p>
-<p>We now propose fixing the remaining issues to obtaining a
-really good GIL-free PyPy (described in <a class="reference internal" href="#goal-1">goal 1</a> below). We
-will then focus on the various new features needed to actually use multiple
-cores without explicitly using multithreading (<a class="reference internal" href="#goal-2">goal 2</a> below), up to
-and including adapting some existing framework libraries, for
-example Twisted, Tornado, Stackless, or gevent (<a class="reference internal" href="#goal-3">goal 3</a> below).</p>
-</div>
-<div class="section" id="in-more-detail">
-<h1>In more detail</h1>
-<p>This is a call for financial help in implementing a version of PyPy able
-to use multiple processors in a single process, called PyPy-TM; and
-developing the APIs and libraries needed as well as enhancing commonly
-available frameworks to use the new feature.  The developers will be
-Armin Rigo and Remi Meier and possibly others.</p>
-<p>We currently estimate the final performance goal to be a slow-down of
-25% to 40% from the current non-TM PyPy; i.e. running a fully serial application would take between
-1.25 and 1.40x the time it takes in a regular PyPy.  This goal has
-been reached already in some cases, but we need to make this result more
-broadly applicable.  We feel confident that we can reach this goal more
-generally: the performance of PyPy-TM running any suitable
-application should scale linearly or close-to-linearly with the number
-of processors.  This means that starting with two cores, such
-applications should perform better than a non-TM PyPy.  (All numbers
-presented here are comparing different versions of PyPy which all have
-the JIT enabled.  A &ldquo;suitable application&rdquo; is one without many conflicts;
-see <a class="reference internal" href="#goal-2">goal 2</a>.)</p>
-<p>You will find below a sketch of the <a class="reference internal" href="#work-plan">work plan</a>.  We start with a Q&amp;A.</p>
-<div class="section" id="what-is-the-global-interpreter-lock">
-<h2>What is the Global Interpreter Lock?</h2>
-<p>The GIL, or Global Interpreter Lock, is a single lock in both CPython
-and the regular PyPy.  Every thread must acquire it in order to execute
-Python bytecodes.  This means that both with CPython and with the
-regular PyPy, Python programs do not gain any benefit in term of
-multicore performance even if they are using threads.</p>
-</div>
-<div class="section" id="what-is-transactional-memory">
-<h2>What is Transactional Memory?</h2>
-<p><a class="reference external" href="http://en.wikipedia.org/wiki/Transactional_memory">Transactional Memory</a> (<em>TM</em>) is a technique imported from
-databases: every time we want to do a change to the processors' main
-memory, we do it in a &ldquo;transaction&rdquo;.  Multiple transactions can be
-executed in parallel by multiple cores.  When a transaction is complete,
-we try to commit it.  This might either succeed, or (if another
-transaction committed incompatible changes) fail.  If it fails, which is
-hopefully rare, we need to restart the transaction from scratch.</p>
-<p>Transactional Memory research has progressed a lot since two years ago,
-notably with the introduction of Intel's <a class="reference external" href="http://en.wikipedia.org/wiki/Haswell_%28microarchitecture%29">Haswell</a> processors, which
-offer Hardware Transactional Memory (HTM).  We discuss below why we
-think HTM is, so far, still not suitable for our goals.</p>
-</div>
-<div class="section" id="hardware-vs-software-transactional-memory">
-<span id="update-on-htm"></span><h2>Hardware vs Software Transactional Memory</h2>
-<p>The idea of Transactional Memory was recently made popular by Intel's
-<a class="reference external" href="http://en.wikipedia.org/wiki/Haswell_%28microarchitecture%29">Haswell</a> processor (released in 2013).  We could replace most of the
-Software Transactional Memory (STM) library currently used inside PyPy
-with a much smaller Hardware Transactional Memory (HTM) library based on
-hardware features and running on Haswell-generation processors.  This
-has been attempted by Remi Meier recently.  However, it seems that it
-fails to scale as we would expect it to: the current generation of HTM
-processors is limited to run small-scale transactions.  Even the default
-transaction size used in PyPy-STM is often too much for HTM; and
-reducing this size increases overhead without completely solving the
-problem.  Based on this experience, it seems safe to say that right now
-HTM-enabled processors lack the support that we need.</p>
-<p>Future processors might improve on various aspects.  We are particularly
-interested in <a class="reference external" href="http://pages.cs.wisc.edu/~isca2005/papers/08A-02.PDF">Virtualizing Transactional Memory</a>, a 2005 paper that
-describes the limits that we're running into and how to solve them more
-generally.  A CPU with support for the virtual memory described in this
-paper would certainly be better for running PyPy-HTM.</p>
-<p>Another issue in HTM is sub-cache-line false conflicts (conflicts caused by two
-independent objects that happens to live in the same cache line, which
-is usually 64 bytes).  This is in contrast with the current PyPy-STM,
-which doesn't have false conflicts of this kind at all and might thus be
-ultimately better for very-long-running transactions.  We are not aware of
-published research discussing issues of sub-cache-line false conflicts.</p>
-<p>Note that right now PyPy-STM has false conflicts within the same object,
-e.g. within a list or a dictionary; but we can easily do something
-about it (see <cite>goal 2_</cite>).  Also, it might be possible in PyPy-HTM to
-arrange objects in memory ahead of time so that such conflicts are very
-rare; but we will never get a rate of exactly 0%, which might be
-required for very-long-running transactions.</p>
-</div>
-<div class="section" id="why-do-tm-with-pypy-instead-of-cpython">
-<h2>Why do TM with PyPy instead of CPython?</h2>
-<p>While there have been early experiments on Hardware Transactional Memory
-with CPython (<a class="reference external" href="http://sabi.net/nriley/pubs/dls6-riley.pdf">Riley and Zilles (2006)</a>, <a class="reference external" href="http://www.cs.auckland.ac.nz/~fuad/parpycan.pdf">Tabba (2010)</a>), there has
-been none in the past few years.  To the best of our knowledge,
-the closest is an attempt using <a class="reference external" href="http://researcher.watson.ibm.com/researcher/files/jp-ODAIRA/PPoPP2014_RubyGILHTM.pdf">Haswell on the
-Ruby interpreter</a>.  None of these attempts tries to do the same using
-Software Transactional Memory.  We would nowadays consider it possible
-to adapt our stmgc-c7 library for CPython, but it would be a lot of
-work, starting from changing the reference-counting garbage collection scheme.  PyPy is
-better designed to be open to this kind of research.</p>
-<p>However, the best argument from an objective point of view is probably
-that PyPy has already implemented a Just-in-Time compiler.  It is thus
-starting from a better position in terms of performance, particularly
-for the long-running kind of programs that we target here.</p>
-</div>
-<div class="section" id="alternatives">
-<h2>Alternatives</h2>
-<p>PyPy-TM will be slower than judicious usage of existing alternatives,
-based on multiple processes that communicate with each other in one way
-or another.  The counter-argument is that TM is not only a cleaner
-solution: there are cases in which it is not really possible to organize (or
-retrofit) an existing program into the particular format needed for the
-alternatives.  In particular, small quickly-written programs don't need
-the additional baggage of cross-process communication; and large
-programs can sometimes be almost impossible to turn into multi-process
-versions.  By contrast, we believe that TM can fit naturally into most
-programs, because it only requires local changes to some dispatcher; the
-rest of the program should work without changes.</p>
-</div>
-<div class="section" id="platforms-other-than-the-x86-64-linux">
-<h2>Platforms other than the x86-64 Linux</h2>
-<p>The current solution depends on having a
-huge address space available.  Porting to any 32-bit
-architecture would quickly run into the limitation of a 2GB or 4GB of address space.
-The way TM works right now would further divide this
-limit by N+1, where N is the number of segments.  It might be possible
-to create partially different memory views for multiple threads that
-each access the same range of addresses; but this would likely require
-changes inside the OS.  We didn't investigate so far.</p>
-<p>The current 64-bit version relies
-heavily on Linux- and clang-only features.  We believe it is a suitable
-restriction: a lot of multi- and many-core servers commonly available
-are nowadays x86-64 machines running Linux.  Nevertheless, non-Linux
-solutions appear to be possible as well.  OS X (and likely the various
-BSDs) seems to handle <tt class="docutils literal">mmap()</tt> better than Linux does, and can remap
-individual pages of an existing mapping to various pages without hitting
-a limit of 65536 like Linux.  Windows might also have a solution, although we
-didn't measure yet; but first we would need a 64-bit Windows PyPy, which has
-not seen much active support.</p>
-<p>We will likely explore the OS X path (as well as the Windows path if Win64
-support grows in PyPy), but this is not part of this current
-donation proposal.</p>
-<p>It might be possible to adapt the work done on x86-64 to the 64-bit
-ARMv8 as well. We have not investigated this so far.</p>
-</div>
-<div class="section" id="more-readings">
-<h2>More readings</h2>
-<p>See the <a class="reference external" href="http://pypy.readthedocs.org/en/latest/stm.html">STM page of our documentation</a> and <a class="reference external" href="http://morepypy.blogspot.com/search/label/stm">our blog posts about STM</a>.</p>
-</div>
-</div>
-<div class="section" id="work-plan-and-funding-details">
-<span id="work-plan"></span><h1>Work plan and funding details</h1>
-<p>This is an very rough estimate of the amount of work it would take to
-complete the steps for an experienced developer who is already familiar
-with the PyPy codebase.  As before, we cannot guarantee the time
-estimates here, but we do agree to report regularly to the community, so
-our progress can be followed publicly.  We currently expect the duration
-of the whole project to be up to two years starting from April 2014.</p>
-<p>Paid work will be at $60/hour, but at least one developer who will work
-on the project – Armin Rigo – has committed to one hour of volunteer
-work per paid hour; and another developer – Remi Meier – is a Ph.D. student
-and gets paid from another source already.  The total amount of money
-that we ask below corresponds roughly to one half-time job.</p>
-<p>A 10% general donation will go to the <a class="reference external" href="http://sfconservancy.org/">Software Freedom
-Conservancy</a> itself, the non-profit organization of which the PyPy
-project is a member and which manages all the issues related to
-donations, payments, and tax-exempt status.
-An extra fraction of the money collected will be entered into the
-general PyPy pot, used for example to finance sprint travel costs to
-students.  This fraction is 10% maximum, unless more money than
-requested is collected, in which case the whole excess will go to
-the general PyPy pot.</p>
-<p><strong>Note</strong> For donations higher than $1,000, we can arrange for an invoice
-and a different payment method to avoid the high Paypal fees.  Please
-contact pypy at sfconservancy.org if you want to know details on how
-to donate via other means.</p>
-<div class="section" id="goal-1">
-<h2>Goal 1</h2>
-<p>The PyPy-TM that we have in the end of March 2014 is good enough in
-some cases to run existing multithreaded code without a GIL, but not in
-all of them.  There are a number of caveats for the user and missing
-optimizations.  The goal #1 is to improve this case and address
-the caveats.  The current status is written down <a class="reference external" href="http://pypy.readthedocs.org/en/latest/stm.html">in the docs</a> and
-will evolve over time.</p>
-<p>For future reference, at the end of March the main identified issues
-are:</p>
-<ul class="simple">
-<li>There are still a number of bugs.</li>
-<li>The JIT warm-up time is abysmal.</li>
-<li>The GC is missing a number of optimizations that are present in
-a regular PyPy.</li>
-<li>Destructors are not supported (<tt class="docutils literal">__del__()</tt> methods).</li>
-<li>The STM bookkeeping logic could see more improvements.</li>
-<li>Forking the process is slow.</li>
-<li>We don't foresee particularly high conflict rates in regular
-multithreaded programs, but this assertion needs to be checked
-and possibly some heuristics improved.</li>
-</ul>
-<p>Fixing all these issues is required before we can confidently say that
-PyPy-TM is an out-of-the-box replacement of a regular PyPy which gives
-speed-ups over the regular PyPy independently of the Python program it
-runs, as long as it is using at least two threads.</p>
-</div>
-<div class="section" id="goal-2">
-<h2>Goal 2</h2>
-<p>This goal contains the various new features needed to use multiple cores
-without explicitly using multithreading; in other words, the new APIs
-and libraries accessible from Python programs that want to make use of
-this benefit.</p>
-<p>This goal requires good support for very-long-running transactions,
-started with the <tt class="docutils literal">with atomic</tt> construct documented <a class="reference external" href="http://pypy.readthedocs.org/en/latest/stm.html">here</a>.  This
-approach hides the notion of threads from the end programmer, including
-all the hard multithreading-related issues.  This is not the first
-alternative approach to explicit threads; for example, <a class="reference external" href="http://en.wikipedia.org/wiki/OpenMP">OpenMP</a> is one.
-However, it is one of the first ones which does not require the code to
-be organized in a particular fashion.  Instead, it works on any Python
-program which has got latent, imperfect parallelism.  Ideally, it only
-requires that the end programmer identifies where this parallelism is
-likely to be found, and communicates it to the system, using some
-lightweight library on top of <tt class="docutils literal">with atomic</tt>.</p>
-<p>However, this introduces new issues.  The main one is that by forcing
-transactions to be longer, &ldquo;conflicts&rdquo; will become more common, up to
-the point of partially or completely offsetting the benefit of using
-PyPy-TM in the first place.</p>
-<p>So the programmer using PyPy-TM needs a way to get
-feedback about what conflicts we get in these long-running transactions,
-and where they are produced.  A first step will be to implement getting
-&ldquo;tracebacks&rdquo; that point to the places where the most time is lost.  This
-could be later integrated into some &ldquo;profiler&rdquo;-like variant where we can
-navigate the conflicts, either in a live program or based on data logs.</p>
-<p>Some of these conflicts can be solved by improving PyPy-TM directly.
-The system works on the granularity of objects and doesn't generate
-false conflicts, but some conflicts may be regarded as &ldquo;false&rdquo; anyway:
-these involve most importantly the built-in dictionary type, for which
-we would like accesses and writes using independent keys to be truly
-independent.  Other built-in data structures have a similar issue, like
-lists: ideally, writes to different indexes should not cause conflicts;
-but more generally, we would need a mechanism, possibly under the
-control of the application, to do things like append an item to a list
-in a &ldquo;delayed&rdquo; manner, to avoid conflicts.</p>
-<p>Similarly, we might need a way to delay some I/O: doing it only at the
-end of the transaction rather than immediately, in order to prevent the
-whole transaction from turning inevitable.</p>
-<p>The goal 2 is thus the development of tools to inspect and fix the
-causes of conflicts, as well as fixing the ones that are apparent inside
-PyPy-TM directly.</p>
-</div>
-<div class="section" id="goal-3">
-<h2>Goal 3</h2>
-<p>The third goal is to look at some existing event-based frameworks (for
-example Twisted, Tornado, Stackless, gevent, &#8230;) and attempt to make
-them use threads and atomic sections internally.  We would appreciate
-help and feedback from people more involved in these frameworks, of
-course.</p>
-<p>The idea is to apply the techniques described in the <a class="reference internal" href="#goal-2">goal 2</a> until we
-get a version of framework X which can transparently parallelize the
-dispatching and execution of multiple events.  This might require some slight
-reorganization of the core in order to split the I/O and the actual
-logic into separate transactions.</p>
-</div>
-<div class="section" id="funding">
-<h2>Funding</h2>
-<p>We forecast that goal 1 and a good chunk of goal 2 should be reached in
-around 6 months of work.  The remaining parts of goal 2 as well as goal
-3 are likely to be more open-ended jobs.  We will go with a total
-estimate of two years in order to get a final, well-tested PyPy-STM with
-stable performance.  The amount sought by this fundraising campaign is
-USD$80'000, corresponding to one half-time job for 16 months (1200 hours
-at $60/hour plus 10% overhead).</p>
-</div>
-</div>
-<div class="section" id="benefits-of-this-work-to-the-python-community-and-the-general-public">
-<h1>Benefits of This Work to the Python Community and the General Public</h1>
-<p>Python has become one of the most popular dynamic programming languages in
-the world.  Web developers, educators, and scientific programmers alike
-all value Python because Python code is often more readable and because
-Python often increases programmer productivity.</p>
-<p>Traditionally, languages like Python ran more slowly than static, compiled
-languages; Python developers chose to sacrifice execution speed for ease
-of programming.  The PyPy project created a substantially improved Python
-language implementation, including a fast Just-in-time (JIT) compiler.
-The increased execution speed that PyPy provides has attracted many users,
-who now find their Python code runs between 2 and 50 times faster under PyPy
-than under the reference implementation written in C.</p>
-<p>However, in the presence of today's machines with multiple processors,
-Python progress lags behind.  The issue has been described in the
-introduction: developers that really need to use multiple CPUs are
-constrained to select and use one of the multi-process solutions that
-are all in some way or another hacks requiring extra knowledge and
-efforts to use.  The focus of the work described in this proposal is to
-offer an alternative in the core of the Python language — an
-alternative that can naturally integrate with the rest of the program.
-This alternative is implemented in PyPy.</p>
-<p>PyPy's developers make all PyPy software available to the public without
-charge, under PyPy's Open Source copyright license, the permissive MIT
-License.  PyPy's license assures that PyPy is equally available to
-everyone freely on terms that allow both non-commercial and commercial
-activity.  This license allows for academics, for-profit software
-developers, volunteers and enthusiasts alike to collaborate together to
-make a better Python implementation for everyone.</p>
-<p>PyPy-TM is and continues to be available under the same license.  Being
-licensed freely to the general public means that opportunities to use,
-improve and learn about how Transactional Memory works itself will be
-generally available to everyone.</p>
-</div>
-</div>
-<div id="sidebar">
-</div>
-</div>
-</div>
-</div></div></div>
-</body>
-</html>
\ No newline at end of file