History of Python
{{short description|History of the Python programming language}}
{{Use mdy dates|date=September 2015}}
{{use American English|date=May 2024}}
{{Missing information|prominent features of versions after 3.0|date=March 2024}}
File:Python logo and wordmark.svg
{{Main|Python (programming language)}}
The programming language Python was conceived in the late 1980s,{{cite web |url=http://www.artima.com/intv/pythonP.html |title=The Making of Python |access-date=March 22, 2007 |publisher=Artima Developer |archive-date=September 1, 2016 |archive-url=https://web.archive.org/web/20160901183332/http://www.artima.com/intv/pythonP.html |url-status=live}} and its implementation was started in December 1989 by Guido van Rossum at CWI in the Netherlands as a successor to ABC capable of exception handling and interfacing with the Amoeba operating system.{{cite web |url=https://www.python.org/doc/faq/general/#why-was-python-created-in-the-first-place |title=Why was Python created in the first place? |publisher=Python FAQ |access-date=March 22, 2007 |archive-date=February 23, 2008 |archive-url=https://web.archive.org/web/20080223222507/http://www.python.org/doc/faq/general/#why-was-python-created-in-the-first-place |url-status=live}} Van Rossum was Python's principal author and had a central role in deciding the direction of Python (as reflected in the title given to him by the Python community, Benevolent Dictator for Life (BDFL){{cite web |url=http://www.artima.com/weblogs/viewpost.jsp?thread=235725 |title=Origin of BDFL |first=Guido |last=van Rossum |date=July 31, 2008 |access-date=August 1, 2008 |archive-date=January 16, 2011 |archive-url=https://web.archive.org/web/20110116210946/http://www.artima.com/weblogs/viewpost.jsp?thread=235725 |url-status=live}}{{cite web |url=http://www.eweek.com/c/a/Application-Development/Python-Creator-Scripts-Inside-Google/ |title=Python Creator Scripts Inside Google |date=March 7, 2006 |publisher=www.eweek.com |access-date=May 13, 2008 |archive-date=August 9, 2018 |archive-url=https://archive.today/20180809122951/http://www.eweek.com/development/python-creator-scripts-inside-google |url-status=live}}) until stepping down as leader on July 12, 2018.{{cite news |last1=Fairchild |first1=Carlie |title=Guido van Rossum Stepping Down from Role as Python's Benevolent Dictator For Life |url=https://www.linuxjournal.com/content/guido-van-rossum-stepping-down-role-pythons-benevolent-dictator-life |access-date=July 12, 2018 |work=Linux Journal |date=July 12, 2018 |language=en |archive-date=July 13, 2018 |archive-url=https://web.archive.org/web/20180713192427/https://www.linuxjournal.com/content/guido-van-rossum-stepping-down-role-pythons-benevolent-dictator-life |url-status=live}}. Python was named after the BBC TV show Monty Python's Flying Circus.{{Cite web |url=https://docs.python.org/3/faq/general.html#why-is-it-called-python |title=General Python FAQ — Python 3.8.3 documentation |website=docs.python.org |access-date=June 4, 2020 |archive-date=October 24, 2012 |archive-url=https://web.archive.org/web/20121024164224/http://docs.python.org/faq/general.html#why-is-it-called-python |url-status=live}}
Python 2.0 was released on October 16, 2000, with many major new features, such as list comprehensions, cycle-detecting garbage collector (in addition to reference counting) and reference counting, for memory management and support for Unicode, along with a change to the development process itself, with a shift to a more transparent and community-backed process.{{cite web |url=http://www.amk.ca/python/2.0/ |title=What's New in Python 2.0 |first1=Andrew M. |last1=Kuchling |first2=Moshe |last2=Zadka |access-date=March 22, 2007 |archive-date=December 14, 2009 |archive-url=https://web.archive.org/web/20091214142515/http://www.amk.ca/python/2.0}}
Python 3.0, a major, backwards-incompatible release, was released on December 3, 2008{{cite web |url=https://www.python.org/download/releases/3.0/ |title=Welcome to Python.org |work=python.org |access-date=December 27, 2016 |archive-date=June 14, 2020 |archive-url=https://web.archive.org/web/20200614153714/https://www.python.org/download/releases/3.0/ |url-status=live}} after a long period of testing. Many of its major features were also backported to the backwards-compatible Python versions 2.6 and 2.7 until support for Python 2 finally ceased at the beginning of 2020. Releases of Python 3 include the 2to3
utility, which automates the translation of Python 2 code to Python 3.{{Cite web|title=2to3 – Automated Python 2 to 3 code translation|url=https://docs.python.org/3/library/2to3.html|access-date=2021-02-02|website=docs.python.org|archive-date=4 June 2020|archive-url=https://web.archive.org/web/20200604232823/https://docs.python.org/3/library/2to3.html|url-status=live}}
Early history
Van Rossum first published the code (for Python version 0.9.1) to alt.sources in February 1991.{{cite web |url=https://www.tuhs.org/Usenet/alt.sources/1991-February/001749.html |title=Python 0.9.1 part 01/21 |publisher=alt.sources archives |access-date=2021-08-11 |archive-date=August 11, 2021 |archive-url=https://web.archive.org/web/20210811171015/https://www.tuhs.org/Usenet/alt.sources/1991-February/001749.html |url-status=live}}{{cite web |url=https://raw.githubusercontent.com/python/cpython/master/Misc/HISTORY |title=HISTORY |publisher=Python Foundation |work=Python source distribution |access-date=2017-11-23 |archive-date=December 1, 2017 |archive-url=https://web.archive.org/web/20171201033011/https://raw.githubusercontent.com/python/cpython/master/Misc/HISTORY |url-status=live}} Several features of the language were already present at this stage, among them classes with inheritance, exception handling, functions, and various core datatypes such as {{code|list}}, {{code|dict}}, and {{code|str}}. The initial release also contained a module system borrowed from Modula-3; Van Rossum describes the module as "one of Python's major programming units". Python's exception model also resembled Modula-3's, with the addition of an {{code|else}} clause. In 1994 [news://comp.lang.python comp.lang.python], the primary discussion forum for Python, was formed.
Version 1
Python reached version 1.0 in January 1994. The major new features included in this release were the functional programming tools lambda
, map
, filter
and reduce
. Van Rossum stated that "Python acquired lambda, reduce(), filter() and map(), courtesy of a Lisp hacker who missed them and submitted working patches".{{cite web |url=http://www.artima.com/weblogs/viewpost.jsp?thread=98196 |title=The fate of reduce() in Python 3000 |first=Guido |last=van Rossum |access-date=2007-03-22 |publisher=Artima Developer |archive-date=April 7, 2007 |archive-url=https://web.archive.org/web/20070407034617/http://www.artima.com/weblogs/viewpost.jsp?thread=98196 |url-status=live}}
The last version released while Van Rossum was at CWI was Python 1.2. In 1995, Van Rossum continued his work on Python at the Corporation for National Research Initiatives (CNRI) in Reston, Virginia from where he released several versions.
By version 1.4, Python had acquired several new features. Notable among these are the Modula-3 inspired keyword arguments (which are also similar to Common Lisp's keyword arguments) and built-in support for complex numbers. Also included is a basic form of data hiding by name mangling, though this is easily bypassed.{{cite web |url=http://www.amk.ca/python/writing/12-14 |title=LJ #37: Python 1.4 Update |access-date=2007-04-29 |url-status=dead |archive-url=https://web.archive.org/web/20070501080219/http://www.amk.ca/python/writing/12-14 |archive-date=May 1, 2007 |df=mdy-all}}
During Van Rossum's stay at CNRI, he launched the Computer Programming for Everybody (CP4E) initiative, intending to make programming more accessible to more people, with a basic "literacy" in programming languages, similar to the basic English literacy and mathematics skills required by most employers. Python served a central role in this: because of its focus on clean syntax, it was already suitable, and CP4E's goals bore similarities to its predecessor, ABC. The project was funded by DARPA.{{cite web |url=https://www.python.org/doc/essays/cp4e/ |first=Guido |last=van Rossum |title=Computer Programming for Everybody |access-date=2007-03-22 |archive-date=May 1, 2007 |archive-url=https://web.archive.org/web/20070501132527/http://www.python.org/doc/essays/cp4e/ |url-status=live}} {{As of|2007}}, the CP4E project is inactive, and while Python attempts to be easily learnable and not too arcane in its syntax and semantics, outreach to non-programmers is not an active concern.{{cite web |url=https://www.python.org/cp4e/ |title=Computer Programming for Everybody |access-date=2007-03-22 |publisher=Python Software Foundation |url-status=dead |archive-url=https://web.archive.org/web/20070329060757/http://www.python.org/cp4e/ |archive-date=March 29, 2007 |df=mdy-all}}
=BeOpen=
In 2000, the Python core development team moved to BeOpen.com{{Cite web|url=https://slashdot.org/story/00/05/30/1931239/python-development-team-moves-to-beopencom|title=Python Development Team Moves to BeOpen.Com – Slashdot|website=slashdot.org|access-date=April 12, 2020|archive-date=April 12, 2020|archive-url=https://web.archive.org/web/20200412054433/https://slashdot.org/story/00/05/30/1931239/python-development-team-moves-to-beopencom|url-status=live}} to form the BeOpen PythonLabs team.{{Cite web|url=http://www.beopen.com/company/team.html|archive-url = https://web.archive.org/web/20000815095541/http://www.beopen.com/company/team.html|archive-date = August 15, 2000|title = Open | Your digital insurance partner}}{{Cite web|url=http://joeellsworth.com/resume/references/pybiz_beopen_partnership.pdf|title=Content Management Provider PyBiz Announces Strategic Partnership With BeOpen in Utilizing Python Programming Language|access-date=April 12, 2020|archive-date=April 12, 2020|archive-url=https://web.archive.org/web/20200412054433/http://joeellsworth.com/resume/references/pybiz_beopen_partnership.pdf|url-status=live}} CNRI requested that a version 1.6 be released, summarizing Python's development up to the point at which the development team left CNRI. Consequently, the release schedules for 1.6 and 2.0 had a significant amount of overlap. Python 2.0 was the only release from BeOpen.com. After Python 2.0 was released by BeOpen.com, Guido van Rossum and the other PythonLabs developers joined Digital Creations.
The Python 1.6 release included a new CNRI license that was substantially longer than the CWI license that had been used for earlier releases. The new license included a clause stating that the license was governed by the laws of the State of Virginia. The Free Software Foundation argued that the choice-of-law clause was incompatible with the GNU General Public License. BeOpen, CNRI and the FSF negotiated a change to Python's free-software license that would make it GPL-compatible. Python 1.6.1 is essentially the same as Python 1.6, with a few minor bug fixes, and with the new GPL-compatible license.{{cite web |url=https://docs.python.org/3/license.html |title=History and License |work=Python 3 Documentation |access-date=2022-12-07 |archive-date=December 5, 2016 |archive-url=https://web.archive.org/web/20161205134352/https://docs.python.org/3/license.html |url-status=live}}
Version 2
Python 2.0, released October 2000, introduced list comprehensions, a feature borrowed from the functional programming languages SETL and Haskell. Python's syntax for this construct is very similar to Haskell's, apart from Haskell's preference for punctuation characters and Python's preference for alphabetic keywords. Python 2.0 also introduced a garbage collector able to collect reference cycles.
Python 2.1 was close to Python 1.6.1, as well as Python 2.0. Its license was renamed Python Software Foundation License. All code, documentation and specifications added, from the time of Python 2.1's alpha release on, is owned by the Python Software Foundation (PSF), a nonprofit organization formed in 2001, modeled after the Apache Software Foundation. The release included a change to the language specification to support nested scopes, like other statically scoped languages. (The feature was turned off by default, and not required, until Python 2.2.)
Python 2.2 was released in December 2001;{{Cite web|url=https://www.python.org/download/releases/2.2/|title=Python 2.2|website=Python.org|access-date=December 31, 2019|archive-date=August 2, 2019|archive-url=https://web.archive.org/web/20190802012201/https://www.python.org/download/releases/2.2/|url-status=live}} a major innovation was the unification of Python's types (types written in C) and classes (types written in Python) into one hierarchy. This single unification made Python's object model purely and consistently object oriented.{{cite web |url=https://www.python.org/doc/2.2.3/whatsnew/sect-rellinks.html |title=PEPs 252 and 253: Type and Class Changes |access-date=2008-09-05 |last1=Kuchling |first1=Andrew M. |date=2001-12-21 |work=What's New in Python 2.2 |publisher=Python Foundation |url-status=dead |archive-url=https://web.archive.org/web/20080917162106/http://python.org/doc/2.2.3/whatsnew/sect-rellinks.html |archive-date=September 17, 2008 |df=mdy-all}} Also added were generators which were inspired by Icon.
{{multiple images
| align = right
| direction = horizontal
| image1 = PythonWin 64×64.gif
| alt1 = A green snake with reared head and outstretched tongue
| image2 = Python Macintosh icon 1997–2001.png
| alt2 = A falling weight labelled "16 ton"
| image3 = Python-logo-notext.svg
| alt3 = A highly abstracted symbol suggestive of the head ends of two snakes in a double helix viewed head-on, curved clockwise toward the viewer: a blue snake comes in from behind to the left, with head folding back on its body at the top, and a yellow snake comes in from behind to the right and its head folds back on its body at the bottom; the overall silhouette of the symbol forms a rough plus sign, and the eye locations are suggestive of a yin and yang.
| footer = Historic Python logos used on Windows (left) and the Macintosh (center), and the logo used since version 2.5 (right).
| total_width = 200
}}
Python 2.5 was released in September 2006{{Cite web |url=https://www.python.org/download/releases/2.5/ |title=Python 2.5 Release |website=Python.org |access-date=March 20, 2018 |archive-date=August 4, 2019 |archive-url=https://web.archive.org/web/20190804121344/https://www.python.org/download/releases/2.5/ |url-status=live}} and introduced the {{code|with}} statement, which encloses a code block within a context manager (for example, acquiring a lock before the block of code is run and releasing the lock afterwards, or opening a file and then closing it), allowing resource acquisition is initialization (RAII)-like behavior and replacing a common try/finally idiom.{{Cite web |url=https://www.python.org/download/releases/2.5/highlights/ |title=Highlights: Python 2.5 |website=Python.org |access-date=March 20, 2018 |archive-date=August 4, 2019 |archive-url=https://web.archive.org/web/20190804120408/https://www.python.org/download/releases/2.5/highlights/ |url-status=live}}
Python 2.6 was released to coincide with Python 3.0, and included some features from that release, as well as a "warnings" mode that highlighted the use of features that were removed in Python 3.0. Similarly, Python 2.7 coincided with and included features from Python 3.1,{{cite web |url=https://docs.python.org/release/2.7/whatsnew/2.7.html |title=What's New in Python 2.7 |date=2010-07-03 |quote=Much as Python 2.6 incorporated features from Python 3.0, version 2.7 incorporates some of the new features in Python 3.1. The 2.x series continues to provide tools for migrating to the 3.x series. |last1=Kuchling |first1=Andrew M. |access-date=2012-10-07 |archive-date=June 7, 2012 |archive-url=https://web.archive.org/web/20120607093732/http://docs.python.org/release/2.7/whatsnew/2.7.html |url-status=live}} which was released on June 26, 2009.
Parallel 2.x and 3.x releases then ceased, and Python 2.7 was the last release in the 2.x series. In November 2014, it was announced that Python 2.7 would be supported until 2020, but users were encouraged to move to Python 3 as soon as possible.{{cite web |url=http://www.i-programmer.info/news/216-python/7179-python-27-to-be-maintained-until-2020.html |title=Python 2.7 To Be Maintained Until 2020 |first=Sue |last=Gee |date=2014-04-14 |work=i-programmer.info |access-date=December 27, 2016 |archive-date=May 10, 2016 |archive-url=https://web.archive.org/web/20160510071844/http://www.i-programmer.info/news/216-python/7179-python-27-to-be-maintained-until-2020.html |url-status=live}} Python 2.7 support ended on January 1, 2020, along with code freeze of 2.7 development branch. A final release, 2.7.18, occurred on April 20, 2020, and included fixes for critical bugs and release blockers.{{Cite web|url=https://github.com/python/cpython/commits/2.7|title=Commits: python/cpython at 2.7|website=GitHub|access-date=April 22, 2020|archive-date=April 22, 2020|archive-url=https://web.archive.org/web/20200422184831/https://github.com/python/cpython/commits/2.7|url-status=live}} This marked the end-of-life of Python 2.
Version 3
Python 3.0 (also called "Python 3000" or "Py3K") was released on December 3, 2008. It was designed to rectify fundamental design flaws in the language{{snd}}the changes required could not be implemented while retaining full backwards compatibility with the 2.x series, which necessitated a new major version number. The guiding principle of Python 3 was: "reduce feature duplication by removing old ways of doing things".{{Cite web |title=PEP 3100 – Miscellaneous Python 3.0 Plans {{!}} peps.python.org |url=https://peps.python.org/pep-3100/ |access-date=2022-06-02 |website=peps.python.org |archive-date=May 25, 2022 |archive-url=https://web.archive.org/web/20220525072657/https://peps.python.org/pep-3100/ |url-status=live}}
Python 3.0 was developed with the same philosophy as in prior versions. However, as Python had accumulated new and redundant ways to program the same task, Python 3.0 had an emphasis on removing duplicative constructs and modules, in keeping with the Zen of Python: "There should be one— and preferably only one —obvious way to do it".
Nonetheless, Python 3.0 remained a multi-paradigm language. Coders could still follow object-oriented, structured, and functional programming paradigms, among others, but within such broad choices, the details were intended to be more obvious in Python 3.0 than they were in Python 2.x.
=Compatibility=
Python 3.0 broke backward compatibility, and much Python 2 code does not run unmodified on Python 3.{{Cite web |title=PEP 3000 – Python 3000 {{!}} peps.python.org |url=https://peps.python.org/pep-3000/#compatibility-and-transition |access-date=2022-06-02 |website=peps.python.org |archive-date=April 2, 2022 |archive-url=https://web.archive.org/web/20220402165138/https://peps.python.org/pep-3000/#compatibility-and-transition |url-status=live}} Python's dynamic typing combined with the plans to change the semantics of certain methods of dictionaries, for example, made perfect mechanical translation from Python 2.x to Python 3.0 very difficult. A tool called "2to3
" does the parts of translation that can be done automatically. At this, 2to3
appeared to be fairly successful, though an early review noted that there were aspects of translation that such a tool would never be able to handle.{{Cite web |last=Ruby |first=Sam |date=September 1, 2007 |title=2to3 |url=https://intertwingly.net/blog/2007/09/01/2to3 |url-status=live |archive-url=https://web.archive.org/web/20160324182701/https://intertwingly.net/blog/2007/09/01/2to3 |archive-date=March 24, 2016 |access-date=2024-09-06 |website=intertwingly.net}} Prior to the roll-out of Python 3, projects requiring compatibility with both the 2.x and 3.x series were recommended to have one source (for the 2.x series), and produce releases for the Python 3.x platform using 2to3
. Edits to the Python 3.x code were discouraged for so long as the code needed to run on Python 2.x. This is no longer recommended; as of 2012 the preferred approach was to create a single code base that can run under both Python 2 and 3 using compatibility modules.{{Cite web |last=Coghlan |first=Alyssa |date=April 21, 2020 |title=Python 3 Q & A – Alyssa Coghlan's Python Notes |url=https://python-notes.curiousefficiency.org/en/latest/python3/questions_and_answers.html#other-changes |access-date=2024-09-06 |website=python-notes.curiousefficiency.org}}
=Features=
Some of the major changes included for Python 3.0 were:
- Changing {{code|print}} so that it is a built-in function, not a statement. This made it easier to change a module to use a different print function, as well as making the syntax more regular. In Python 2.6 and 2.7 {{code|print()}} is available as a built-in but is masked by the print statement syntax, which can be disabled by entering {{code|from __future__ import print_function}} at the top of the file
- Removal of the Python 2 {{code|input}} function, and the renaming of the {{code|raw_input}} function to {{code|input}}. Python 3's {{code|input}} function behaves like Python 2's {{code|raw_input}} function, in that the input is always returned as a string rather than being evaluated as an expression
- Moving {{code|reduce}} (but not {{code|map}} or {{code|filter}}) out of the built-in namespace and into {{code|functools}} (the rationale being code that uses {{code|reduce}} is less readable than code that uses a for loop and accumulator variable){{cite web |url=http://www.artima.com/weblogs/viewpost.jsp?thread=211200 |title=Python 3000 FAQ |first=Guido |last=van Rossum |work=artima.com |access-date=December 27, 2016 |archive-date=November 9, 2020 |archive-url=https://web.archive.org/web/20201109015427/https://www.artima.com/weblogs/viewpost.jsp?thread=211200 |url-status=live}}{{Cite web |url=https://www.artima.com/weblogs/viewpost.jsp?thread=98196 |title=The fate of reduce() in Python 3000 |website=www.artima.com |access-date=2019-12-31 |archive-date=December 18, 2019 |archive-url=https://web.archive.org/web/20191218204011/https://www.artima.com/weblogs/viewpost.jsp?thread=98196 |url-status=live}}
- Adding support for optional function annotations that can be used for informal type declarations or other purposes
- Unifying the {{code|str}}/{{code|unicode}} types, representing text, and introducing a separate immutable {{code|bytes}} type; and a mostly corresponding mutable {{code|bytearray}} type, both of which represent arrays of bytes
- Removing backward-compatibility features, including old-style classes, string exceptions, and implicit relative imports
- A change in integer division functionality: in Python 2, integer division always returns an integer. For example {{code|5 / 2}} is {{code|2}}; whereas in Python 3, {{code|5 / 2}} is {{code|2.5}}. (In both Python 2{{snd}}2.2 onwards{{snd}}and Python 3, a separate operator exists to provide the old behavior: {{code|5 // 2}} is {{code|2}})
- Allowing non-ASCII letters to be used in identifiers,{{Cite web |title=PEP 3131 – Supporting Non-ASCII Identifiers {{!}} peps.python.org |url=https://peps.python.org/pep-3131/ |access-date=2024-07-01 |website=Python Enhancement Proposals (PEPs) |language=en}} such as in
smörgåsbord
Subsequent releases in the Python 3.x series have included additional, substantial new features; all ongoing development of the language is done in the 3.x series.
Table of versions
Releases before numbered versions:
- Implementation started{{snd}}December, 1989
- Internal releases at Centrum Wiskunde & Informatica{{snd}}1990
class="wikitable sortable" style="text-align:center;" |
Version
! Latest ! Release date ! End of full support ! End of security fixes |
---|
{{Version|o|0.9}}
| colspan="2" | 1993-07-29{{efn|group=version-table|name=last-release|Date of last micro release.}} |
{{Version|o|1.0}}
| colspan="2" | 1994-07-14{{efn|group=version-table|name=last-release}} |
{{Version|o|1.1}}
| colspan="2" | 1994-11-10{{efn|group=version-table|name=last-release}} |
{{Version|o|1.2}}
| | colspan="2" | Unsupported |
{{Version|o|1.3}}
| | colspan="2" | Unsupported |
{{Version|o|1.4}}
| | colspan="2" | Unsupported |
{{Version|o|1.5}}
| colspan="2" | 1999-04-13{{efn|group=version-table|name=last-release}} |
{{Version|o|1.6}}
| colspan="2" | 2000–09{{efn|group=version-table|name=last-release}} |
{{Version|o|2.0}}
| colspan="2" | 2001-06-22{{efn|group=version-table|name=last-release}} |
{{Version|o|2.1}}
| colspan="2" | 2002-04-09{{efn|group=version-table|name=last-release}} |
{{Version|o|2.2}}
| colspan="2" | 2003-05-30{{efn|group=version-table|name=last-release}} |
{{Version|o|2.3}}
| colspan="2" | 2008-03-11{{efn|group=version-table|name=last-release}} |
{{Version|o|2.4}}
| colspan="2" | 2008-12-19{{efn|group=version-table|name=last-release}} |
{{Version|o|2.5}}
| colspan="2" | 2011-05-26{{efn|group=version-table|name=last-release}} |
{{Version|o|2.6}}
| 2010-08-24{{efn|group=version-table|name=last-bug-release|Date of last non security only release.}} |
{{Version|o|2.7}}
| colspan="2" | 2020-01-01{{efn|group=version-table|Official support ended on 2020-01-01, but a final release of the code as it appeared on 2020-01-01 was released on 2020-04-20 as version 2.7.18.}} |
{{Version|o|3.0}} |
{{Version|o|3.1}} |
{{Version|o|3.2}}
| 2013-05-13{{efn|group=version-table|name=last-bug-release}} |
{{Version|o|3.3}}
| 2014-03-08{{efn|group=version-table|name=last-bug-release}} |
{{Version|o|3.4}} |
{{Version|o|3.5}} |
{{Version|o|3.6}}
| 2018-12-24{{efn|group=version-table|name=last-bug-release}} |
{{Version|o|3.7}}
| 2020-06-27{{efn|group=version-table|name=last-bug-release}} |
{{Version|o|3.8}}
| 2021-05-03{{efn|group=version-table|name=last-bug-release}} |
{{Version|co|3.9}}{{Update after|2025|10}}
| 2022-05-17{{efn|group=version-table|name=last-bug-release}} |
{{Version|co|3.10}}{{Update after|2026|10}}
| 2023-04-05{{efn|group=version-table|name=last-bug-release}} |
{{Version|co|3.11}}{{Update after|2027|10}}
| 2024-04-02{{efn|group=version-table|name=last-bug-release}} |
{{Version|co|3.12}}
|3.12.10{{Update after|2028|10}} | 2025-04-08{{efn|group=version-table|name=last-bug-release}} |
{{Version|c|3.13}}
| 3.13.3{{Update after|2025|06|03}} |
{{Version|cp|3.14}}
| 3.14.0b1{{cite web |last1=van Kemenade |first1=Hugo |title=PEP 745 – Python 3.14 Release Schedule |url=https://peps.python.org/pep-0745/ |website=Python Enhancement Proposals (PEPs) |access-date=7 May 2025|language=en |date=24 April 2024 |url-status=live}}{{Update after|2025|05|27}} | 2025-10-07{{Update after|2025|10|07}} |
{{Version|p|3.15}}
| 3.15.0a0{{Cite web |last=van Kemenade |first=Hugo |date=April 26, 2025 |title=PEP 790 – Python 3.15 Release Schedule |url=https://peps.python.org/pep-0790/ |access-date=2025-05-07 |website=Python Enhancement Proposals (PEPs) |language=en}}{{update after|2025|10|14}} | 2026-10-01{{Update after|2026|10|01}} |
{{smalldiv|1=
{{Version|l|show=111111}}
Italics indicates the latest micro version of currently supported versions as of 2025-05-07{{Update after|2025|06|03}}.
}}
Table notes:
{{notelist|group=version-table}}
= Support =
{{#tag: timeline |
ImageSize = width:800 height:auto barincrement:20
PlotArea = left:40 right:10 bottom:30 top:10
DateFormat = dd/mm/yyyy
Period = from:01/01/1990 till:01/01/2032
TimeAxis = orientation:horizontal
Colors =
id:in_development value:rgb(0.76, 0.90, 0.96) legend:In_development
id:pre_release value:rgb(1, 0.82, 0.63) legend:Pre_release
id:in_support value:rgb(0.83, 0.96, 0.71) legend:In_support
id:maintenance value:rgb(1, 0.97, 0.78) legend:Maintenance
id:out_of_support value:rgb(0.99, 0.70, 0.67) legend:Out_of_support
id:colgrmaj value:gray(0.5)
id:colgrmin value:gray(0.8)
ScaleMajor = gridcolor:colgrmaj unit:year increment:5 start:01/01/1990
ScaleMinor = gridcolor:colgrmin unit:year increment:1 start:01/01/1990
Define $now = {{CURRENTDAY2}}/{{CURRENTMONTH}}/{{CURRENTYEAR}}
LineData=
at:$now color:red width:0.2
PlotData=
mark:(line,black)
width:16
fontsize:S
shift:(-6, -4)
bar:3.15 from:01/10/2026 till:01/10/2031 text:3.15 color:in_development
bar:3.14 from:01/10/2025 till:01/10/2030 text:3.14 color:pre_release
bar:3.13 from:01/10/2024 till:01/10/2029 text:3.13 color:in_support
bar:3.12 from:02/10/2023 till:01/10/2028 text:3.12 color:maintenance
bar:3.11 from:24/10/2022 till:01/10/2027 text:3.11 color:maintenance
bar:3.10 from:04/10/2021 till:01/10/2026 text:3.10 color:maintenance
bar:3.9 from:05/10/2020 till:01/10/2025 text:3.9 color:maintenance
bar:3.8 from:14/10/2019 till:07/10/2024 text:3.8 color:out_of_support
bar:3.7 from:27/06/2018 till:06/06/2023 text:3.7 color:out_of_support
bar:3.6 from:23/12/2016 till:23/12/2021 text:3.6 color:out_of_support
bar:3.5 from:13/09/2015 till:30/09/2020 text:3.5 color:out_of_support
bar:3.4 from:16/03/2014 till:18/03/2019 text:3.4 color:out_of_support
bar:3.3 from:29/09/2012 till:29/09/2017 text:3.3 color:out_of_support
bar:3.2 from:20/02/2011 till:20/02/2016 text:3.2 color:out_of_support
bar:3.1 from:27/06/2009 till:01/06/2012 text:3.1 color:out_of_support
bar:3.0 from:03/12/2008 till:27/06/2009 text:3.0 color:out_of_support
bar:2.7 from:03/07/2010 till:01/01/2020 text:2.7 color:out_of_support
bar:2.6 from:01/10/2008 till:29/10/2013 text:2.6 color:out_of_support
bar:2.5 from:19/09/2006 till:26/05/2011 text:2.5 color:out_of_support
bar:2.4 from:30/11/2004 till:19/12/2008 text:2.4 color:out_of_support
bar:2.3 from:29/06/2003 till:11/03/2008 text:2.3 color:out_of_support
bar:2.2 from:21/12/2001 till:30/05/2003 text:2.2 color:out_of_support
bar:2.1 from:15/04/2001 till:09/04/2002 text:2.1 color:out_of_support
bar:2.0 from:16/10/2000 till:22/06/2001 text:2.0 color:out_of_support
bar:1.6 from:14/04/1999 till:16/10/2000 text:1.6 color:out_of_support
bar:1.5 from:03/01/1998 till:13/04/1999 text:1.5 color:out_of_support
bar:1.4 from:25/10/1996 till:03/01/1998 text:1.4 color:out_of_support
bar:1.3 from:13/10/1995 till:25/10/1996 text:1.3 color:out_of_support
bar:1.2 from:13/04/1995 till:13/10/1995 text:1.2 color:out_of_support
bar:1.1 from:11/10/1994 till:13/04/1995 text:1.1 color:out_of_support
bar:1.0 from:26/01/1994 till:11/10/1994 text:1.0 color:out_of_support
bar:0.9 from:20/02/1991 till:26/01/1994 text:0.9 color:out_of_support
}}
See also
References
{{reflist|1=30em|refs=
}}
External links
- [http://python-history.blogspot.com/ Guido Van Rossum blog on Python's History]
{{DEFAULTSORT:History Of Python}}