History of Python: Difference between revisions

Content deleted Content added
WikiCleanerBot (talk | contribs)
m v2.05b - Bot T20 CW#61 - Fix errors for CW project (Reference before punctuation)
m vbump
 
(24 intermediate revisions by 9 users not shown)
Line 6:
[[File:Python logo and wordmark.svg|alt=|thumb|New Python logo, 2006–present]]
[[File:Guido-portrait-2014.jpg|thumb|Guido van Rossum in 2014]]
{{Main|Python (programming language)}}
 
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 |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}}</ref> and its implementation was started in December 1989<ref name="timeline-of-python" /> by [[Guido van Rossum]] at [[Centrum Wiskunde & Informatica|CWI]] in [[the Netherlands]] as a successor to [[ABC (programming language)|ABC]] capable of [[exception handling]] and interfacing with the [[Amoeba (operating system)|Amoeba operating system]].<ref name="faq-created">{{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}}</ref> 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|''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 October 16, 2000, with many major new features, such as [[list comprehension]]s, [[cycle detection|cycle-detecting]] [[garbage collection (computer science)|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.<ref name="newin-2.0">{{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}}</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>
 
{{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>
 
==Early history==
Line 56 ⟶ 57:
 
==Version 3==
 
{{redirect|Python 3|the Israeli missile|Python (missile)#Python-3}}
 
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>
 
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".
 
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===
Line 77 ⟶ 81:
*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 ===
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.
 
Python 3.2 defined a stable [[Application Binary Interface|ABI]], allowing extension modules to rely on functions across different Python versions.
 
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]].
 
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==
Line 227 ⟶ 255:
|-
| {{Version|co|3.9}}{{Update after|2025|10}}
| ''3.9.2223''<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" />
Line 233 ⟶ 261:
|-
| {{Version|co|3.10}}{{Update after|2026|10}}
| ''3.10.1718''<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" />
Line 239 ⟶ 267:
|-
| {{Version|co|3.11}}{{Update after|2027|10}}
|''3.11.1213''<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.1011''<ref name="pep-0693" />{{Update after|2028|10}}
| 2023-10-02<ref name="pep-0693" />
| 2025-04-08{{efn|group=version-table|name=last-bug-release}}<ref name="pep-0693" />
Line 251 ⟶ 279:
|-
| {{Version|c|3.13}}
| ''3.13.37''<ref name="pep-0719" />{{Update after|2025|0610|0307}}
| 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}}<!--Make preview version when in beta-->
| 3.14.0b10rc1<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 |url-status=live}}</ref>{{Update after|2025|0508|2726}}
| 2025-10-07<ref name="pep-0745" />{{Update after|2025|10|07}}
| 2027-05<ref name="pep-0745" />{{Update after|2027|05}}
Line 270 ⟶ 298:
{{smalldiv|1=
{{Version|l|show=111111}}
''Italics'' indicates the latest micro version of currently supported versions as of 2025-0508-0706{{Update after|2025|0610|0307}}.
}}
 
Line 351 ⟶ 379:
==References==
{{reflist|1=30em|refs=
<ref name="timeline-of-python">{{cite web |url=httphttps://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>
Line 388 ⟶ 416:
 
==External links==
* [httphttps://python-history.blogspot.com/ Guido Van Rossum blog on Python's History]
 
{{DEFAULTSORT:History Of Python}}