[pypy-dev] PyPy support for Python 3 -- request for comments
Yury Selivanov
yselivanov.ml at gmail.com
Mon Sep 12 20:56:33 CEST 2011
Hello Antonio,
And what are the rough time-estimates?
Thank you,
-Yury
On 2011-09-12, at 9:49 AM, Antonio Cuni wrote:
> Hello pypy-dev,
>
> in the past weeks, I and the other core developers have talked a lot about
> supporting Python 3 in PyPy. The task is huge and it's unlikely that it will
> be completed shortly based only on volunteer work, so we came up with the
> following proposal, which splits the work into several steps and sub-steps,
> togheter with an estimate of how much money is needed to complete each one.
>
> The plan is to publish the proposal on the blog, and publicly ask for
> donations, with the hope to collect enough to cover the whole work. However,
> before putting it on the blog we would like to ask for your comments/thoughts
> about it. Any feedback will be appreciated!
>
> Thank you,
> Antonio (on the behalf of the PyPy team)
>
>
> Python 3 on PyPy
> =================
>
> The release of Python 3 has been a major undertaking for the Python community,
> both technically and socially. So far PyPy implements only the version 2 of
> the Python language, which creates a very dangerous potential for a community
> split. We believe that by supporting both versions of the language we will
> help to fill the gap.
>
> This project should help both the part of the Python community which is
> reluctant to use PyPy because it does not support Python 3, and the part which
> is reluctant to move to Python 3 because they are already PyPy users.
>
> However, porting PyPy to Python 3 requires a lot of work, and it will take a
> long time before we can complete it by relying only on volunteer work. Thus,
> we are asking the community to help with funding the necessary work, to make
> it happen faster.
>
> High level description
> -----------------------
>
> The goal of this project is to write an interpreter that interprets version
> 3 of Python language. To be precise we would aim at having Python 3.2
> interpreter together in the same codebase as python 2.7 one.
>
> 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.
>
> 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.
>
> Step 1: core language
> ----------------------
>
> 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:
>
> * **Sub-step 1.1**: string vs unicode and I/O:
>
> - adapt the existing testing infrastructure to support running Python 3 code
>
> - string vs bytes: the interpreter uses unicode strings everywhere.
>
> - the ``print`` function
>
> - ``open`` is now an alias for ``io.open``, removal of the old file type.
>
> - string formatting (for the part which is not already implemented in Python
> 2.7)
>
> - the _io module (for the part which is not already implemented in Python
> 2.7)
>
> - syntactic changes to make ``io.py`` importable (in particular:
> ``metaclass=...`` in class declarations)
>
> - **Estimate cost**: 35.000 $
>
> * **Sub-step 1.2**: other syntactic changes, builtin types and functions,
> exceptions:
>
> - views and iterators instead of lists (e.g., ``dict.items()``, ``map``,
> ``range`` & co.)
>
> - new rules for ordering comparisons
>
> - removal of old-style classes
>
> - int/long unification
>
> - function annotations
>
> - smaller syntax changes, such as keyword-only arguments, ``nonlocal``,
> extended iterable unpacking, set literals, dict and set comprehension, etc.
>
> - changes to exceptions: ``__traceback__`` attribute, chained exceptions,
> ``del e`` at the end of the except block, etc.
>
> - changes to builtins: ``super``, ``input``, ``next()``, etc.
>
> - improved ``with`` statement
>
> - **Estimate cost**: 25.000 $
>
>
> Note that the distinction between sub-steps 1.1 and 1.2 is blur, and it might be
> possible that during the development we will decide to move items between the
> two sub-steps, as needed.
>
> For more information, look at the various "What's new" documents:
>
> - http://docs.python.org/py3k/whatsnew/3.0.html
>
> - http://docs.python.org/py3k/whatsnew/3.1.html
>
> - http://docs.python.org/py3k/whatsnew/3.2.html
>
> **Total estimate cost**: 60.000 $
>
>
> Step 2: extension modules
> --------------------------
>
> 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:
>
> - ``collections``, ``gzip``, ``bz2``, ``decimal``, ``itertools``, ``re``,
> ``functools``, ``pickle``, ``_elementtree``, ``math``, etc.
>
> **Estimate cost**: 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 35.000 $
>
> Step 3: cpyext
> --------------
>
> The ``cpyext`` module allows to load CPython C extensions in PyPy. Since the
> C API changed a lot between Python 2.7 and Python 3.2, ``cpyext`` 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.
>
> Note that, even for Python 2, ``cpyext`` 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 ``cpyext``, 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.
>
> **Estimate cost**: 10.000 $
>
> _______________________________________________
> pypy-dev mailing list
> pypy-dev at python.org
> http://mail.python.org/mailman/listinfo/pypy-dev
More information about the pypy-dev
mailing list