From Fedora Project Wiki
(add link to psycopg2-ctypes)
Line 7: Line 7:
  
 
== Summary ==
 
== Summary ==
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.
+
Fedora 15 and later versions 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 ==
 
<!--This should link to your home wiki page so we know who you are-->
 
<!--This should link to your home wiki page so we know who you are-->
* Name: [[User:dmalcolm| Dave Malcolm]]
+
* Name: [[User:dmalcolm| Dave Malcolm]], [[User:mcyprian| Michal Cyprian]]
  
 
<!-- Include you email address that you can be reached should people want to contact you about helping with your feature, status is requested, or  technical issues need to be resolved-->
 
<!-- Include you email address that you can be reached should people want to contact you about helping with your feature, status is requested, or  technical issues need to be resolved-->
* Email: <dmalcolm@redhat.com>
+
* Email: <dmalcolm@redhat.com>, <mcyprian@redhat.com>
 
 
== Current status ==
 
* Targeted release: Fedora 16? <!-- [[Releases/{{FedoraVersion||next}} | {{FedoraVersion|long|next}} ]] -->
 
* Last updated: 2011-05-03
 
* 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. -->
Line 25: Line 20:
 
PyPy has been packaged within Fedora from Fedora 15 onwards, and is available via:
 
PyPy has been packaged within Fedora from Fedora 15 onwards, and is available via:
  
 +
In Fedora 22 and later versions use [[dnf|DNF]]:
 
<pre>
 
<pre>
yum install pypy
+
# dnf install pypy
 
</pre>
 
</pre>
  
See the [https://bugzilla.redhat.com/show_bug.cgi?id=588941 package review])
+
Or with YUM in Fedora 21 and earlier versions:
 +
<pre>
 +
# yum install pypy
 +
</pre>
  
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.
+
The latest updates of PyPy package information can be found at [https://bodhi.fedoraproject.org/updates/?packages=pypy Fedora Package Database]
  
Areas of uncertainty:
+
See the [https://bugzilla.redhat.com/show_bug.cgi?id=588941 package review]
* 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 [http://www.python.org/dev/peps/pep-3147/ PEP 3147], we still ought to rebuild the RPMs)
 
  
Upstream work
+
There is a [https://bugzilla.redhat.com/showdependencytree.cgi?id=669836&hide_resolved=1 tracker bug for the PyPy stack] in Red Hat bugzilla.
* working on improving the readability of the 6 million lines of autogenerated C code emitted by the build; I've [http://codespeak.net/pipermail/pypy-dev/2010q4/006532.html sent patches upstream for this], but it's not yet finished.
 
  
 
== Detailed Description ==
 
== Detailed Description ==
Line 47: Line 42:
  
 
It is growing the ability to [http://morepypy.blogspot.com/2010/04/using-cpython-extension-modules-with.html load CPython extension modules].
 
It is growing the ability to [http://morepypy.blogspot.com/2010/04/using-cpython-extension-modules-with.html load CPython extension modules].
 
This feature is exploring the idea of shipping PyPy, and the scope is not yet clear, be it:
 
# just the core interpreter, or
 
# sharing pure-Python add-on modules with the system Python (but with split bytecode files), or
 
# a full, independent Python stack, but with just pure-Python add-on modules, or
 
# a full, independent Python stack, with both pure-Python and machine-code extension modules
 
  
 
== Benefit to Fedora ==
 
== Benefit to Fedora ==
Line 67: Line 56:
  
 
<!-- 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/pypy/compatibility/wiki/Home
+
PyPy supports most of the commonly used Python standard library modules complete list [http://packages.pypy.org/ here]
{|
 
! 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 [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 || ||
 
|-
 
| gobject  || pygobject2  || ||
 
|-
 
| MySQLdb  || MySQL-python || || {{bz|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) || {{bz|669825}}
 
|-
 
| sip      || sip        || ||
 
|-
 
| sqlalchemy || python-sqlalchemy || ||
 
|-
 
| virtualenv || python-virtualenv || ||
 
|}
 
  
 
== How To Test ==
 
== How To Test ==

Revision as of 13:23, 8 April 2016


PyPy Stack

Summary

Fedora 15 and later versions 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

  • Email: <dmalcolm@redhat.com>, <mcyprian@redhat.com>


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

In Fedora 22 and later versions use DNF:

# dnf install pypy

Or with YUM in Fedora 21 and earlier versions:

# yum install pypy


The latest updates of PyPy package information can be found at Fedora Package Database

See the package review

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

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.

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.

Scope

PyPy supports most of the commonly used Python standard library modules complete list here

How To Test

User Experience

Dependencies

Contingency Plan

Documentation

Release Notes

Comments and Discussion