Features/PyPyStack

From FedoraProject

< Features(Difference between revisions)
Jump to: navigation, search
(Scope)
(add link to psycopg2-ctypes)
 
(4 intermediate revisions by one user not shown)
Line 7: Line 7:
  
 
== Summary ==
 
== Summary ==
{{FedoraVersion|long|next}} has an alternate Python 2 runtime and add-on module stack built using PyPy, an alternate implementation of the Python 2 language, featuring Just-in-Time compilation.
+
Fedora N+1 <!-- {{FedoraVersion|long|next}} --> has an alternate Python 2 runtime and add-on module stack built using PyPy, an alternate implementation of the Python 2 language, featuring Just-in-Time compilation.
  
 
== Owner ==
 
== Owner ==
Line 17: Line 17:
  
 
== Current status ==
 
== Current status ==
* Targeted release: [[Releases/{{FedoraVersion||next}} | {{FedoraVersion|long|next}} ]]  
+
* Targeted release: Fedora 16? <!-- [[Releases/{{FedoraVersion||next}} | {{FedoraVersion|long|next}} ]] -->
* Last updated: 2011-01-13
+
* Last updated: 2011-05-03
 
* Percentage of completion: 30%
 
* Percentage of completion: 30%
  
 
<!-- CHANGE THE "FedoraVersion" TEMPLATES ABOVE TO PLAIN NUMBERS WHEN YOU COMPLETE YOUR PAGE. -->
 
<!-- CHANGE THE "FedoraVersion" TEMPLATES ABOVE TO PLAIN NUMBERS WHEN YOU COMPLETE YOUR PAGE. -->
  
pypy-1.4.1 is packaged within Fedora (see the [https://bugzilla.redhat.com/show_bug.cgi?id=588941 package review])
+
PyPy has been packaged within Fedora from Fedora 15 onwards, and is available via:
 +
 
 +
<pre>
 +
yum install pypy
 +
</pre>
 +
 
 +
See the [https://bugzilla.redhat.com/show_bug.cgi?id=588941 package review])
 +
 
 +
We currently have PyPy-1.5
  
 
There is a [https://bugzilla.redhat.com/showdependencytree.cgi?id=669836&hide_resolved=1 tracker bug for the PyPy stack] in Red Hat bugzilla.
 
There is a [https://bugzilla.redhat.com/showdependencytree.cgi?id=669836&hide_resolved=1 tracker bug for the PyPy stack] in Red Hat bugzilla.
Line 59: Line 67:
  
 
<!-- Please keep this table sorted alphabetically by python module name -->
 
<!-- Please keep this table sorted alphabetically by python module name -->
An upstream guide to PyPy compatibility can be seen at https://bitbucket.org/trypypy/pypy-compatibility/wiki/Home
+
An upstream guide to PyPy compatibility can be seen at https://bitbucket.org/pypy/compatibility/wiki/Home
 
{|
 
{|
 
! Python Module !! Fedora CPython package !! PyPy Compatibility and Notes !! Fedora PyPy status
 
! Python Module !! Fedora CPython package !! PyPy Compatibility and Notes !! Fedora PyPy status
Line 73: Line 81:
 
| django  || Django      || ||
 
| django  || Django      || ||
 
|-
 
|-
| gtk      || pygtk2      || I filed an [https://codespeak.net/issue/pypy-dev/issue620 upstream bug relating to ./configure]; after that there are multiple compilation errors ||
+
| gtk      || pygtk2      || I filed an [https://codespeak.net/issue/pypy-dev/issue620 upstream bug relating to ./configure]; after that there are [https://codespeak.net/issue/pypy-dev/issue625 multiple compilation errors] ||
 
|-
 
|-
 
| lxml    || python-lxml || ||
 
| lxml    || python-lxml || ||
Line 83: Line 91:
 
| numpy    || numpy      || ||
 
| numpy    || numpy      || ||
 
|-
 
|-
| psycopg2 || python-psycopg2 || ||
+
| psycopg2 || python-psycopg2 || See also https://github.com/mvantellingen/psycopg2-ctypes ||
 
|-
 
|-
 
| PyKDE4  || PyKDE4 (from the kdebindings srpm) || ||
 
| PyKDE4  || PyKDE4 (from the kdebindings srpm) || ||
Line 148: Line 156:
 
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
 
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
 
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->
 
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->
 +
 +
[[Category:Python]]

Latest revision as of 18:20, 25 August 2011


Contents

[edit] PyPy Stack

[edit] Summary

Fedora N+1 has an alternate Python 2 runtime and add-on module stack built using PyPy, an alternate implementation of the Python 2 language, featuring Just-in-Time compilation.

[edit] Owner

  • Email: <dmalcolm@redhat.com>

[edit] Current status

  • Targeted release: Fedora 16?
  • Last updated: 2011-05-03
  • Percentage of completion: 30%


PyPy has been packaged within Fedora from Fedora 15 onwards, and is available via:

yum install pypy

See the package review)

We currently have PyPy-1.5

There is a tracker bug for the PyPy stack in Red Hat bugzilla.

Areas of uncertainty:

  • as of 1.4.1, support for .c extensions (using the CPython API) is still experimental (need to try some extensions and see what works)
  • 1.4.1 ships with a bytecode format similar to (but slightly different from) CPython 2.5.1. It's not yet clear to me what the anticipated rate of change to the bytecode format is. If we build out a collection of pure-python extensions in RPM form (e.g. a pypy-django.rpm), with .pyc files, we don't want to be constantly having to rebuild them all as the precise bytecode format changes (even if we e.g. ported PEP 3147, we still ought to rebuild the RPMs)

Upstream work

  • working on improving the readability of the 6 million lines of autogenerated C code emitted by the build; I've sent patches upstream for this, but it's not yet finished.

[edit] Detailed Description

PyPy is a python interpreter written in a subset of python. The interpreter can have better memory use than CPython and speed is closing in on Cpython. The JIT'd version is faster than CPython in many benchmarks.

It is growing the ability to load CPython extension modules.

This feature is exploring the idea of shipping PyPy, and the scope is not yet clear, be it:

  1. just the core interpreter, or
  2. sharing pure-Python add-on modules with the system Python (but with split bytecode files), or
  3. a full, independent Python stack, but with just pure-Python add-on modules, or
  4. a full, independent Python stack, with both pure-Python and machine-code extension modules

[edit] Benefit to Fedora

PyPy is an innovative implementation of the Python language, but it can take an hour to build, requiring a powerful machine. By providing an easy way for people to install a PyPy stack, we continue to push Fedora as an excellent platform for Python developers.

Fedora aims to showcase the latest and greatest in Free/Open Source Software: PyPy is certainly innovative.

Fedora heavily uses Python, both within the operating system itself, and within the infrastructure used by the project. As PyPy becomes more mature we may eventually want to migrate from CPython to PyPy for some of these workloads.

[edit] Scope

An upstream guide to PyPy compatibility can be seen at https://bitbucket.org/pypy/compatibility/wiki/Home

Python Module Fedora CPython package PyPy Compatibility and Notes Fedora PyPy status
swig
cairo pycairo
coverage python-coverage
dbus dbus-python
django Django
gtk pygtk2 I filed an upstream bug relating to ./configure; after that there are multiple compilation errors
lxml python-lxml
gobject pygobject2
MySQLdb MySQL-python RHBZ #669835
numpy numpy
psycopg2 python-psycopg2 See also https://github.com/mvantellingen/psycopg2-ctypes
PyKDE4 PyKDE4 (from the kdebindings srpm)
PyQt4 PyQt4
rpm rpm-python (subpackage of "rpm")
scipy scipy
selinux libselinux-python (generated by SWIG during build of libselinux)
semanage libsemanage-python (generated by SWIG during build of libsemanage)
setuptools python-setuptools ( we've switched to the "Distribute" fork) RHBZ #669825
sip sip
sqlalchemy python-sqlalchemy
virtualenv python-virtualenv

[edit] How To Test

[edit] User Experience

[edit] Dependencies

[edit] Contingency Plan

[edit] Documentation

[edit] Release Notes

[edit] Comments and Discussion