Features/PyPyStack

From FedoraProject

< Features(Difference between revisions)
Jump to: navigation, search
(Benefit to Fedora)
(Scope: start adding table of packages)
Line 52: Line 52:
 
== Scope ==
 
== Scope ==
 
<!-- What work do the developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
 
<!-- What work do the developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
 +
 +
<!-- Please keep this table sorted alphabetically by python module name -->
 +
{|
 +
! Python Module !! Fedora CPython package !! PyPy Compatibility !! Fedora PyPy status
 +
|-
 +
|          || swig        || ||
 +
|-
 +
| cairo    || pycairo    || ||
 +
|-
 +
| coverage || python-coverage || ||
 +
|-
 +
| dbus    || dbus-python || ||
 +
|-
 +
| gtk      || pygtk2      || ||
 +
|-
 +
| lxml    || python-lxml || ||
 +
|-
 +
| gobject  || pygobject2  || ||
 +
|-
 +
| PyQt4    || PyQt4      || ||
 +
|-
 +
| 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)
 +
|-
 +
| sip      || sip        || ||
 +
|-
 +
| sqlalchemy || python-sqlalchemy || ||
 +
|}
  
 
== How To Test ==
 
== How To Test ==

Revision as of 16:22, 14 January 2011


Contents

PyPy Stack

Summary

Fedora 22 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>

Current status

  • Targeted release: Fedora 22
  • Last updated: 2011-01-13
  • Percentage of completion: 30%


pypy-1.4.1 is packaged within Fedora (see the package review)

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)

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

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

Python Module Fedora CPython package PyPy Compatibility Fedora PyPy status
swig
cairo pycairo
coverage python-coverage
dbus dbus-python
gtk pygtk2
lxml python-lxml
gobject pygobject2
PyQt4 PyQt4
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)
sip sip
sqlalchemy python-sqlalchemy

How To Test

User Experience

Dependencies

Contingency Plan

Documentation

Release Notes

Comments and Discussion