Python 3
Python 3 | |
---|---|
![]() | |
Paradigm | Multi-paradigm |
Designed by | Guido van Rossum |
Developer | Python Software Foundation |
OS | Cross-platform |
License | Python Software Foundation License |
Website | www.python.org |
Naming
Python 3.0, Python 3000, and Py3K are all names for the upcoming version of the Python programming language. The project is called Python 3000, or abbreviated to Py3k. The actual Python release will be officially be referred to as Python 3.0, which is what "python3.0 -V" will print; the actual file names will use the same naming convention used for Python 2.x. There won't be a new name for the executable, and the suffix for Python source files will remain the same.
Timeline
Guido van Rossum, Python 3's designer, hopes to release a first alpha release of a "meta-PEP" timeline sometime in 2007; it may take another year after that (or more) before the first proper release, named Python 3.0.
Parallel Python 2.x and 3.x releases are expected to exist for some time; the Python 2.x releases continuing for a longer time than the traditional 2.x.y bugfix releases. Typically, there are no further bugfix releases for version 2.x once version 2.(x+1) is released, but there's expected to be at least one or two new 2.x releases even after 3.0 (final) has been released, probably well into 3.1 or 3.2. This will to some extent depend on community demand for continued 2.x support, acceptance and stability of 3.0, and volunteer stamina. It's quite possible that Python 3.1 and 3.2 will be released much sooner after 3.0 than has been customary for the 2.x series. The 3.x release pattern will stabilize once the community is happy with 3.x.
Compatibility and Transition
Python 3000 will break backwards compatibility. There is no requirement that Python 2.9 code will run unmodified on Python 3.0. Python's dynamic typing combined with the plans to change the semantics of certain methods of dictionaries, for example, would make mechanical translation from Python 2.x to Python 3.0 very difficult. However, consideration is being given to develop a tool that does at least an 80% job of translation, pointing out areas where it wasn't sure using comments or warnings. Such a tool may be based on something like Pychecker.
Another kind of tool that may be developed is an instrumented version of 2.x that produces run-time warnings about constructs that will get a different meaning in 3.0. This can't be used for all incompatibilities, but it's likely to help reach a larger percentage of correct translations. This approach is already in place for detecting reliance on '/' to do integer division.
Product enhancement proposal numbering
Python 3000 product enhancement proposals (PEPs) are numbered starting at PEP 3000. PEPs 3000-3099 are meta-PEPs -- these can be either process or informational PEPs. PEPs 3100-3999 are feature PEPs. PEP 3000 itself (this PEP) is special; it is the meta-PEP for Python 3000 meta-PEPs (it describe the process to define processes). PEP 3100 is also special; it's a laundry list of features that were selected for (hopeful) inclusion in Python 3000 before formal Python 3000 development began. PEP 3099 is a list of features that will not change.
See also
- Comparison of programming languages
- General-purpose dynamic languages
- Free software portal — covers software that's free for users to run, study, modify, and redistribute.