Update the Python 3 stack in Fedora from 3.2 to 3.3
- Name: Dave Malcolm
- Email: <firstname.lastname@example.org>
- Targeted release: Fedora 18
- Last updated: 2012-10-15
- Percentage of completion: 100% (see detailed notes under "Scope" below and in Talk:Features/Python_3.3)
- Done: Successful mock rebuilds of the core python3 package for Python 3.3 (with full test suite) and of 95 add-on packages
- Done: python 3.3.0 beta 1 built "for real" in Koji
- Done: 103 add-on packages successfully rebuilt in Koji against 3.3.0 beta 1
- Done: python 3.3.0 beta 2 built into Koji
- Done: python 3.3.0 rc1 built into Koji
- Done: python 3.3.0 rc2 built into Koji
- Done: python 3.3.0 rc3 built into Koji
- Done: python 3.3.0 built into Koji and pushed into the tree as https://admin.fedoraproject.org/updates/FEDORA-2012-15111/python3-3.3.0-1.fc18
- Done: update rpmlint to check for Python 3.3 bytecode: https://bugzilla.redhat.com/show_bug.cgi?id=845972
Python 3.3 adds numerous features and optimizations. See the upstream notes at http://www.python.org/getit/releases/3.3.0/ and http://docs.python.org/dev/whatsnew/3.3.html
Benefit to Fedora
Fedora aims to showcase the latest in free and open source software - we should have the most recent release of Python 3.
Compare with the Python 3.2 feature page.
We need to wait for Python 3.3 to reach feature freeze, so that the bytecode format for .pyc files is frozen, together with the ABI for extension modules.
At that point we can rebase python3 to the latest release candidate of that code. We would then need to rebuild all python 3 packages. See https://fedoraproject.org/wiki/Python3#Python_3_already_in_Fedora
For bonus points, we ought to tell "file" and "rpmlint" about the new bytecode format for .pyc files.
Note that the suffix of some files should change, and this may require slight packaging tweaks in the various packages that ship Python 3 code:
- bytecode files changing from .cpython-32.pyc (and .cpython-32.pyo) to .cpython-33.pyc (and .cpython-32.pyo)
- extension modules changing from .cpython-32mu.so to .cpython-33m.so (the "u" part goes away as part of PEP 393).
There have been some C API changes (especially relating to unicode handling); if we're unlucky we may need to do some code patching to get some extension modules to compile.
Detailed notes on the extent of the rebuild and the current status can be seen in Talk:Features/Python_3.3
How To Test
Interested testers do not need special hardware. If you have a favorite Python 3 script, module, or application, please test it with Python 3.3 and verify that it still works as you expect.
My own test plan:
- Smoketest of the interpreter
- Run the upstream regression test suite (this is done during %check)
Users should not notice any difference, other than the availability of the 3.3 interpreter
See notes in "Scope" above.
I'm working on test rebuilds of all affected packages, using skvidal's mockchain tool (this also gives us a build ordering, by grepping the logs).
I plan to commit any proposed changes to "python3.3" branches of dist-git, and then merge to master when we do it for real.
This pre-planning should mean everything is ready and any major issues should have been shaken out before we "pull the trigger" and commit/build for real into f18.
The system Python 3 stack has been upgraded to 3.3 (the system Python 2 stack remains at 2.7), bringing in hundreds of fixes and tweaks; for a list of changes see http://docs.python.org/dev/whatsnew/3.3.html