(Start change page with some general info) |
(Add tracker bug) |
||
(12 intermediate revisions by 2 users not shown) | |||
Line 41: | Line 41: | ||
== Current status == | == Current status == | ||
* Targeted release: [[Releases/21 | Fedora 21 ]] | * Targeted release: [[Releases/21 | Fedora 21 ]] | ||
* Last updated: | * Last updated: October 25, 2013 | ||
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page | <!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page | ||
Bugzilla states meaning as usual: | Bugzilla states meaning as usual: | ||
Line 50: | Line 50: | ||
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development | CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development | ||
--> | --> | ||
* Tracker bug: | * Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1076442 #1076442] | ||
== Detailed Description == | == Detailed Description == | ||
Line 62: | Line 62: | ||
== Scope == | == Scope == | ||
<!-- What work do the developers have to accomplish to complete the change 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 change 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.3| Python 3.3 feature page]]. | |||
We need to wait for Python 3.4 to reach feature freeze (planned for 3.4.0 beta 1: November 24, 2013), 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-33.pyc''' (and .cpython-33.pyo) to '''.cpython-34.pyc''' (and .cpython-34.pyo) | |||
* extension modules changing from '''.cpython-33m.so''' to '''.cpython-34m.so''' and '''.cpython-33dm.so''' to '''.cpython-34dm.so''' | |||
Notes about porting from Python 3.3 can be found at http://docs.python.org/dev/whatsnew/3.4.html#porting-to-python-3-4. | |||
* Proposal owners: | * Proposal owners: | ||
This change is isolated to Python 3 stack, which is not yet crucial for Fedora. Still, as the time of moving Fedora to Python 3 is hopefully approaching, we need to do this very cautiously. I will prepare Python 3.4 prerelease RPMs in a private repo and will do a test rebuild of all Python 3 dependent packages, filing bugs/sending patches to upstreams. This will give us a good notion of how drastic this change will be and whether or not we really want to undergo it. Overall, the change should have roughly this schedule: | |||
# After change is accepted: Start building Python 3.4 prereleases in a private repo, continuously upgrading with latest upstream prerelease versions. | |||
# November 24, 2013 (3.4.0 beta 1: feature freeze): Start rebuilding Python 3 dependent packages in the repo. | |||
# February 23, 2014 (3.4.0 final) If everything goes well (meaning that all essential packages in Fedora build and work with Python 3.4) up to this point, merge into F21. | |||
<!-- What work do the feature owners 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 feature owners 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?--> | ||
* Other developers: | * Other developers: | ||
I'll gladly accept any help with rebuilding/porting/patching/bug reporting of dependent packages as well as suggestions for Python 3.4 packaging itself. When we're sure that we really want to do the transition, it'd be great if package owners rebuilt their packages themselves. | |||
<!-- What work do other 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 other 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?--> | ||
* Release engineering: | * Release engineering: | ||
Nothing. | |||
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)? Is a mass rebuid required? If a rel-eng ticket exists, add a link here. --> | <!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)? Is a mass rebuid required? If a rel-eng ticket exists, add a link here. --> | ||
* Policies and guidelines: | * Policies and guidelines: | ||
None. | |||
<!-- Do the packaging guidelines or other documents need to be updated for this feature? If so, does it need to happen before or after the implementation is done? If a FPC ticket exists, add a link here. --> | <!-- Do the packaging guidelines or other documents need to be updated for this feature? If so, does it need to happen before or after the implementation is done? If a FPC ticket exists, add a link here. --> | ||
Line 79: | Line 99: | ||
<!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | <!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | ||
User written Python 3 scripts/applications may require a small amount of porting, but mostly Python 3.3 is forward compatible with Python 3.4. | |||
== How To Test == | == How To Test == | ||
Line 97: | Line 117: | ||
<!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | <!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | ||
Interested testers do not need special hardware. If you have a favorite Python 3 script, module, or application, please test it with Python 3.4 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 == | == User Experience == | ||
<!-- If this change proposal is noticeable by its target audience, how will their experiences change as a result? Describe what they will see or notice. --> | <!-- If this change proposal is noticeable by its target audience, how will their experiences change as a result? Describe what they will see or notice. --> | ||
<!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | <!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | ||
Users should not notice any difference, other than the availability of the 3.4 interpreter | |||
== Dependencies == | == Dependencies == | ||
Line 108: | Line 132: | ||
<!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | <!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | ||
See notes in "Scope" above. | |||
== Contingency Plan == | == Contingency Plan == | ||
None, we will only build in Koji after we know that the essential packages build with Python 3.4. | |||
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan? This might be as simple as "Revert the shipped configuration". Or it might not (e.g. rebuilding a number of dependent packages). 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 "Revert the shipped configuration". Or it might not (e.g. rebuilding a number of dependent packages). If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy. --> | ||
* Contingency mechanism: | * Contingency mechanism: Don't build Python 3.4 in Koji. | ||
<!-- When is the last time the contingency mechanism can be put in place? This will typically be the beta freeze. --> | <!-- When is the last time the contingency mechanism can be put in place? This will typically be the beta freeze. --> | ||
* Contingency deadline: | * Contingency deadline: TBD (probably F21 software string freeze) | ||
<!-- Does finishing this feature block the release, or can we ship with the feature in incomplete state? --> | <!-- Does finishing this feature block the release, or can we ship with the feature in incomplete state? --> | ||
* Blocks release? | * Blocks release?: We will build Python 3.4 in F21 only under the condition that reasonably small amount of non-essential packages doesn't build/work with Python 3.4. | ||
== Documentation == | == Documentation == | ||
Line 122: | Line 148: | ||
<!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | <!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | ||
http://www.python.org/dev/peps/pep-0429/ | |||
http://docs.python.org/dev/whatsnew/3.4.html | |||
== Release Notes == | == Release Notes == | ||
Line 131: | Line 159: | ||
--> | --> | ||
[[Category: | http://docs.python.org/dev/whatsnew/3.4.html | ||
[[Category:ChangeAcceptedF21]] | |||
<!-- When your change proposal page is completed and ready for review and announcement --> | <!-- When your change proposal page is completed and ready for review and announcement --> | ||
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler --> | <!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler --> | ||
Line 138: | Line 168: | ||
<!-- Select proper category, default is Self Contained Change --> | <!-- Select proper category, default is Self Contained Change --> | ||
[[Category:SelfContainedChange]] | <!-- [[Category:SelfContainedChange]] --> | ||
[[Category:SystemWideChange]] |
Latest revision as of 11:18, 14 March 2014
Python 3.4
Summary
Update the Python 3 stack in Fedora from Python 3.3 to Python 3.4.
Owner
- Name: Slavek Kabrda
- Email: <bkabrda@redhat.com>
- Release notes owner:
Current status
Detailed Description
Python 3.4 adds numerous features and optimizations. See the upstream notes at http://www.python.org/dev/peps/pep-0429/#features-for-3-4 and http://docs.python.org/dev/whatsnew/3.4.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.3 feature page.
We need to wait for Python 3.4 to reach feature freeze (planned for 3.4.0 beta 1: November 24, 2013), 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-33.pyc (and .cpython-33.pyo) to .cpython-34.pyc (and .cpython-34.pyo)
- extension modules changing from .cpython-33m.so to .cpython-34m.so and .cpython-33dm.so to .cpython-34dm.so
Notes about porting from Python 3.3 can be found at http://docs.python.org/dev/whatsnew/3.4.html#porting-to-python-3-4.
- Proposal owners:
This change is isolated to Python 3 stack, which is not yet crucial for Fedora. Still, as the time of moving Fedora to Python 3 is hopefully approaching, we need to do this very cautiously. I will prepare Python 3.4 prerelease RPMs in a private repo and will do a test rebuild of all Python 3 dependent packages, filing bugs/sending patches to upstreams. This will give us a good notion of how drastic this change will be and whether or not we really want to undergo it. Overall, the change should have roughly this schedule:
- After change is accepted: Start building Python 3.4 prereleases in a private repo, continuously upgrading with latest upstream prerelease versions.
- November 24, 2013 (3.4.0 beta 1: feature freeze): Start rebuilding Python 3 dependent packages in the repo.
- February 23, 2014 (3.4.0 final) If everything goes well (meaning that all essential packages in Fedora build and work with Python 3.4) up to this point, merge into F21.
- Other developers:
I'll gladly accept any help with rebuilding/porting/patching/bug reporting of dependent packages as well as suggestions for Python 3.4 packaging itself. When we're sure that we really want to do the transition, it'd be great if package owners rebuilt their packages themselves.
- Release engineering:
Nothing.
- Policies and guidelines:
None.
Upgrade/compatibility impact
User written Python 3 scripts/applications may require a small amount of porting, but mostly Python 3.3 is forward compatible with Python 3.4.
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.4 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.4 interpreter
Dependencies
See notes in "Scope" above.
Contingency Plan
None, we will only build in Koji after we know that the essential packages build with Python 3.4.
- Contingency mechanism: Don't build Python 3.4 in Koji.
- Contingency deadline: TBD (probably F21 software string freeze)
- Blocks release?: We will build Python 3.4 in F21 only under the condition that reasonably small amount of non-essential packages doesn't build/work with Python 3.4.
Documentation
http://www.python.org/dev/peps/pep-0429/
http://docs.python.org/dev/whatsnew/3.4.html