History of Python: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Altered title. Removed parameters. | Use this bot. Report bugs. | #UCB_CommandLine
m vbump
 
(12 intermediate revisions by 5 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>
Line 12 ⟶ 11:
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]], [[reference counting]], [[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 63 ⟶ 64:
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 82 ⟶ 83:
=== Subsequent releases ===
 
Python 3.2 defined a stable [[Application Binary Interface|ABI]], allowing extension modules to rely on functions across different pythonPython versions.
 
Python 3.5 added the typing module, which allows for [[type hintshint]]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.5 added the typing module, which allows for type hints 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.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]].
Python 3.6 followed with async generators and async comprehension, as well as formatted string literals.
 
==== Security ====
Python 3.10 introduced pattern matching via match/case statements. Additionally it provided improved error messages which "were inspired by previous work in the PyPy interpreter."<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>
 
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>
Python 3.13 added an experimental JIT compiler. Additionally it added the ability to disable the global interpreter lock.
 
==Table of versions==
Line 264 ⟶ 279:
|-
| {{Version|c|3.13}}
| ''3.13.57''<ref name="pep-0719" />{{Update after|2025|0810|0507}}
| 2024-10-07<ref name="pep-0719" />
| 2026-05<ref name="pep-0719" />{{Update after|2026|05}}
Line 270 ⟶ 285:
|-
| {{Version|cp|3.14}}
| 3.14.0b40rc1<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|0708|2226}}
| 2025-10-07<ref name="pep-0745" />{{Update after|2025|10|07}}
| 2027-05<ref name="pep-0745" />{{Update after|2027|05}}
Line 283 ⟶ 298:
{{smalldiv|1=
{{Version|l|show=111111}}
''Italics'' indicates the latest micro version of currently supported versions as of 2025-0708-1106{{Update after|2025|10|07|22}}.
}}
 
Line 364 ⟶ 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 401 ⟶ 416:
 
==External links==
* [httphttps://python-history.blogspot.com/ Guido Van Rossum blog on Python's History]
 
{{DEFAULTSORT:History Of Python}}