History of Python: Difference between revisions

Content deleted Content added
m vbump
 
(530 intermediate revisions by more than 100 users not shown)
Line 1:
{{short description|History of the Python programming language}}
[[Image:PythonProgLogo.png|thumb|Python logo, 1990s–2005.]]
{{Use mdy dates|date=September 2015}}
{{main|Python (programming language)}}
{{use American English|date=May 2024}}
The '''history of the Python programming language''' dates back to the late 1980s.
{{Missing information|prominent features of versions after 3.0|date=March 2024}}
[[File:Python logo 1990s.svg|thumb|Old Python logo, 1990s–2006]]
[[File:Python logo and wordmark.svg|alt=|thumb|New Python logo, 2006–present]]
[[File:Guido-portrait-2014.jpg|thumb|Guido van Rossum in 2014]]
 
The [[programming language]] [[Python (programming language)|Python]] was conceived in the late 1980s,<ref name="venners-interview-pt-1">{{cite web |url = http://www.artima.com/intv/pythonP.html |title = The Making of Python |accessdate access-date=March 2007-03-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}}</ref> and its implementation was started in December 1989<ref name="timeline-of-python">{{cite web|url = http://python-history.blogspot.com/2009/01/brief-timeline-of-python.html|title = A Brief Timeline of Python|accessdate = 2009-01-20|publisher = Guido van Rossum}}</ref> by [[Guido van Rossum]] at [[Centrum Wiskunde & Informatica|CWI]] in [[the Netherlands]] as a successor to the [[ABC (programming language)|ABC]] capable of [[exception handling]] and interfacing with the [[Amoeba distributed (operating system)|Amoeba operating system]].<ref name = "faq-created">{{ cite web | url = httphttps://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 accessdate22, 2007 |archive-date=February 200723, 2008 |archive-03url=https://web.archive.org/web/20080223222507/http://www.python.org/doc/faq/general/#why-22was-python-created-in-the-first-place |url-status=live}}</ref> Van Rossum iswas Python's principal author, and hishad continuinga central role in deciding the direction of Python is(as reflected in the title given to him by the Python community, [[Benevolent Dictatordictator Forfor Lifelife|''Benevolent Dictator for Life'' (BDFL)]]<ref>{{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}}</ref><ref>{{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}}</ref>) until stepping down as leader on July 12, 2018.<ref>{{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}}</ref> Python was named after the [[BBC TV]] show ''[[Monty Python's Flying Circus]]''.<ref>{{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}}</ref>
 
Python 2.0 was released on 16 October 16, 2000, with many major new features, includingsuch aas full[[list comprehension]]s, [[Garbagecycle detection|cycle-detecting]] [[garbage collection (computer science)|garbage collector]], [[reference counting]], [[memory management]] and support for [[unicodeUnicode]]. However, thealong mostwith importanta change was to the development process itself, with a shift to a more transparent and community-backed process.<ref name="newin-2.0">{{cite web |url = http://www.amk.ca/python/2.0/ |title = What's New in Python 2.0 |author first1=Andrew A.M. |last1=Kuchling and |first2=Moshe |last2=Zadka |accessdate access-date=March 2007-03-22}}</ref> Python 3.0, a2007 major, backwards|archive-incompatibledate=December release14, was2009 released on 3 December 2008<ref name|archive-url="3.0-release">[httphttps://pythonweb.archive.org/downloadweb/releases20091214142515/3.0/ Python 3.0 release]</ref> after a long period of testing. Many of its major features have also been [[backport]]ed to the backwards-compatible Python 2.6 and 2.7.<ref name="pep-3000">[http://www.pythonamk.orgca/devpython/peps/pep-3000/ PEP 3000]2.0}}</ref>
 
Python 3.0, a major, backwards-incompatible release, was released on December 3, 2008<ref name="3.0-release">{{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}}</ref> after a long period of testing. Many of its major features were also [[backport]]ed to the backwards-compatible Python versions 2.6 and 2.7<ref name="pep-3000" /> until support for Python 2 finally ceased at the beginning of [[2020]]. Releases of Python&nbsp;3 include the <code>2to3</code> utility, which automates the translation of Python&nbsp;2 code to Python&nbsp;3.<ref>{{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}}</ref>
==First publication==
In February 1991, [[Guido_van_Rossum|Van Rossum]] published the code (labeled version 0.9.0) to alt.sources.<ref name="svn-history">{{ cite web | title = HISTORY | url = http://svn.python.org/view/*checkout*/python/trunk/Misc/HISTORY | work = Python source distribution | publisher = Python Foundation | accessdate = 2007-03-21 }}</ref> Already present at this stage in development were classes with inheritance, exception handling, functions, and the core datatypes of <code>list</code>, <code>dict</code>, <code>str</code> and so on. Also in this initial release was a [[module system]] borrowed from [[Modula-3]]; Van Rossum describes the module as "one of Python's major programming units".<ref name="venners-interview-pt-1" /> Python's exception model also resembles Modula-3's, with the addition of an <code>else</code> clause.<ref name = "faq-created" /> In 1994 [news://comp.lang.python comp.lang.python], the primary discussion forum for Python, was formed, marking a milestone in the growth of Python's userbase.<ref name="venners-interview-pt-1" />
 
{{As of|2025|08|9|since=n}}, Python 3.13.6 is the latest stable release. This version currently receives full bug-fix and security updates, while Python 3.12—released in October 2023—had active bug-fix support only until April 2025, and since then only security fixes. Python 3.9<ref>{{Cite web |last=Langa |first=Łukasz |date=2022-05-17 |title=Python 3.9.13 is now available |url=https://pythoninsider.blogspot.com/2022/05/python-3913-is-now-available.html |access-date=2022-05-21 |website=Python Insider |archive-date=17 May 2022 |archive-url=https://web.archive.org/web/20220517173546/https://pythoninsider.blogspot.com/2022/05/python-3913-is-now-available.html |url-status=live}}</ref> is the oldest supported version of Python (albeit in the 'security support' phase), because Python 3.8 has become an end-of-life product.<ref>{{Cite web |title=Status of Python versions |url=https://devguide.python.org/versions/ |access-date=2024-10-07 |website=Python Developer's Guide |language=en}}</ref><ref>{{Cite web |date=8 October 2024 |title=Python |url=https://endoflife.date/python |access-date=2024-11-20 |website=endoflife.date |language=en-US }}</ref>
==Version release dates==
 
==Early history==
Release dates for the major and minor versions:<ref>http://www.python.org/download/releases</ref>
Van Rossum first published the code (for Python version 0.9.1) to alt.sources in February 1991.<ref>{{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}}</ref><ref>{{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}}</ref> Several features of the language were already present at this stage, among them [[Inheritance (object-oriented programming)|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".<ref name="venners-interview-pt-1" /> Python's exception model also resembled Modula-3's, with the addition of an {{code|else}} clause.<ref name="faq-created" /> In 1994 [news://comp.lang.python comp.lang.python], the primary [[discussion forum]] for Python, was formed.<ref name="venners-interview-pt-1" />
 
==Version 1==
* Python 1.0 - January 1994
Python reached version 1.0 in January 1994. The major new features included in this release were the functional programming tools <code>[[Anonymous function#Python|lambda]]</code>, <code>[[Map (higher-order function)|map]]</code>, <code>[[Filter (higher-order function)|filter]]</code> and <code>[[Fold (higher-order function)|reduce]]</code>. Van Rossum stated that "Python acquired lambda, reduce(), filter() and map(), courtesy of a [[Lisp (programming language)|Lisp]] hacker who missed them and submitted working [[Patch (computing)|patches]]".<ref>{{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}}</ref>
** Python 1.5 - December 31, 1997
** Python 1.6 - September 5, 2000
* Python 2.0 - October 16, 2000
** Python 2.1 - April 17, 2001
** Python 2.2 - December 21, 2001
** Python 2.3 - July 29, 2003
** Python 2.4 - November 30, 2004
** Python 2.5 - September 19, 2006
** Python 2.6 - October 1, 2008
** Python 2.7 - July 3, 2010
* Python 3.0 - December 3, 2008
** Python 3.1 - June 27, 2009
** Python 3.2 - February 20, 2011
** Python 3.3 - September 29, 2012
 
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|Reston]], [[Virginia]] from where he released several versions.
==Version 1.0==
Python reached version 1.0 in January 1994. The major new features included in this release were the functional programming tools <code>[[lambda calculus|lambda]]</code>, <code>[[Map (higher-order function)|map]]</code>, <code>[[Filter (higher-order function)|filter]]</code> and <code>[[Fold (higher-order function)|reduce]]</code>. Van Rossum stated that "Python acquired lambda, reduce(), filter() and map(), courtesy of (I believe) a [[Lisp (programming language)|Lisp]] hacker who missed them and submitted working patches".<ref name="reduce-fate">{{cite web|url = http://www.artima.com/weblogs/viewpost.jsp?thread=98196|title = The fate of reduce() in Python 3000|author = Guido van Rossum|accessdate = 2007-03-22|publisher = Artima Developer}}</ref>
 
By version 1.4, Python had acquired several new features. Notable among these are the Modula-3 inspired [[keyword argument]]s (which are also similar to [[Common Lisp]]'s keyword arguments) and built-in support for [[complex number]]s. Also included is a basic form of [[data hiding]] by [[name mangling]], though this is easily bypassed.<ref>{{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}}</ref>
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|Reston]], [[Virginia]] whence he released several versions.
 
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]].<ref>{{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}}</ref> {{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.<ref>{{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}}</ref>
By version 1.4, Python had acquired several new features. Notable among these are the Modula-3 inspired [[keyword argument]]s (which are also similar to [[Common Lisp]]'s keyword arguments) and built-in support for [[complex number]]s. Also included is a basic form of [[data hiding]] by [[name mangling]], though this is easily bypassed.<ref>{{cite web|url=http://www.amk.ca/python/writing/12-14|title=LJ #37: Python 1.4 Update|accessdate=2007-04-29}}</ref>
 
===BeOpen===
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]].<ref>{{cite web|url = http://www.python.org/doc/essays/cp4e.html|author = Guido van Rossum|title = Computer Programming for Everybody|accessdate = 2007-03-22}}</ref> {{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, reaching out to non-programmers is not an active concern.<ref>{{cite web|url = http://www.python.org/cp4e/|title = Computer Programming for Everybody|accessdate = 2007-03-22|publisher = Python Software Foundation}}</ref>
In 2000, the Python core development team moved to BeOpen.com<ref>{{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}}</ref> to form the BeOpen PythonLabs team.<ref>{{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 &#124; Your digital insurance partner}}</ref><ref>{{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}}</ref> 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.<ref name="newin-2.0" /> 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 [[Zope|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 [[law]]s 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.<ref name="lib-history">{{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}}</ref>
==BeOpen==
In 2000, the Python core development team moved to [[BeOpen.com]] to form the BeOpen [[PythonLabs]] team. 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.<ref name="newin-2.0" /> 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 [[Zope|Digital Creations]].
 
==Version 2==
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 GPL]]. 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.<ref name="lib-history">{{cite web|url = http://www.python.org/doc/2.5/lib/node951.html|title = History of the software|work = Python Library Reference|accessdate = 2007-03-22}}</ref>
Python 2.0, released October 2000,<ref name="newin-2.0" /> introduced [[list comprehension]]s, 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.<ref name="newin-2.0" />
 
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]].<ref name="lib-history" /> The release included a change to the language specification to support nested scopes, like other [[static scoping|statically scoped]] languages.<ref name="pep-0227" /> (The feature was turned off by default, and not required, until Python 2.2.)
==Version 2.0==
Python 2.0 introduced [[list comprehension]]s, a feature borrowed from the [[functional programming]] languages [[SETL]] and [[Haskell (programming language)|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 collection (computer science)|garbage collection]] system capable of collecting reference cycles.<ref name="newin-2.0" />
 
Python 2.2 was released in December 2001;<ref>{{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}}</ref> a major innovation was the unification of Python's types (types written in [[C (programming language)|C]]) and classes (types written in Python) into one hierarchy. This single unification made Python's object model purely and consistently object oriented.<ref>{{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}}</ref> Also added were [[generator (computer science)|generator]]s which were inspired by [[Icon (programming language)|Icon]].<ref name="pep-0255" />
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 non-profit organization formed in 2001, modeled after the [[Apache Software Foundation]].<ref name="lib-history" /> The release included a change to the language specification to support nested scopes, like other [[static scoping|statically scoped]] languages.<ref name="pep-227">{{cite web|url = http://www.python.org/dev/peps/pep-0227/|title = Statically Nested Scopes|author = Jeremy Hylton|accessdate = 2007-03-22}}</ref> (The feature was turned off by default, and not required, until Python 2.2.)
 
{{multiple images
A major innovation in Python 2.2 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.<ref>{{cite web |url= http://www.python.org/doc/2.2.3/whatsnew/sect-rellinks.html|title= PEPs 252 and 253: Type and Class Changes|accessdate=2008-09-05 |author= A.M. Kuchling|date= 2001-12-21|work= What's New in Python 2.2|publisher= Python Foundation}}</ref> Also added were [[generator (computer science)|generator]]s which were inspired by [[Icon (programming language)|Icon]].<ref name="pep-255">{{cite web |url= http://www.python.org/doc/2.2.3/whatsnew/node5.html|title= PEP 255: Simple Generators|accessdate=2008-09-05 |author= A.M. Kuchling|date= 2001-12-21|work= What's New in Python 2.2|publisher= Python Foundation}}</ref>
| 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<ref>{{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}}</ref> and introduced the {{code|with}} statement, which encloses a code block within a context manager (for example, acquiring a [[lock (computer science)|lock]] before the block of code is run and releasing the lock afterwards, or opening a [[Computer file|file]] and then closing it), allowing [[resource acquisition is initialization]] (RAII)-like behavior and replacing a common try/finally idiom.<ref>{{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}}</ref>
 
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.<ref name="pep-0361" /><ref name="pep-3000" /> Similarly, Python 2.7 coincided with and included features from Python 3.1,<ref>{{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}}</ref> which was released on June 26, 2009.
==Version 3.0==
Parallel 2.x and 3.x releases then ceased, and Python 2.7 was the last release in the 2.x series.<ref name="pep-0404" /> 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.<ref>{{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}}</ref> 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.<ref>{{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}}</ref> This marked the [[End-of-life product|end-of-life]] of Python 2.<ref name="pep-0373" />
Python 3.0 (also called "Python 3000" or "Py3K") was designed to rectify certain fundamental design flaws in the language (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".
 
===Philosophy=Version 3==
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 "There should be one— <!-- if you intend to correct the spacings on the em dashes, leave it alone, it's a tongue in cheek in the original philosophy by Tim Peters -->and preferably only one —obvious way to do it".
 
{{redirect|Python 3|the Israeli missile|Python (missile)#Python-3}}
Nonetheless, Python 3.0 remained a [[Multi-paradigm programming language|multi-paradigm language]]. Coders still had options among [[Object-oriented|object-orientation]], [[structured programming]], [[functional programming]] and other paradigms, but within such broad choices, the details were intended to be more obvious in Python 3.0 than they were in Python 2.x.
 
Python 3.0 (also called "Python 3000" or "Py3K") was released on December 3, 2008.<ref name="3.0-release" /> 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".<ref>{{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}}</ref>
===Timeline and compatibility===
Python 3.0 was released on December 3, 2008.<ref name="3.0-release"/>
The Python 2.x and Python 3.x series were planned to coexist for several releases in parallel, with the 2.x series existing largely for compatibility and with some new features being backported from the 3.x series.<ref name="pep-3000" />
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.<ref name="pep-361">{{cite web |url=http://www.python.org/dev/peps/pep-0361/ |title=PEP 361 -- Python 2.6 and 3.0 Release Schedule |author1=Neal Norwitz |author2=Barry Warsaw |date=2006-06-29 |accessdate=2012-10-07 }}</ref>
Similarly, Python 2.7 coincided with and included features from Python 3.1,<ref name="whatsnew2.7">{{cite web |url=http://docs.python.org/release/2.7/whatsnew/2.7.html |title=What’s New in Python 2.7 |author=A.M. Kuchling |date=2010-07-03 |accessdate=2012-10-07 |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. }}</ref> which was released on June 26, 2009.
Python 2.7 was the last release in the 2.x series;<ref name="pep-404">{{cite web |url=http://www.python.org/dev/peps/pep-0404/ |title=PEP 404 -- Python 2.8 Un-release Schedule |author=Barry Warsaw |date=2011-11-09 |accessdate=2012-10-07 }}</ref> parallel releases ceased as of Python 3.2.
 
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— <!-- if you intend to correct the spacings on the em dashes, leave it alone, it's a tongue in cheek in the original philosophy by Tim Peters -->and preferably only one —obvious way to do it".
Python 3.0 broke [[backward compatibility]]. There was no requirement that Python 2.x code would run unmodified on Python 3.0. There were basic changes such as changing the print statement into a print function (so any use of print as a statement will cause the program to fail), and switching to Unicode for all text strings. Python's [[dynamic typing]] combined with the plans to change the semantics of certain methods of dictionaries, for example, made perfect [[source-to-source compiler|mechanical translation]] from Python 2.x to Python 3.0 very difficult. However, a tool called "2to3" could do most of the job of translation, pointing out areas of uncertainty using comments or warnings. Even in an alpha stage, 2to3 appeared to be fairly successful at performing the translation.<ref>Sam Ruby, [http://intertwingly.net/blog/2007/09/01/2to3 2to3], September 1, 2007</ref> For projects requiring compatibility with both the 2.x and 3.x series, the Python development team recommended keeping one source (for the 2.x series), and producing 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.<ref name="pep-3000" />
 
Nonetheless, Python 3.0 remained a [[Multi-paradigm programming language|multi-paradigm language]]. Coders could still follow [[Object-oriented programming|object-oriented]], [[structured programming|structured]], and [[functional programming|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.<ref>{{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}}</ref> Python's [[dynamic typing]] combined with the plans to change the semantics of certain methods of dictionaries, for example, made perfect [[source-to-source compiler|mechanical translation]] from Python 2.x to Python 3.0 very difficult. A tool called "<code>2to3</code>" does the parts of translation that can be done automatically. At this, <code>2to3</code> 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.<ref>{{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}}</ref> 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 <code>2to3</code>. Edits to the Python 3.x code were discouraged for so long as the code needed to run on Python 2.x.<ref name="pep-3000" /> 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.<ref>{{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}}</ref>
 
===Features===
Some of the major changes scheduledincluded for Python 3.0 were:
* Changing <code>print</code> 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 this can be enabled by entering <code>from __future__ import print_function</code>.<ref>[http://www.python.org/dev/peps/pep-3105/ PEP 3105]</ref>
* Moving <code>reduce</code> (but not <code>map</code> or <code>filter</code>) out of the built-in namespace and into functools (the rationale being that operations using ''reduce'' are expressed more clearly using an accumulation loop);<ref>[http://www.artima.com/weblogs/viewpost.jsp?thread=211200 Thread on Artima programmer blog]</ref>
* Adding support for optional function annotations that can be used for informal type declarations or other purposes;<ref>[http://www.python.org/dev/peps/pep-3107/ PEP 3197]</ref>
* Unifying the <code>str</code>/<code>unicode</code> types, representing text, and introducing a separate immutable <code>bytes</code> type; and a mostly corresponding mutable <code>bytearray</code> type, both of which represent arrays of [[byte]]s;<ref>[http://www.python.org/dev/peps/pep-3137/ PEP 3137]: Immutable Bytes and Mutable Buffer</ref>
* Removing backward-compatibility features, including old-style classes, integer-truncating division, string exceptions, and implicit relative imports.
 
* Changing {{code|print}} so that it is a [[Intrinsic function|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<ref name="pep-3105" />
==Influences from other languages==
* 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
Python's core syntax and certain aspects of its philosophy are directly inherited from [[ABC (programming language)|ABC]]. [[C (programming language)|C]] provided some of Python's syntax, and the [[Bourne shell]] served as the model for an interpreter that becomes interactive when run without arguments.<ref name="98-interview">{{cite web |url=http://www.amk.ca/python/writing/gvr-interview |title=Interview with Guido van Rossum|year=1998 |month=July |accessdate=29 2007}}</ref> List comprehensions, anonymous functions, lexical closures and the map function are among the major features borrowed from functional languages, primarily dialects of [[Lisp (programming language)|Lisp]] and [[Haskell (programming language)|Haskell]].<ref name="reduce-fate" /><ref name="newin-2.0" /><ref name="pep-227" /> Generators and iterators were inspired by [[Icon (programming language)|Icon]], and were then fused with the functional programming ideas borrowed into a unified model.<ref name="pep-255" /> [[Modula-3]] was the basis of the exception model and module system.<ref name="venners-interview-pt-1" /><ref name = "faq-created" /> [[Perl]] lent Python [[regular expressions]], used for string manipulation.<ref>http://docs.python.org/library/re.html</ref> Python's standard library additions and syntactical choices were strongly influenced by [[Java (programming language)|Java]] in some cases: the <code>logging</code> package,<ref>{{cite web|url=http://www.python.org/dev/peps/pep-0282/ |title=PEP 282 - A Logging System |publisher=Python.org |date= |accessdate=2008-11-24}}</ref> introduced in version 2.3,<ref>{{cite web|url=http://www.python.org/doc/2.3/whatsnew/node9.html |title=8 PEP 282: The logging Package |publisher=Python.org |date= |accessdate=2008-11-24}}</ref> the <code>threading</code> package for [[multithreaded]] applications,<ref>http://docs.python.org/library/threading.html</ref> the [[Simple API for XML|SAX]] parser, introduced in 2.0, and the [[Python syntax and semantics#Decorators|decorator]] syntax that uses <code>@</code>,<ref>{{cite web|url=http://www.python.org/dev/peps/pep-0318/ |title=PEP 318 - Decorators for Functions and Methods |publisher=Python.org |date= |accessdate=2008-11-24}}</ref> added in version 2.4<ref>{{cite web|url=http://www.python.org/doc/2.4/whatsnew/node6.html |title=5 PEP 318: Decorators for Functions and Methods |publisher=Python.org |date= |accessdate=2008-11-24}}</ref>
* 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)<ref>{{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}}</ref><ref>{{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}}</ref>
* Adding support for optional function annotations that can be used for [[Gradual typing|informal type declarations]] or other purposes<ref name="pep-3107" />
* 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 [[byte]]s<ref name="pep-3137" />
* 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,<ref>{{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}}</ref> such as in <code>smörgåsbord</code>
 
=== Subsequent releases ===
==See also==
*[[History of software engineering]]
 
Python 3.2 defined a stable [[Application Binary Interface|ABI]], allowing extension modules to rely on functions across different Python versions.
== References ==
 
Python 3.5 added the typing module, which allows for [[type hint]]s and [[function signature]] annotation. It additionally added the [[async/await]] syntax. Furthermore, .pyo files were removed, with .pyc files representing both unoptimized and optimized [[bytecode]].
{{refs|30em}}
 
Python 3.6 followed with async [[Generator (computer programming)|generator]]s and async comprehensions ([[List comprehension|for lists]] as well as dicts and sets), as well as formatted [[string literal]]s (f-strings).<ref>{{cite web |editor1-last=Pranskevichus |editor1-first=Elvis |editor2-last=Selivanov |editor2-first=Yury |title=What’s New In Python 3.6 |url=https://docs.python.org/3/whatsnew/3.6.html |website=Python documentation |access-date=5 August 2025 |language=en |date=December 23, 2016}}</ref>
 
Python 3.10 introduced [[structural pattern matching]] via match/case statements. Additionally it provided improved error messages which "were inspired by previous work in the PyPy interpreter" and added the <code>|</code> [[union type]] operator.<ref>{{Cite web |title=What's New In Python 3.10 |url=https://docs.python.org/3/whatsnew/3.10.html |access-date=2025-06-12 |website=Python documentation |language=en}}</ref>
 
Python 3.11 expanded [[exception handling (programming)|exception handling]] functionality. Around this version, there has been a focus on making Python faster; 3.11 is claimed to be 10–60% faster than 3.10,<ref>{{Cite web |title=Python 3.11 released [LWN.net] |author=corbet |work=lwn.net |date=24 October 2022 |access-date=15 November 2022 |url=https://lwn.net/Articles/912216/}}</ref> and 3.12 increases by an additional 5%.
 
Python 3.12 added the new keyword <code>type</code> and improved error messages.
 
Python 3.13 added an experimental [[Just-in-time compilation|just-in-time (JIT) compiler]], the ability to disable the [[global interpreter lock]], a new and improved interactive interpreter ([[read–eval–print loop|REPL]]), and an incremental [[Garbage collection (computer science)|garbage collector]].<ref>{{Cite web |title=What's New In Python 3.13 |url=https://docs.python.org/3.13/whatsnew/3.13.html#experimental-jit-compiler |access-date=2024-04-30 |website=Python documentation |language=en}}</ref>
 
Starting with Python 3.13, it and later versions receive two years of full support (increased from one and a half years), followed by three years of security support; this is the same total duration of support as previously.
 
Python 3.14.0 is now{{as of?|date=August 2025}} in the [[release candidate]] 1 phase. It introduces e.g. a new opt-in interpreter, up to 30% faster.{{cn|date=August 2025}}
 
Python 3.15 will "Make [[UTF-8]] mode default";<ref>{{Cite web |title=PEP 686 – Make UTF-8 mode default {{!}} peps.python.org |url=https://peps.python.org/pep-0686/ |access-date=2024-11-20 |website=Python Enhancement Proposals (PEPs) |language=en}}</ref> This mode is supported in all current Python versions, but it currently must be opted into. UTF-8 is already used by default on [[Microsoft Windows|Windows]] (and other [[operating system]]s) for most purposes, but an exception is opening files. Enabling UTF-8 also makes code fully [[Cross-platform software|cross-platform]].
 
==== Security ====
 
Security updates were expedited in 2021 and again twice in 2022. More issues were fixed in 2023 and in September 2024 (for Python versions 3.8.20 through 3.12.6)—all versions (including 2.7)<ref>{{Cite web|title=CVE-2021-3177 |url=https://access.redhat.com/security/cve/cve-2021-3177|access-date=2021-02-26|website=Red Hat Customer Portal |archive-date=6 March 2021|archive-url=https://web.archive.org/web/20210306183700/https://access.redhat.com/security/cve/cve-2021-3177|url-status=live}}</ref> had been insecure because of issues leading to possible [[remote code execution]]<ref>{{Cite web|title=CVE-2021-3177|url=https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3177|access-date=2021-02-26|website=CVE|archive-date=27 February 2021|archive-url=https://web.archive.org/web/20210227192918/https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3177|url-status=live}}</ref> and [[cache poisoning|web-cache poisoning]].<ref>{{Cite web|title=CVE-2021-23336|url=https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-23336|access-date=2021-02-26|website=CVE|archive-date=24 February 2021|archive-url=https://web.archive.org/web/20210224160700/https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-23336|url-status=live}}</ref>
 
==Table of versions==
Releases before numbered versions:
* Implementation started{{snd}}December, 1989<ref name="timeline-of-python" />
* Internal releases at [[Centrum Wiskunde & Informatica]]{{snd}}1990<ref name="timeline-of-python" />
 
{| class="wikitable sortable" style="text-align:center;"
|-
! Version
! Latest<br /> micro version
! Release date
! End of full support
! End of security fixes
|-
| {{Version|o|0.9}}
| 0.9.9<ref name="timeline-of-python" />
| 1991-02-20<ref name="timeline-of-python" />
| colspan="2" | 1993-07-29{{efn|group=version-table|name=last-release|Date of last micro release.}}<ref name="timeline-of-python" />
|-
| {{Version|o|1.0}}
| 1.0.4<ref name="timeline-of-python" />
| 1994-01-26<ref name="timeline-of-python" />
| colspan="2" | 1994-07-14{{efn|group=version-table|name=last-release}}<ref name="timeline-of-python" />
|-
| {{Version|o|1.1}}
| 1.1.1<ref name="timeline-of-python" />
| 1994-10-11<ref name="timeline-of-python" />
| colspan="2" | 1994-11-10{{efn|group=version-table|name=last-release}}<ref name="timeline-of-python" />
|-
| {{Version|o|1.2}}
|
| 1995-04-13<ref name="timeline-of-python" />
| colspan="2" | Unsupported
|-
| {{Version|o|1.3}}
|
| 1995-10-13<ref name="timeline-of-python" />
| colspan="2" | Unsupported
|-
| {{Version|o|1.4}}
|
| 1996-10-25<ref name="timeline-of-python" />
| colspan="2" | Unsupported
|-
| {{Version|o|1.5}}
| 1.5.2<ref name="releases" />
| 1998-01-03<ref name="timeline-of-python" />
| colspan="2" | 1999-04-13{{efn|group=version-table|name=last-release}}<ref name="timeline-of-python" />
|-
| {{Version|o|1.6}}
| 1.6.1<ref name="releases" />
| 2000-09-05<ref name="pep-0160" />
| colspan="2" | 2000–09{{efn|group=version-table|name=last-release}}<ref name="releases" />
|-
| {{Version|o|2.0}}
| 2.0.1<ref name="downloads" />
| 2000-10-16<ref name="pep-0200" />
| colspan="2" | 2001-06-22{{efn|group=version-table|name=last-release}}<ref name="downloads" />
|-
| {{Version|o|2.1}}
| 2.1.3<ref name="downloads" />
| 2001-04-15<ref name="pep-0226" />
| colspan="2" | 2002-04-09{{efn|group=version-table|name=last-release}}<ref name="downloads" />
|-
| {{Version|o|2.2}}
| 2.2.3<ref name="downloads" />
| 2001-12-21<ref name="pep-0251" />
| colspan="2" | 2003-05-30{{efn|group=version-table|name=last-release}}<ref name="downloads" />
|-
| {{Version|o|2.3}}
| 2.3.7<ref name="downloads" />
| 2003-06-29<ref name="pep-0283" />
| colspan="2" | 2008-03-11{{efn|group=version-table|name=last-release}}<ref name="downloads" />
|-
| {{Version|o|2.4}}
| 2.4.6<ref name="downloads" />
| 2004-11-30<ref name="pep-0320" />
| colspan="2" | 2008-12-19{{efn|group=version-table|name=last-release}}<ref name="downloads" />
|-
| {{Version|o|2.5}}
| 2.5.6<ref name="downloads" />
| 2006-09-19<ref name="pep-0356" />
| colspan="2" | 2011-05-26{{efn|group=version-table|name=last-release}}<ref name="downloads" />
|-
| {{Version|o|2.6}}
| 2.6.9<ref name="pep-0361" />
| 2008-10-01<ref name="pep-0361" />
| 2010-08-24{{efn|group=version-table|name=last-bug-release|Date of last non security only release.}}<ref name="pep-0361" />
| 2013-10-29<ref name="pep-0361" />
|-
| {{Version|o|2.7}}
| 2.7.18<ref name="pep-0373" />
| 2010-07-03<ref name="pep-0373" />
| 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.<ref name="pep-0373" />}}<ref name="pep-0373" />
|-
| {{Version|o|3.0}}
| 3.0.1<ref name="downloads" />
| 2008-12-03<ref name="pep-0361" />
| colspan="2" | 2009-06-27<ref name="devcycle" />
|-
| {{Version|o|3.1}}
| 3.1.5<ref name="pep-0375" />
| 2009-06-27<ref name="pep-0375" />
| 2011-06-12<ref>{{cite mailing list |url=https://mail.python.org/archives/list/python-announce-list@python.org/message/6HBADVUPFMK3TUJVZWAMYIO2JP4WZ7UT/ |title=[RELEASED] Python 3.1.4 |date=2011-06-12 |access-date=2019-11-29 |mailing-list=python-announce |last=Peterson |first=Benjamin |archive-date=December 6, 2021 |archive-url=https://web.archive.org/web/20211206114447/https://mail.python.org/archives/list/python-announce-list@python.org/message/6HBADVUPFMK3TUJVZWAMYIO2JP4WZ7UT/ |url-status=live}}</ref>
| 2012-04-06<ref name="pep-0375" />
|-
| {{Version|o|3.2}}
| 3.2.6<ref name="pep-0392" />
| 2011-02-20<ref name="pep-0392" />
| 2013-05-13{{efn|group=version-table|name=last-bug-release}}<ref name="pep-0392" />
| 2016-02-20<ref name="pep-0392" />
|-
| {{Version|o|3.3}}
| 3.3.7<ref name="pep-0398" />
| 2012-09-29<ref name="pep-0398" />
| 2014-03-08{{efn|group=version-table|name=last-bug-release}}<ref name="pep-0398" />
| 2017-09-29<ref name="pep-0398" />
|-
| {{Version|o|3.4}}
| 3.4.10<ref name="pep-0429" />
| 2014-03-16<ref name="pep-0429" />
| 2017-08-09<ref>{{cite mailing list |url=https://mail.python.org/archives/list/python-announce-list@python.org/message/S6OZYIRIRG7ZLSTFLXA36KUQ56LV2DH6/ |title=[RELEASED] Python 3.4.7 is now available |date=2017-08-09 |access-date=2019-11-29 |mailing-list=python-announce |last=Hastings |first=Larry |archive-date=December 6, 2021 |archive-url=https://web.archive.org/web/20211206114413/https://mail.python.org/archives/list/python-announce-list@python.org/message/S6OZYIRIRG7ZLSTFLXA36KUQ56LV2DH6/ |url-status=live}}</ref>
| 2019-03-18{{efn|group=version-table|name=last-release}}<ref name="pep-0429" />
|-
| {{Version|o|3.5}}
| 3.5.10<ref name="pep-0478" />
| 2015-09-13<ref name="pep-0478" />
| 2017-08-08<ref>{{cite mailing list |url=https://mail.python.org/archives/list/python-announce-list@python.org/message/HOIDGMHH35YLRM72UKOWI4CVXPXH3DJ2/ |title=[RELEASED] Python 3.5.4 is now available |date=2017-08-08 |access-date=2019-11-29 |mailing-list=python-announce |last=Hastings |first=Larry |archive-date=December 6, 2021 |archive-url=https://web.archive.org/web/20211206101037/https://mail.python.org/archives/list/python-announce-list@python.org/message/HOIDGMHH35YLRM72UKOWI4CVXPXH3DJ2/ |url-status=live}}</ref>
| 2020-09-30<ref name="pep-0478" />
|-
| {{Version|o|3.6}}
| 3.6.15<ref name="pep-0494" />
| 2016-12-23<ref name="pep-0494" />
| 2018-12-24{{efn|group=version-table|name=last-bug-release}}<ref name="pep-0494" />
| 2021-12-23<ref name="pep-0494" />
|-
| {{Version|o|3.7}}
| 3.7.17<ref name="pep-0537" />
| 2018-06-27<ref name="pep-0537" />
| 2020-06-27{{efn|group=version-table|name=last-bug-release}}<ref name="pep-0537" />
| 2023-06-06<ref name="pep-0537" />
|-
| {{Version|o|3.8}}
| 3.8.20<ref name="pep-0569" />
| 2019-10-14<ref name="pep-0569" />
| 2021-05-03{{efn|group=version-table|name=last-bug-release}}<ref name="pep-0569" />
| 2024-10-07<ref name="pep-0569" />
|-
| {{Version|co|3.9}}{{Update after|2025|10}}
| ''3.9.23''<ref name="pep-0596" />
| 2020-10-05<ref name="pep-0596" />
| 2022-05-17{{efn|group=version-table|name=last-bug-release}}<ref name="pep-0596" />
| 2025-10<ref name="pep-0596" /><ref name="pep-0602" />{{Update after|2025|10}}
|-
| {{Version|co|3.10}}{{Update after|2026|10}}
| ''3.10.18''<ref name="pep-0619" />
| 2021-10-04<ref name="pep-0619" />
| 2023-04-05{{efn|group=version-table|name=last-bug-release}}<ref name="pep-0619" />
| 2026-10<ref name="pep-0619" />{{Update after|2026|10}}
|-
| {{Version|co|3.11}}{{Update after|2027|10}}
|''3.11.13''<ref name="pep-0664" />
| 2022-10-24<ref name="pep-0664" />
| 2024-04-02{{efn|group=version-table|name=last-bug-release}}<ref name="pep-0664" />
| 2027-10<ref name="pep-0664" />{{Update after|2027|10}}
|-
| {{Version|co|3.12}}{{Update after|2028|10}}
|''3.12.11''<ref name="pep-0693" />
| 2023-10-02<ref name="pep-0693" />
| 2025-04-08{{efn|group=version-table|name=last-bug-release}}<ref name="pep-0693" />
| 2028-10<ref name="pep-0693" />{{Update after|2028|10}}
|-
| {{Version|c|3.13}}
| ''3.13.7''<ref name="pep-0719" />{{Update after|2025|10|07}}
| 2024-10-07<ref name="pep-0719" />
| 2026-05<ref name="pep-0719" />{{Update after|2026|05}}
| 2029-10<ref name="pep-0719" />{{Update after|2029|10}}
|-
| {{Version|cp|3.14}}
| 3.14.0rc1<ref name="pep-0745">{{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 }}</ref>{{Update after|2025|08|26}}
| 2025-10-07<ref name="pep-0745" />{{Update after|2025|10|07}}
| 2027-05<ref name="pep-0745" />{{Update after|2027|05}}
| 2030-10<ref name="pep-0745" />{{Update after|2030|10}}
|-
| {{Version|p|3.15}}<!--Make preview version when in beta-->
| 3.15.0a0<ref name="pep-0790">{{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}}</ref>{{update after|2025|10|14}}
| 2026-10-01<ref name="pep-0790" />{{Update after|2026|10|01}}
| 2028-05<ref name="pep-0790" />{{Update after|2028|05}}
| 2031-10<ref name="pep-0790" />{{Update after|2031|10}}
|}
{{smalldiv|1=
{{Version|l|show=111111}}
''Italics'' indicates the latest micro version of currently supported versions as of 2025-08-06{{Update after|2025|10|07}}.
}}
 
Table notes:
{{notelist|group=version-table}}
 
=== Support ===
<!-- From Template:Version colors for cells (to match Support graph):
#FDB3AB - Old version, no longer maintained -> rgb(253, 179, 171) -> value:rgb(0.99, 0.70, 0.67)
#FEF8C6 – Older version, still maintained -> rgb(254, 248, 198) -> value:rgb(1.00, 0.97, 0.78)
#D4F4B4 – Current stable version -> rgb(212, 244, 180) -> value:rgb(0.83, 0.96, 0.71)
#FED1A0 – Latest preview version -> rgb(254, 209, 160) -> value:rgb(1.00, 0.82, 0.63)
#C1E6F5 – Future release -> rgb(193, 230, 245) -> value:rgb(0.76, 0.90, 0.96) -->
{{#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==
* [[History of software engineering]]
 
==References==
{{reflist|1=30em|refs=
<ref name="timeline-of-python">{{cite web |url=https://python-history.blogspot.com/2009/01/brief-timeline-of-python.html |title=A Brief Timeline of Python |last=van Rossum |first=Guido |author-link1=Guido van Rossum |date=2009-01-20 |access-date=2019-11-29 |archive-date=August 25, 2011 |archive-url=https://web.archive.org/web/20110825101117/http://python-history.blogspot.com/2009/01/brief-timeline-of-python.html |url-status=live}}</ref>
<ref name="downloads">{{cite web|url=https://www.python.org/downloads/|title=Download Python {{!}} Python.org|access-date=2019-11-29|archive-date=August 8, 2018|archive-url=https://web.archive.org/web/20180808035421/https://www.python.org/downloads/|url-status=live}}</ref>
<ref name="releases">{{cite web|url=https://www.python.org/download/releases|title=Releases {{!}} Python.org|access-date=2019-11-29|archive-date=December 22, 2015|archive-url=https://web.archive.org/web/20151222142552/https://www.python.org/download/releases/|url-status=live}}</ref>
<ref name="devcycle">{{cite web |url=https://devguide.python.org/devcycle/ |title=17. Development Cycle — Python Developer's Guide |access-date=2019-11-29 |archive-date=January 18, 2023 |archive-url=https://web.archive.org/web/20230118183911/https://devguide.python.org/devcycle/ |url-status=live}}</ref>
<ref name="pep-0160">{{cite web |url=https://peps.python.org/pep-0160/ |title=PEP 160 – Python 1.6 Release Schedule |last=Drake |first=Fred L. Jr. |date=2000-07-25 |access-date=2019-11-29 |archive-date=May 13, 2022 |archive-url=https://web.archive.org/web/20220513092109/https://peps.python.org/pep-0160/ |url-status=live}}</ref>
<ref name="pep-0200">{{cite web |url=https://peps.python.org/pep-0200/ |title=PEP 200 – Python 2.0 Release Schedule |last=Hylton |first=Jeremy |access-date=2019-11-29 |archive-date=May 18, 2022 |archive-url=https://web.archive.org/web/20220518202133/https://peps.python.org/pep-0200/ |url-status=live}}</ref>
<ref name="pep-0226">{{cite web |url=https://peps.python.org/pep-0226/ |title=PEP 226 – Python 2.1 Release Schedule |last=Hylton |first=Jeremy |date=2000-10-16 |access-date=2019-11-29 |archive-date=May 23, 2022 |archive-url=https://web.archive.org/web/20220523193056/https://peps.python.org/pep-0226/ |url-status=live}}</ref>
<ref name="pep-0227">{{cite web |url=https://peps.python.org/pep-0227/ |title=PEP 227 – Statically Nested Scopes |last=Hylton |first=Jeremy |date=2000-11-01 |access-date=2007-03-22 |archive-date=May 23, 2022 |archive-url=https://web.archive.org/web/20220523193448/https://peps.python.org/pep-0227/ |url-status=live}}</ref>
<ref name="pep-0251">{{cite web |url=https://peps.python.org/pep-0251/ |title=PEP 251 – Python 2.2 Release Schedule |last1=Warsaw |first1=Barry |last2=van Rossum |first2=Guido |date=2001-04-17 |access-date=2019-11-29 |archive-date=May 4, 2022 |archive-url=https://web.archive.org/web/20220504110143/https://peps.python.org/pep-0251/ |url-status=live}}</ref>
<ref name="pep-0255">{{cite web |url=https://peps.python.org/pep-0255/ |title=PEP 255 – Simple Generators |last1=Schemenauer |first1=Neil |last2=Peters |first2=Tim |last3=Hetland |first3=Magnus |date=2001-12-21 |access-date=2008-09-05 |archive-date=January 31, 2023 |archive-url=https://web.archive.org/web/20230131031212/https://peps.python.org/pep-0255/ |url-status=live}}</ref>
<ref name="pep-0283">{{cite web |url=https://peps.python.org/pep-0283/ |title=PEP 283 – Python 2.3 Release Schedule |last=van Rossum |first=Guido |date=2002-02-27 |access-date=2019-11-29 |archive-date=April 12, 2022 |archive-url=https://web.archive.org/web/20220412092156/https://peps.python.org/pep-0283/ |url-status=live}}</ref>
<ref name="pep-0320">{{cite web |url=https://peps.python.org/pep-0320/ |title=PEP 320 – Python 2.4 Release Schedule |last1=Warsaw |first1=Barry |last2=Hettinger |first2=Raymond |last3=Baxter |first3=Anthony |date=2003-07-29 |access-date=2019-11-29 |archive-date=May 17, 2022 |archive-url=https://web.archive.org/web/20220517213754/https://peps.python.org/pep-0320/ |url-status=live}}</ref>
<ref name="pep-0356">{{cite web |url=https://peps.python.org/pep-0356/ |title=PEP 356 – Python 2.5 Release Schedule |last1=Norwitz |first1=Neal |last2=van Rossum |first2=Guido |last3=Baxter |first3=Anthony |date=2006-02-07 |access-date=2019-11-29 |archive-date=April 8, 2022 |archive-url=https://web.archive.org/web/20220408143508/https://peps.python.org/pep-0356/ |url-status=live}}</ref>
<ref name="pep-0361">{{cite web |url=https://peps.python.org/pep-0361/ |title=PEP 361 – Python 2.6 and 3.0 Release Schedule |last1=Norwitz |first1=Neal |last2=Warsaw |first2=Barry |date=2006-06-29 |access-date=2019-11-29 |archive-date=April 12, 2022 |archive-url=https://web.archive.org/web/20220412092231/https://peps.python.org/pep-0361/ |url-status=live}}</ref>
<ref name="pep-0373">{{cite web |url=https://peps.python.org/pep-0373/ |title=PEP 373 – Python 2.7 Release Schedule |last=Peterson |first=Benjamin |date=2008-11-03 |access-date=2020-04-20 |archive-date=March 13, 2022 |archive-url=https://web.archive.org/web/20220313175528/https://peps.python.org/pep-0373/ |url-status=live}}</ref>
<ref name="pep-0375">{{cite web |url=https://peps.python.org/pep-0375/ |title=PEP 375 – Python 3.1 Release Schedule |last=Peterson |first=Benjamin |date=2009-02-08 |access-date=2019-11-29 |archive-date=April 19, 2022 |archive-url=https://web.archive.org/web/20220419175721/https://peps.python.org/pep-0375/ |url-status=live}}</ref>
<ref name="pep-0392">{{cite web |url=https://peps.python.org/pep-0392/ |title=PEP 392 – Python 3.2 Release Schedule |last=Brandl |first=Georg |date=2009-12-30 |access-date=2019-11-29 |archive-date=April 19, 2022 |archive-url=https://web.archive.org/web/20220419175659/https://peps.python.org/pep-0392/ |url-status=live}}</ref>
<ref name="pep-0398">{{cite web |url=https://peps.python.org/pep-0398/ |title=PEP 398 – Python 3.3 Release Schedule |last=Brandl |first=Georg |date=2011-03-23 |access-date=2019-11-29 |archive-date=April 12, 2022 |archive-url=https://web.archive.org/web/20220412092219/https://peps.python.org/pep-0398/ |url-status=live}}</ref>
<ref name="pep-0404">{{cite web |url=https://peps.python.org/pep-0404/ |title=PEP 404 – Python 2.8 Un-release Schedule |last=Warsaw |first=Barry |date=2011-11-09 |access-date=2012-10-07 |archive-date=May 23, 2022 |archive-url=https://web.archive.org/web/20220523193051/https://peps.python.org/pep-0404/ |url-status=live}}</ref>
<ref name="pep-0429">{{cite web |url=https://peps.python.org/pep-0429/ |title=PEP 429 – Python 3.4 Release Schedule |last=Hastings |first=Larry |date=2012-10-17 |access-date=2019-11-29 |archive-date=April 12, 2022 |archive-url=https://web.archive.org/web/20220412092244/https://peps.python.org/pep-0429/ |url-status=live}}</ref>
<ref name="pep-0478">{{cite web |url=https://peps.python.org/pep-0478/ |title=PEP 478 – Python 3.5 Release Schedule |last=Hastings |first=Larry |date=2014-09-22 |access-date=2020-03-17 |archive-date=April 12, 2022 |archive-url=https://web.archive.org/web/20220412092240/https://peps.python.org/pep-0478/ |url-status=live}}</ref>
<ref name="pep-0494">{{cite web |url=https://peps.python.org/pep-0494/ |title=PEP 494 – Python 3.6 Release Schedule |last=Deily |first=Ned |date=2015-05-30 |access-date=2022-05-23 |archive-date=May 23, 2022 |archive-url=https://web.archive.org/web/20220523193057/https://peps.python.org/pep-0494/ |url-status=live}}</ref>
<ref name="pep-0537">{{cite web |url=https://peps.python.org/pep-0537/ |title=PEP 537 – Python 3.7 Release Schedule |last=Deily |first=Ned |date=2016-12-23 |access-date=2023-07-16 |archive-date=July 16, 2023 |archive-url=https://web.archive.org/web/20230716011743/https://peps.python.org/pep-0537/ |url-status=live}}</ref>
<ref name="pep-0569">{{cite web |url=https://peps.python.org/pep-0569/ |title=PEP 569 – Python 3.8 Release Schedule |last=Langa |first=Łukasz |date=2018-01-27 |access-date=2023-07-16 |archive-date=July 16, 2023 |archive-url=https://web.archive.org/web/20230716011524/https://peps.python.org/pep-0569/ |url-status=live}}</ref>
<ref name="pep-0596">{{cite web |url=https://peps.python.org/pep-0596/ |title=PEP 596 – Python 3.9 Release Schedule |last=Langa |first=Łukasz |date=2020-10-13 |access-date=2022-12-07 |archive-date=November 12, 2022 |archive-url=https://web.archive.org/web/20221112083255/https://peps.python.org/pep-0596/ |url-status=live}}</ref>
<ref name="pep-0602">{{cite web |url=https://peps.python.org/pep-0602/ |title=PEP 602 – Annual Release Cycle for Python |last=Langa |first=Łukasz |date=2019-06-04 |access-date=2023-07-16 |archive-date=July 16, 2023 |archive-url=https://web.archive.org/web/20230716011411/https://peps.python.org/pep-0602/ |url-status=live}}</ref>
<ref name="pep-0619">{{cite web |url=https://peps.python.org/pep-0619/ |title=PEP 619 – Python 3.10 Release Schedule |last=Salgado |first=Pablo |date=2020-05-25 |access-date=2023-07-16 |archive-date=July 16, 2023 |archive-url=https://web.archive.org/web/20230716012115/https://peps.python.org/pep-0619/ |url-status=live}}</ref>
<ref name="pep-0664">{{cite web |url=https://peps.python.org/pep-0664/ |title=PEP 664 – Python 3.11 Release Schedule |last=Salgado |first=Pablo |date=2021-07-12 |access-date=2023-07-16 |archive-date=July 16, 2023 |archive-url=https://web.archive.org/web/20230716011740/https://peps.python.org/pep-0664/ |url-status=live}}</ref>
<ref name="pep-0693">{{cite web |url=https://peps.python.org/pep-0693/ |title=PEP 693 – Python 3.12 Release Schedule |last=Wouters |first=Thomas |date=2022-05-24 |access-date=2023-07-16 |archive-date=July 16, 2023 |archive-url=https://web.archive.org/web/20230716011356/https://peps.python.org/pep-0693/ |url-status=live}}</ref>
<ref name="pep-0719">{{cite web |url=https://peps.python.org/pep-0719/ |title=PEP 719 – Python 3.13 Release Schedule |last=Wouters |first=Thomas |date=2023-05-26 |access-date=2023-07-16 |archive-date=July 16, 2023 |archive-url=https://web.archive.org/web/20230716011314/https://peps.python.org/pep-0719/ |url-status=live}}</ref>
<ref name="pep-3000">{{cite web |url=https://peps.python.org/pep-3000/ |title=PEP 3000 – Python 3000 |last=van Rossum |first=Guido |date=2006-04-05 |access-date=December 27, 2016 |archive-date=April 2, 2022 |archive-url=https://web.archive.org/web/20220402165138/https://peps.python.org/pep-3000/ |url-status=live}}</ref>
<ref name="pep-3105">{{cite web |url=https://peps.python.org/pep-3105/ |title=PEP 3105 – Make print a function |last=Brandl |first=Georg |date=2007-11-19 |access-date=December 27, 2016 |archive-date=April 2, 2022 |archive-url=https://web.archive.org/web/20220402184902/https://peps.python.org/pep-3105/ |url-status=live}}</ref>
<ref name="pep-3107">{{cite web |url=https://peps.python.org/pep-3107/ |title=PEP 3107 – Function Annotations |last1=Winter |first1=Collin |last2=Lownds |first2=Tony |date=2006-12-02 |access-date=December 27, 2016 |archive-date=March 13, 2022 |archive-url=https://web.archive.org/web/20220313061252/https://peps.python.org/pep-3107/ |url-status=live}}</ref>
<ref name="pep-3137">{{cite web |url=https://peps.python.org/pep-3137/ |title=PEP 3137 – Immutable Bytes and Mutable Buffer |last=van Rossum |first=Guido |date=2007-09-26 |access-date=May 23, 2022 |archive-date=May 23, 2022 |archive-url=https://web.archive.org/web/20220523193053/https://peps.python.org/pep-3137/ |url-status=live}}</ref>
}}
 
==External links==
* [httphttps://python-history.blogspot.com/ Guido Van Rossum blog on Python's History]
 
{{DEFAULTSORT:History Of Python}}
[[Category:Python (programming language)]]
[[Category:History of software|Python]]
[[Category:Python (programming language)]]
[[Category:Software version histories|Python]]