Python 3.9

Python 3.9 is available. What’s new:

New syntax features:

  • PEP 584, union operators added to dict;
  • PEP 585, type hinting generics in standard collections;
  • PEP 614, relaxed grammar restrictions on decorators.

New built-in features:

  • PEP 616, string methods to remove prefixes and suffixes.

New features in the standard library:

  • PEP 593, flexible function and variable annotations;
  • os.pidfd_open() added that allows process management without races and signals.

Interpreter improvements:

  • PEP 573, fast access to module state from methods of C extension types;
  • PEP 617, CPython now uses a new parser based on PEG;
  • a number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
  • garbage collection does not block on resurrected objects;
  • a number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, math, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
  • a number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.

New library modules:

  • PEP 615, the IANA Time Zone Database is now present in the standard library in the zoneinfo module;
  • an implementation of a topological sort of a graph is now provided in the new graphlib module.

Release process changes:

  • PEP 602, CPython adopts an annual release cycle.

The Road to Python3

When Python3 came out in 2009, it was already heavily debated. Python3 would be incompatible with previous versions of the popular language, but fix many drawbacks. While the vision was clear and the community initially planned to move forward much quicker. The demand for having a 2.x branch was so huge, however, that the community decided to extend support for 2.7 until the end of 2019. Stack Overflow took a look on why the path took so long.

The Road to Python3: Stack Overflow took a look.