History of Python

From a Christmas holiday project in Amsterdam to the world's most popular programming language. 33+ years of evolution.

Born at CWI Amsterdam

In December 1989, Guido van Rossum was a programmer at Centrum Wiskunde & Informatica (CWI), the Dutch national research institute for mathematics and computer science. He had been working on the ABC language — an educational language designed to be easy to learn — but found it too rigid and lacking extensibility.

Over the Christmas holiday, Guido started writing an interpreter for a new scripting language he envisioned: one that would inherit ABC's clean syntax and readability but add extensibility, exception handling, and the ability to interface with the Amoeba distributed operating system. He needed a name and, as a fan of Monty Python's Flying Circus, chose "Python."

The design goals were clear from the start: readability above all, a simple and consistent syntax, and a "batteries included" standard library. Unlike C or Java, Python was designed for programmer happiness first and machine efficiency second. This trade-off would prove to be Python's greatest strength.

The Evolution of Python
December 1989
Guido Begins Work
Over Christmas holiday at CWI Amsterdam, Guido van Rossum starts writing the Python interpreter as a successor to the ABC language. He wanted a scripting language for the Amoeba operating system.
February 1991
Python 0.9.0
First public release posted to alt.sources Usenet group. Already included classes, exception handling, functions, and core data types: list, dict, str. Module system was present from day one.
January 1994
Python 1.0
First official release. Added lambda, map(), filter(), reduce() — functional programming features influenced by Lisp. Included the module system that would become Python's greatest architectural strength.
1995
Python moves to CNRI
Guido moves from CWI to the Corporation for National Research Initiatives (CNRI) in Virginia, USA. Python development continues there through Python 1.5 and 1.6.
October 2000
Python 2.0
Major milestone: list comprehensions, garbage collection (cycle detection), and Unicode support. Development moved to a community-driven model on SourceForge. PEP process introduced for language governance.
2001
Python Software Foundation
The PSF is formed as a non-profit to hold Python's intellectual property and promote the language. Guido named Benevolent Dictator for Life (BDFL).
December 2008
Python 3.0
The great breaking change. Python 3 was intentionally not backwards compatible with Python 2. Key changes: print() became a function, all strings became Unicode, integer division returns float, range() returns an iterator. The migration would take a decade.
2012 – 2015
Python 3 Gains Traction
Python 3.3 added yield from, 3.4 added asyncio and pathlib, 3.5 added async/await syntax. Major libraries (NumPy, Django, Flask) begin porting to Python 3. The tide turns.
July 2018
Guido Steps Down as BDFL
After a contentious PEP 572 (walrus operator :=) debate, Guido announces he is permanently stepping down as BDFL. Python transitions to a five-member elected Steering Council model.
January 2020
Python 2 End of Life
Python 2.7.18 is the final Python 2 release. After 20 years and a painful decade-long migration, the Python community is finally unified on Python 3. No more security patches for Python 2.
October 2022
Python 3.11
10-60% faster than 3.10 thanks to the Faster CPython project (led by Mark Shannon, funded by Microsoft). Improved error messages with precise line-level tracebacks.
October 2023
Python 3.12
Per-interpreter GIL (experimental), improved f-strings allowing any expression, type statement for type aliases, improved error messages. The Faster CPython effort continues with ~5% more speedup.
Python 2 vs Python 3

Python 3's decision to break backwards compatibility was one of the most controversial moves in programming language history. The core team believed that fixing fundamental design mistakes — the str/bytes confusion, integer division behavior, and the print statement — was worth the pain of migration.

They were right, but it took 12 years. From 2008 to 2020, the Python community maintained two parallel, incompatible versions. Libraries had to support both. Tutorials were confusing. Corporate codebases were stuck on Python 2. Instagram ran Python 2 in production until 2017. Dropbox didn't fully migrate until 2020.

The lesson: breaking changes work, but only with a decade of patience. Python 3 is now universally adopted and unambiguously better. The migration pain is over, and Python is stronger for it.

"I would rather have Python 3 break backwards compatibility than have Python stay broken forever."
— Guido van Rossum
All Major Python Releases
VersionYearKey Additions
0.9.01991Classes, exceptions, functions, lists, dicts, strings, module system
1.01994lambda, map, filter, reduce, functional programming tools
1.51998re module, improved package imports
2.02000List comprehensions, garbage collection, Unicode, PEP process
2.22001New-style classes, iterators, generators, unification of types/classes
2.52006with statement, conditional expressions, try/except/finally
3.02008print(), Unicode strings, integer division, breaking changes
3.42014asyncio, pathlib, enum, pip bundled with installer
3.52015async/await syntax, type hints (PEP 484), matrix multiply operator
3.62016f-strings, variable annotations, secrets module, underscores in numerics
3.82019Walrus operator (:=), positional-only parameters, f-string debugging
3.102021Structural pattern matching (match/case), better error messages
3.11202210-60% faster, exception groups, precise error locations in tracebacks
3.122023Per-interpreter GIL, type statement, improved f-strings, more speed