1991 – 2025
Python Versions
Every public release of Python — from Python 0.9.0 in February 1991 through Python 3.14 in October 2025 — with end-of-life dates, current support state, and the major changes per version. Plus the Python 2 / 3 split, Guido van Rossum's July 2018 resignation, the Steering Council, the Faster CPython project, and the free-threaded / no-GIL push.
The 1989 origin and the CWI years
Python was started by Guido van Rossum at Centrum Wiskunde & Informatica (CWI) in Amsterdam over Christmas 1989. CWI's offices were closed for the holiday and Guido, by his own account, was looking for a "hobby project" to keep himself busy. He had been working on the ABC programming language at CWI for several years and wanted to design a successor that fixed ABC's weaknesses (closed-world implementation, no extensibility) while keeping its readability.
The first public release — Python 0.9.0 — went up on the Usenet newsgroup alt.sources on February 20, 1991. Already complete were classes with inheritance, exception handling, functions, the core data types (string, list, dictionary), and a module system. The name was a Guido in-joke about Monty Python's Flying Circus — the snake imagery was retro-fitted to it after the language became popular. Guido stayed at CWI through Python 1.3 in October 1995, then moved to the Corporation for National Research Initiatives (CNRI) in Reston, Virginia in 1995, where Python 1.4 through 1.6 shipped. He left CNRI in 2000 to join BeOpen.com, then Zope Corporation in 2003, then Google in 2005, then Dropbox in 2013, then Microsoft in late 2020.
The Python Software Foundation
The Python Software Foundation was incorporated as a 501(c)(3) non-profit on March 6, 2001, between Python 2.0 and 2.1. The PSF holds the copyright to Python and its standard library, runs python.org, sponsors PyCon and the regional Python conferences, administers the PSF License Agreement under which Python is released, and (since 2018) holds the cpython repository on GitHub. The PSF is the structural answer to the question "who owns Python." It is supported by corporate sponsorship from many of the largest companies that use Python and by individual donations. The PSF and the Steering Council (introduced in 2019) are independent: the PSF is the legal entity; the Steering Council is the technical-direction body.
The Python 2 / 3 split — the eleven-year migration (2008–2020)
Python 3.0 shipped on December 3, 2008 as a deliberate, explicit backwards-incompatible break with the 2.x line. The headline changes — print() as a function, Unicode by default with a separate bytes type, integer division returning float, range() as a lazy iterator — were small compared to the cumulative impact: every meaningful Python project had to either port to 3.x or freeze on 2.x.
The migration was projected to take "a few years." It took eleven. Python 2.7 was originally scheduled to EOL in 2015; after community pushback the date was extended to January 1, 2020 — the famous Sunset Day — with one final release (Python 2.7.18, April 20, 2020) shipped post-EOL as a farewell. The countdown ran on pythonclock.org; major projects (Django, NumPy, scipy, Twisted) progressively dropped 2.x support starting in 2020. Some long-tail systems (especially in scientific computing, ops scripting, and embedded-Linux distributions) carried Python 2 well past EOL. Red Hat Enterprise Linux 7 shipped with Python 2.7 as the system Python through its 2024 EOL.
The migration informed every subsequent Python language-design decision: backward compatibility within 3.x is now treated as load-bearing, deprecation cycles are explicit and multi-release, and __future__-style opt-in is the default mechanism for previewing semantic changes. The 2 / 3 break is also the most-cited example of "what not to do" in language-versioning discussions for any language project considering a major break since.
The PEP process — Python's design culture
Python Enhancement Proposals (PEPs) were introduced by Barry Warsaw, Jeremy Hylton, and Guido in 2000, modeled loosely on the IETF's RFC process and Java's JSR. Every meaningful change to the language, the standard library, or the development process gets a PEP: the canonical archive is at peps.python.org. PEPs are numbered in order of submission, and a small set of foundational PEPs (PEP 1: PEP purpose; PEP 8: style guide; PEP 20: The Zen of Python; PEP 257: docstring conventions; PEP 484: type hints) get cited so heavily they've become Python culture as much as Python policy. The PEP system is the most widely-imitated language-design convention in software, with parallels in JEP (Java Enhancement Proposal), TC39 ECMAScript proposals, Rust RFCs, Swift Evolution, and others.
Guido's resignation and the Steering Council (2018–2019)
On July 12, 2018, Guido posted to python-committers that he was stepping down as Benevolent Dictator for Life. The immediate trigger was PEP 572 (the walrus operator := for assignment expressions). The PEP had been deeply contentious; Guido had ultimately accepted it over significant community opposition; the post-acceptance reaction had been emotionally exhausting. From the resignation post:
"Now that PEP 572 is done, I don't ever want to have to fight so hard for a PEP and find that so many people despise my decisions. ... I would like to remove myself entirely from the decision process. I'll still be there for a while as an ordinary core dev, and I'll still be available to mentor people — possibly more available. But I'm basically giving myself a permanent vacation from being BDFL, and you all will be on your own."
Governance was undefined for several months. PEP 8016 was accepted in December 2018, establishing a five-member Steering Council elected by the core developers. The first council was elected in January 2019 and consisted of Barry Warsaw, Brett Cannon, Carol Willing, Guido van Rossum, and Nick Coghlan. Guido has continued to serve on subsequent councils intermittently. The transition is widely cited as one of the smoothest BDFL-to-collective-governance handoffs in any language community.
The Faster CPython project (2020–)
In 2020, Microsoft hired Mark Shannon — a long-time CPython contributor with a history of CPython-performance research — to lead a multi-year project aimed at making CPython significantly faster. Microsoft also brought Guido van Rossum, who had been retired from Dropbox, on staff to support the project. The Faster CPython team has shipped a major performance contribution to every CPython release from 3.11 onward.
Python 3.11 (October 2022) delivered the headline 10–60% real-world speedup (1.25x geometric mean across the official benchmark suite), driven primarily by the adaptive specializing interpreter (PEP 659). Subsequent releases extended the work: comprehension inlining in 3.12, the experimental copy-and-patch JIT (PEP 744) in 3.13, the JIT continuing to mature in 3.14. The work is publicly tracked in the faster-cpython/ideas GitHub repository.
The free-threaded / no-GIL push (2023–)
The Global Interpreter Lock — the CPython mutex that prevents multiple threads from executing Python bytecode simultaneously — has been the single most-debated piece of CPython's design since the 1990s. Multiple "GIL-removal" attempts had failed over the years, usually because they made single-threaded performance significantly worse. In 2021, Sam Gross at Meta produced a fork (nogil) demonstrating GIL removal with acceptable single-threaded overhead. PEP 703 formalized the proposal; the Steering Council accepted it in 2023 with an explicit multi-release rollout plan: experimental in 3.13 (October 2024), officially supported via PEP 779 in 3.14 (October 2025), default-on planned for a future release pending performance and ecosystem readiness. PEP 684's per-interpreter GIL in 3.12 was the parallel C-API track for the same goal.
The typing arc — from PEP 484 to native syntax
Function annotations as syntactic surface (PEP 3107) shipped in 3.0 with no specified semantics. Six years later, PEP 484 in 3.5 (September 2015) gave them meaning as type hints, alongside the typing module and the typeshed standard-library type-stub project. mypy, started by Jukka Lehtosalo as a research project, became the canonical type-checker; later joined by Microsoft's pyright (now the engine behind Pylance in VS Code), Meta's Pyre, and Astral's ty.
The subsequent multi-release work has steadily pulled type expressivity into the language proper: variable annotations in 3.6, dataclasses and from __future__ import annotations in 3.7, Protocol / TypedDict / Literal / Final in 3.8, generics in standard collections in 3.9 (PEP 585), X | Y union syntax in 3.10 (PEP 604), Self and ParamSpec in 3.11, native type-parameter syntax in 3.12 (PEP 695), defaults for type parameters in 3.13 (PEP 696), and PEP 649's deferred-evaluation rewrite in 3.14. Type hints are now load-bearing for FastAPI, Pydantic, SQLAlchemy 2.x, the Astral toolchain (uv / ruff / ty), and the long tail of modern Python web and data tooling.
Alternative implementations
CPython is the reference implementation, but several others have shaped the ecosystem:
- PyPy — the long-running Python-in-Python implementation with a tracing JIT, started in 2003. Routinely 4–10x faster than CPython on long-running pure-Python workloads. The PyPy team's pyrepl was the basis of the new interactive interpreter that landed in CPython 3.13.
- Jython — Python on the JVM, started by Jim Hugunin in 1997. Mostly stuck on Python 2.7 in modern usage; a Python 3 port is in long-running development.
- IronPython — Python on the .NET CLR, also started by Jim Hugunin (2006), then maintained by Microsoft until being open-sourced and community-led. Python 3 support shipped in IronPython 3 (2021).
- MicroPython — Damien George's 2013 implementation for microcontrollers. Runs on the BBC micro:bit and a long tail of embedded platforms. CircuitPython is Adafruit's MicroPython fork tuned for hardware education.
- Pyston — a JIT'd CPython fork from Dropbox; the technology's lessons fed back into the Faster CPython project.
- Cinder — Meta's internal CPython fork with a JIT and immortal objects; immortal-object support was upstreamed into 3.12 (PEP 683).
- Mojo — Chris Lattner's superset language (started 2023) with Python-compatible syntax and AOT-compiled performance for ML / GPU workloads. Not a CPython implementation per se, but positions itself as Python-compatible.
- RustPython — Python interpreter written in Rust; experimental, browser-targetable via WebAssembly.
The packaging story — distutils to uv
Python's packaging history has been famously messy. distutils shipped in Python 1.6 (2000) and was the standard library's answer to "how do I distribute a package." setuptools (2004) added install-from-source / dependency-resolution; easy_install was its installer. pip (2008) replaced easy_install and shipped with CPython itself starting in 3.4 via ensurepip. virtualenv (2007) became venv in the standard library in 3.3.
The 2010s through early 2020s brought conda (Continuum Analytics, 2012; for the scientific stack), pipenv (2017; lockfile-and-virtualenv combo from Kenneth Reitz), and Poetry (2018; pyproject.toml-driven dependency management and build system). The PSF-sanctioned standardization track ran through PEP 517 (build-system independence), PEP 518 (pyproject.toml), PEP 621 (project metadata in pyproject.toml), and PEP 660 (editable installs). In 2024, Astral's uv (a Rust-based pip / pip-tools / virtualenv / pyenv replacement, ~10–100x faster than its predecessors) took the modern packaging conversation by storm, alongside Astral's ruff (linter / formatter) and ty (type-checker). The "what's the canonical Python toolchain" question is quietly being re-answered for the first time in a decade.
People who actually shaped Python
Original / BDFL era: Guido van Rossum (creator and BDFL 1991–2018), Tim Peters (longtime core dev, author of The Zen of Python and Timsort, the sort algorithm CPython has used since 2002 and which Java / Android / Swift later adopted), Barry Warsaw (PEP 1 author, mailman / Mailman, longtime release manager), Jeremy Hylton (PEP 1 co-author, early Google Python team), Andrew Kuchling (PEP author, "What's New in Python N" tradition).
Modern Steering Council and core team: Brett Cannon (Steering Council; Python 3 import-system rewrite; core dev since 2003), Carol Willing (Steering Council; Project Jupyter), Nick Coghlan (Steering Council; importlib; Red Hat / Cloudera), Pablo Galindo Salgado (Steering Council; PEG parser, fine-grained tracebacks, 3.10 / 3.11 release manager; Bloomberg), Łukasz Langa (3.8 / 3.9 release manager; PSF; Black formatter author), Thomas Wouters (3.12 / 3.13 release manager; Google), Hugo van Kemenade (3.14 release manager), Mark Shannon (Microsoft Faster CPython lead; specializing-interpreter architect), Sam Gross (Meta; PEP 703 / nogil author), Petr Viktorin (Red Hat; stable ABI), Victor Stinner (Red Hat; many performance and security fixes).
Typing lineage: Jukka Lehtosalo (mypy creator), Łukasz Langa, Eric Traut (Microsoft; pyright author), Guido (PEP 484 co-author and Dropbox / Microsoft typing-team lead). Astral / packaging lineage: Charlie Marsh (uv / ruff / ty author at Astral). Async lineage: Yury Selivanov (uvloop, asyncpg, async generators / context managers, PEP 492 native coroutines). Scientific stack: Travis Oliphant (NumPy / SciPy / Anaconda / Numba), Wes McKinney (pandas).