PEP: 569
Title: Python 3.8 Release Schedule
Author: Łukasz Langa <lukasz@python.org>
Status: Final
Type: Informational
Topic: Release
Created: 27-Jan-2018
Python-Version: 3.8


Abstract
========

This document describes the development and release schedule for
Python 3.8.  The schedule primarily concerns itself with PEP-sized
items.

.. Small features may be added up to the first beta
   release.  Bugs may be fixed until the final release,
   which is planned for end of October 2019.


Release Manager and Crew
========================

- 3.8 Release Manager: Łukasz Langa
- Windows installers: Steve Dower
- Mac installers: Ned Deily
- Documentation: Julien Palard


3.8 Lifespan
============

3.8 will receive bugfix updates approximately every 2 months for
approximately 18 months.  Some time after the release of 3.9.0 final,
the ninth and final 3.8 bugfix update was released.  After that,
security updates (source only) were released for 5 years until the
release of Python 3.13.0 final.

As of 2024-10-07, 3.8 has reached the
`end-of-life phase <https://devguide.python.org/devcycle/#end-of-life-branches>`_
of its release cycle. 3.8.20 was the final security release.
The codebase for 3.8 is now frozen and no further updates will be
provided nor issues of any kind will be accepted on the bug tracker.


Release Schedule
================

3.8.0 schedule
--------------

.. release schedule: feature

Actual:

- 3.8 development begins: Monday, 2018-01-29
- 3.8.0 alpha 1: Sunday, 2019-02-03
- 3.8.0 alpha 2: Monday, 2019-02-25
- 3.8.0 alpha 3: Monday, 2019-03-25
- 3.8.0 alpha 4: Monday, 2019-05-06
- 3.8.0 beta 1: Tuesday, 2019-06-04
  (No new features beyond this point.)
- 3.8.0 beta 2: Thursday, 2019-07-04
- 3.8.0 beta 3: Monday, 2019-07-29
- 3.8.0 beta 4: Friday, 2019-08-30
- 3.8.0 candidate 1: Tuesday, 2019-10-01
- 3.8.0 final: Monday, 2019-10-14

.. release schedule: ends

Bugfix releases
---------------

.. release schedule: bugfix

Actual:

- 3.8.1 candidate 1: Tuesday, 2019-12-10
- 3.8.1 final: Wednesday, 2019-12-18
- 3.8.2 candidate 1: Monday, 2020-02-10
- 3.8.2 candidate 2: Monday, 2020-02-17
- 3.8.2 final: Monday, 2020-02-24
- 3.8.3 candidate 1: Wednesday, 2020-04-29
- 3.8.3 final: Wednesday, 2020-05-13
- 3.8.4 candidate 1: Tuesday, 2020-06-30
- 3.8.4 final: Monday, 2020-07-13
- 3.8.5 final: Monday, 2020-07-20
  (security hotfix)
- 3.8.6 candidate 1: Tuesday, 2020-09-08
- 3.8.6 final: Thursday, 2020-09-24
- 3.8.7 candidate 1: Monday, 2020-12-07
- 3.8.7 final: Monday, 2020-12-21
- 3.8.8 candidate 1: Tuesday, 2021-02-16
- 3.8.8 final: Friday, 2021-02-19
- 3.8.9 final: Friday, 2021-04-02
  (security hotfix)
- 3.8.10 final: Monday, 2021-05-03
  (Final regular bugfix release with binary installers)

.. release schedule: ends

Source-only security fix releases
---------------------------------

Provided irregularly on an "as-needed" basis until October 7th 2024.

.. release schedule: security

- 3.8.11 final: Monday, 2021-06-28
- 3.8.12 final: Monday, 2021-08-30
- 3.8.13 final: Wednesday, 2022-03-16
- 3.8.14 final: Tuesday, 2022-09-06
- 3.8.15 final: Tuesday, 2022-10-11
- 3.8.16 final: Tuesday, 2022-12-06
- 3.8.17 final: Tuesday, 2023-06-06
- 3.8.18 final: Thursday, 2023-08-24
- 3.8.19 final: Tuesday, 2024-03-19
- 3.8.20 final: Friday, 2024-09-06
  (final security release)

.. release schedule: ends


Features for 3.8
================

Some of the notable features of Python 3.8 include:

* :pep:`570`, Positional-only arguments
* :pep:`572`, Assignment Expressions
* :pep:`574`, Pickle protocol 5 with out-of-band data
* :pep:`578`, Runtime audit hooks
* :pep:`587`, Python Initialization Configuration
* :pep:`590`, Vectorcall: a fast calling protocol for CPython
* 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

There are many other interesting changes, please consult the
"What's New" page in the documentation for a full list.


Copyright
=========

This document has been placed in the public domain.
