.. _history: +++++++++++++++++ History of Python +++++++++++++++++ Guido van Rossum started to write Python in December 1989. See also :ref:`Python Development Workflow `. History of Python releases ========================== See also `Status of Python branches `_. * Python 3.11: October 2022 * Python 3.10: October 2021 * Python 3.9: October 2020 * Python 3.8: October 2019 * Python 3.7: June 2018 * Python 3.6: December 2016 * Python 3.5: September 2015 * Python 3.4: March 2014 * Python 3.3: September 2012 * Python 3.2: February 2011 * Python 2.7: July 2010 * Python 3.1: June 2009 * Python 3.0: December 2008 * Python 2.6: October 2008 * Python 2.5: September 2006 * Python 2.4: March 2005 * Python 2.3: July 2003 * Python 2.2: December 2001 * Python 2.1: April 2001 * Python 2.0: October 2000 * Python 1.5: April 1999 * Python 0.9.1: `February 20, 1991 `_ (date commonly used at the birth of the Python project) History of the Python language (syntax) ======================================= * Python 3.8: ``x := 1`` assignment expression (PEP 572) and ``/`` in function for positional-only parameters (PEP 570) * Python 3.7: ``async`` and ``await`` become keywords * Python 3.6: f-strings (`PEP 498 "Literal String Interpolation" `_) * Python 3.5: * Add ``async`` and ``await`` (not really keywords yet) * The ``@`` operator (`PEP 465 "A dedicated infix operator for matrix multiplication" `_) * `PEP 448 "Additional Unpacking Generalization" `_ * *(Python 3.4: no change)* * Python 3.3: * ``yield from``: `PEP 380 "Syntax for Delegating to a Subgenerator" `_ * ``u'unicode'`` syntax is back: `PEP 414 "Explicit Unicode literals" `_ * *(Python 3.2: no change)* * Python 2.7: * all changes of Python 3.1 * Python 3.1: * dict/set comprehension * set literals * multiple context managers in a single with statement * Python 3.0: * all changes of Python 2.6 * new ``nonlocal`` keyword * ``raise exc from exc2``: `PEP 3134 "Exception Chaining and Embedded Tracebacks" `_ * ``print`` and ``exec`` become a function * ``True``, ``False``, ``None``, ``as``, ``with`` are reserved words * Change from ``except exc, var`` to ``except exc as var``: `PEP 3110 "Catching Exceptions in Python 3000" `_ * Removed syntax: ``a <> b``, ```a```, ``123l``, ``123L``, ``u'unicode'``, ``U'unicode'`` and ``def func(a, (b, c)): pass`` * `PEP 3132 "Extended Iterable Unpacking" `_ * Python 2.6: * with: `PEP 343 "The "with" Statement" `_ * ``b'bytes'`` syntax: `PEP 3112 "Bytes literals in Python 3000" `_ Old Python Versions =================== * `Python 0.9.1 `_ * `Python 1.5.2 `_ * `Python 0.9.1 .. 2.0 source tarballs `_ * `David Beazley tests in 2017 (tweets) `_ * `neopythonic `_ by Guido van Rossum: Ramblings through technology, politics, culture and philosophy by the creator of the Python programming language. * `History of Python (Wikipedia article) `_ * `The History of Python `_ by Guido van Rossum: A series of articles on the history of the Python programming language and its community. Python 3000 =========== * https://mail.python.org/pipermail/python-3000/ * https://www.python.org/dev/peps/pep-3000/ * https://www.python.org/dev/peps/pep-3100/