Python roadmap

Just a few weeks ago, Python released the latest version of its 3.x series, Python 3.8, and what better time to go over a bit of its history and previous releases?

Designed by Guido van Rossum, Python is a programming language that was first released back in 1991 and that has been gaining traction in the industry over the last five years. With an emphasis on code readability, this open-source language is friendly and easy to use. It is also our backend language of choice and, today, we’ll be giving you an overview of its most recent version, but first, let’s travel back a few decades.

Python Logo

Brief history of Python

Before coming up with Python, its designer, Dutch programmer Guido van Rossum, worked at the Centrum Wiskunde & Informatica, the Netherland’s National Research Institute for Mathematics and Computer Science. During his time there, he worked on a programming language called ABC, meant as a substitute for BASIC. It was this language that inspired what would then become Python, a more refined version of ABC that would end up taking a life of its own after its release in 1991. The name of the language was actually inspired by the British TV show Monty Python and not the snake of the same name as many people assume.

Since then, Python has kept evolving and releasing new versions. October 2000 saw the release of Python 2.0, the first and only version to be released by PythonLabs and This version offered a final and more complete Unicode implementation, introduced list comprehensions, and garbage collection of cycles, and finally added augmented assignment operators, among other core features. Every version after 2.0 so far (including 2.0.1), has been released by the Python Software Foundation. December 2008 saw another big milestone for the language with the release of Python 3.0. This new version meant a pretty big overhaul, so we’ll go into more detail about it below.

Python 3.8 release

Important changes in Python 3

Python 3.0 was released back in 2008, but there have been many subsequent releases of the 3.x series.

Python 3.1 June 27, 2009
Python 3.2 February 20, 2011
Python 3.3 September 29, 2012
Python 3.4 March 16, 2014
Python 3.5 September 13, 2015
Python 3.6 December 23, 2016
Python 3.7 June 27, 2018
Python 3.7.4 July 8, 2019
Python 3.8 October 14, 2019

The main idea behind Python 3.0 (also known as Python 3000) was to fix fundamental design flaws that were found in the programming language. In addition to that, it also focused on removing duplicative constructs and modules. The 3.0 version includes new syntax and keywords, additions to library modules, packages, classes and functions, and reliability improvements.

Here are some of the most relevant changes for this version:

  • print went from a statement to a built-in function.
  • The raw_input function was renamed to input, replacing the Python 2 input function.
  • The division operator was changed, and the int and long types were merged giving way to a single built-in integral type.
  • Unicode strings were added, as well as two byte types: byte and bytearray.
  • Loop control variables no longer leaked into the global namespace.
  • A TypeError exception is now raised when trying to compare unorderable types.

You can find the full specs for this version here, as well as the details for the latest releases on the series on Python’s website.

Python 3.8

Python News

Version 3.8 (the first one released under the new Python Steering Council) is fresh out of the oven and packed with cool new features like assignment expression and simpler debugging, so let’s dive right in:

  • Assignment expressions: Python 3.8 introduced the “walrus operator”, :=. By letting developers name the result of an expression, this operator allows for reuse and shorter code.
  • Positional-only parameters: the use of the new / function parameter syntax indicates that some function parameters need to be specified positionally and can’t be used as keyword arguments.
  • Parallel filesystem cache for compiled bytecode files: the new PYTHONPYCACHEPREFIX setting configures implicit bytecode case to use a separate parallel file-system tree instead of the default __pycache__ subdirectories.
  • New debugging feature: a = specifier was added for f-strings (a favorite feature of the 3.6 release).

Final thoughts

With almost 30 years of history, Python has evolved steadily through time. We’re excited about upgrading to the latest version of this programming language, Python 3.8, and make use of its exciting new features and improvements! How about you?