Python 3.8.0 is almost ready. After a rather tumultuous few days, we are very happy to announce the availability of the release candidate:
This release, 3.8.0rc1, is the final planned release preview. Assuming no critical problems are found prior to 2019-10-14, the scheduled release date for 3.8.0, no code changes are planned between this release candidate and the final release.
Please keep in mind that this is not the gold release yet and as such its use is not recommended for production environments.
Major new features of the 3.8 series, compared to 3.7
Some of the new major new features and changes in Python 3.8 are:
-
PEP 572, Assignment expressions
-
PEP 570, Positional-only arguments
-
PEP 587, Python Initialization Configuration (improved embedding)
-
PEP 590, Vectorcall: a fast calling protocol for CPython
-
PEP 578, Runtime audit hooks
-
PEP 574, Pickle protocol 5 with out-of-band data
- Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict)
- Parallel filesystem cache for compiled bytecode
- Debug builds share ABI as release builds
- f-strings support a handy
=
specifier for debugging
-
continue
is now legal in finally:
blocks
- on Windows, the default
asyncio
event loop is now ProactorEventLoop
- on macOS, the spawn start method is now used by default in
multiprocessing
-
multiprocessing
can now use shared memory segments to avoid pickling costs between processes
-
typed_ast
is merged back to CPython
-
LOAD_GLOBAL
is now 40% faster
-
pickle
now uses Protocol 4 by default, improving performance
- (Hey, fellow core developer, if a feature you find important is missing from this list, let Łukasz know.)