The Complete History of Python Versions: From 0.9.0 to 3.13 and Beyond
A comprehensive timeline of every major Python release, from its 1991 debut to upcoming version 3.13. Learn key features, the Python 2 vs 3 split, and surprising facts that shaped the language's evolution.
Advertisement
Python’s version history is more than a timeline—it’s a story of how a language designed for “guiding alligators” became the backbone of modern tech. From its quirky birth in the early 1990s to the controversial Python 2 vs. 3 split, each release brought something new. Here’s a detailed breakdown, with a clear table and some key facts that shaped Python’s evolution.
The Early Days: Python’s Birth
Python’s first public release, version 0.9.0, hit the web on February 20, 1991, created by Guido van Rossum during his Christmas break (he needed a hobby). It already had classes, exception handling, and functions—no, it wasn’t named after Monty Python’s Flying Circus for nothing. The first major version, 1.0, came in 1994, introducing lambda, map, filter, and reduce. But Python’s real growth spurt started in 2000 with version 1.5.2, which added Unicode support.
The Big Split: Python 2 vs. Python 3
The most seismic event in Python’s history was the release of Python 3.0 in 2008. It was a deliberate break: fix long-standing design flaws (like print as a statement) and clean up inconsistencies. The catch? Python 2 code didn’t run on Python 3. This sparked a community-wide migration that took over a decade. Python 2’s final release, 2.7.18, came in 2020, and it was officially unsupported after that—but millions of lines of legacy code still run on it today.
Here’s the official version timeline, with key releases and the year they dropped:
| Version | Release Date | Highlight |
|---|---|---|
| 0.9.0 | Feb 1991 | First public release; classes, exceptions, and functions |
| 1.0 | Jan 1994 | First major version; lambda, map, filter, reduce added |
| 1.5.2 | Apr 1999 | Unicode support; % string formatting |
| 2.0 | Oct 2000 | List comprehensions, garbage collection, unicode type |
| 2.2 | Dec 2001 | Generators, new-style classes (object model cleanup) |
| 2.3 | Jul 2003 | set type, sorted() built-in, decorators (experimental) |
| 2.4 | Nov 2004 | Decorators (@decorator syntax, thanks to PEP 318) |
| 2.5 | Sep 2006 | with statement (context managers), try…finally unification |
| 2.6 | Oct 2008 | Bridge to Python 3; included __future__ imports |
| 2.7 | Jul 2010 | Final 2.x series; last release was 2.7.18 in April 2020 |
| 3.0 | Dec 2008 | Breaking changes: print() as function, str/unicode split |
| 3.1 | Jun 2009 | OrderedDict, math.comb (though added later) |
| 3.2 | Feb 2011 | functools.lru_cache, argparse module |
| 3.3 | Sep 2012 | yield from, venv (virtual environments built-in) |
| 3.4 | Mar 2014 | asyncio, enum, pathlib’s Path |
| 3.5 | Sep 2015 | async/await keywords, type hints via typing module |
| 3.6 | Dec 2016 | f-strings, underscore in numeric literals (1_000) |
| 3.7 | Jun 2018 | Data classes, __future__ annotations, breakpoint() |
| 3.8 | Oct 2019 | Assignment expression (:=, walrus operator), positional-only params |
| 3.9 | Oct 2020 | Dictionary merge operators (|), zoneinfo module |
| 3.10 | Oct 2021 | Structural pattern matching (match/case), parenthesized context managers |
| 3.11 | Oct 2022 | Faster CPython (up to 60% speed boost), exception groups |
| 3.12 | Oct 2023 | type statement for generic classes, improved error messages |
| 3.13 | Oct 2024 | (Upcoming) Tail-call optimization? Experimental JIT compiler |
Why the Long Wait Between Major Versions?
After Python 3.0, the team adopted a “time-based” release cycle—new versions every 12–18 months. But major version numbers (like 4.0) are avoided because they imply a compatibility break. Python 4.0 was considered after 3.8, but Guido explicitly rejected it: “Python 4 is not happening. The major version number is now a marketing device.” So Python 3 will remain the current major line for the foreseeable future.
Surprising Facts You Might Not Know
- Python 1.0 was almost named “ABC++” — Guido wanted a language with the simplicity of ABC and the power of C. The Monty Python reference won out.
- The “self” convention was borrowed from C++’s
thisbut made explicit to reduce hidden bugs. - Python 2.2’s “unifying types and classes” was inspired by Smalltalk—it made every integer a first-class object.
- Guido oversaw Python’s “Benevolent Dictator for Life” (BDFL) until 2018, when he stepped down after PEP 572 (the walrus operator) caused a community firestorm. Python is now governed by a Steering Council.
- Version 3.11 was a performance watershed: the CPython interpreter got a major speed-up, making Python about 30–60% faster in real-world code—no PyPy or C extensions needed.
What’s Next? Python’s Future
The current releases follow PEP 602’s annual release cadence. Python 3.13 is expected in October 2024, and early previews suggest improvements to the GIL (Global Interpreter Lock) for true multithreading. But the big trend is Python in the browser—via Pyodide or Brython—and machine learning’s dominance fueling demand for Python as the lingua franca of data science.
The version table isn’t just a list of dates. It’s a record of a language that grew from Guido’s Christmas break project into the world’s most popular teaching and production language. And with each new release, Python gets faster, cleaner, and more capable—while keeping its promise: “Readability counts.”
Advertisement
Comments
Questions, corrections, and tips stay visible for everyone reading this page.
Join the discussion
No comments yet
Be the first to leave a note — it helps the next reader.