From Fedora Project Wiki
(initial page creation; based on Features/Python 3.2)
 
(→‎Current status: 100% (https://admin.fedoraproject.org/updates/FEDORA-2012-15663/python-networkx-1.7-1.fc18 pushed to stable))
 
(71 intermediate revisions by 2 users not shown)
Line 17: Line 17:


== Current status ==
== Current status ==
* Targeted release: [[Releases/{{FedoraVersion||next}} | {{FedoraVersion|long|next}} ]]  
* Targeted release: [[Releases/18 | Fedora 18 ]]  
* Last updated: 2011-03-23
* Last updated: 2012-10-15
* Percentage of completion: 0%
* 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
Upstream [http://www.python.org/dev/peps/pep-0398/ release schedule])
** 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
<!-- CHANGE THE "FedoraVersion" TEMPLATES ABOVE TO PLAIN NUMBERS WHEN YOU COMPLETE YOUR PAGE. -->
** 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


== Detailed Description ==
== Detailed Description ==
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
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 ==
== Benefit to Fedora ==
Line 35: Line 41:
<!-- 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?-->


Compare with the [[Features/Python_3.2| 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 [http://www.python.org/dev/peps/pep-0393/ 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 ==
== How To Test ==
Line 66: Line 87:
== Contingency Plan ==
== Contingency Plan ==
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "None necessary, revert to previous release behaviour."  Or it might not.  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "None necessary, revert to previous release behaviour."  Or it might not.  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
I'm working on test rebuilds of all affected packages, using skvidal's [http://fedorapeople.org/gitweb?p=skvidal/public_git/scripts.git;f=mock/mockchain.py;h=deb4f0a4f7c162d7222fdf43da92b77c04659a25;hb=HEAD 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.


== Documentation ==
== Documentation ==
<!-- Is there upstream documentation on this feature, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->
<!-- Is there upstream documentation on this feature, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->
[http://docs.python.org/dev/whatsnew/3.3.html What's New In Python 3.3]


== Release Notes ==
== Release Notes ==
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->
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


== Comments and Discussion ==
== Comments and Discussion ==
* See [[Talk:Features/Python_3.2]]  <!-- This adds a link to the "discussion" tab associated with your page.  This provides the ability to have ongoing comments or conversation without bogging down the main feature page -->
* See [[Talk:Features/Python_3.3]]  <!-- This adds a link to the "discussion" tab associated with your page.  This provides the ability to have ongoing comments or conversation without bogging down the main feature page -->




[[Category:FeaturePageIncomplete ]]
[[Category:FeatureAcceptedF18 ]]
<!-- When your feature page is completed and ready for review -->
<!-- When your feature page is completed and ready for review -->
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->

Latest revision as of 18:03, 15 October 2012


Python 3.3

Summary

Update the Python 3 stack in Fedora from 3.2 to 3.3

Owner

  • Email: <dmalcolm@redhat.com>

Current status

Detailed Description

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.

Scope

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)

User Experience

Users should not notice any difference, other than the availability of the 3.3 interpreter

Dependencies

See notes in "Scope" above.

Contingency Plan

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.

Documentation

What's New In Python 3.3

Release Notes

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

Comments and Discussion