What’s New In Python 3.8

Release:3.8.0a0
Date:February 25, 2018

This article explains the new features in Python 3.8, compared to 3.7.

For full details, see the Misc/NEWS file.

Note

Prerelease users should be aware that this document is currently in draft form. It will be updated substantially as Python 3.8 moves towards release, so it’s worth checking back even after reading earlier versions.

Summary – Release highlights

New Features

Other Language Changes

New Modules

  • None yet.

Improved Modules

Optimizations

Build and C API Changes

Deprecated

Removed

Porting to Python 3.8

This section lists previously described changes and other bugfixes that may require changes to your code.

Changes in Python behavior

  • Yield expressions (both yield and yield from clauses) are now disallowed in comprehensions and generator expressions (aside from the iterable expression in the leftmost for clause). (Contributed by Serhiy Storchaka in bpo-10544.)

Changes in the Python API

  • The selection() method of the tkinter.ttk.Treeview class no longer takes arguments. Using it with arguments for changing the selection was deprecated in Python 3.6. Use specialized methods like selection_set() for changing the selection. (Contributed by Serhiy Storchaka in bpo-31508.)
  • A dbm.dumb database opened with flags 'r' is now read-only. dbm.dumb.open() with flags 'r' and 'w' no longer creates a database if it does not exist. (Contributed by Serhiy Storchaka in bpo-32749.)

CPython bytecode changes

  • The interpreter loop has been simplified by moving the logic of unrolling the stack of blocks into the compiler. The compiler emits now explicit instructions for adjusting the stack of values and calling the cleaning up code for break, continue and return.

    Removed opcodes BREAK_LOOP, CONTINUE_LOOP, SETUP_LOOP and SETUP_EXCEPT. Added new opcodes ROT_FOUR, BEGIN_FINALLY, CALL_FINALLY and POP_FINALLY. Changed the behavior of END_FINALLY and WITH_CLEANUP_START.

    (Contributed by Mark Shannon, Antoine Pitrou and Serhiy Storchaka in bpo-17611.)