Upcoming cutoffs for 3.9, 3.8, 3.7, and 3.6 releases! Last chance for 3.7 bugfixes!

A friendly reminder from your release managers of important upcoming dates for releases. There’s a lot going on over the next two months! The highlights:

  • 2020-06-08:
    3.9.0 beta 2

  • 2020-06-15:
    3.7.8 rc 1 [final bugfix release for 3.7.x !]
    3.6.11 rc 1 [security-only release candidate]

  • 2020-06-27:
    3.7.8 final [only security-only source-only releases after this]
    3.6.11 final

  • 2020-06-29:
    3.9.0 beta 3
    3.8.4 rc 1

  • 2020-07-13:
    3.8.4 final

  • 2020-07-20:
    3.9.0 beta 4 [last scheduled beta for 3.9.0 !]

  • 2020-08-10:
    3.9.0 rc 1 [release candidate 1 for 3.9.0 !]

Please take some time to look at outstanding issues for these releases, particularly any release blockers or deferred blockers, as well as open PRs, especially those ready to merge. Anything you can do to help resolve these open items will be greatly appreciated by our users (and by your release managers).

Regarding 3.7.x, the 3.7.8 release is scheduled for exactly two years following the initial release of 3.7.0 and it comes about nine months following the first release in the 3.8.x cycle, 3.7’s successor. We can all be proud of the work we have collectively put into the 3.7 release cycle. Following in the success of 3.6 and its predecessors, 3.7 provided the final push to show the rest of the world that the time had finally come to put Python 2 to bed. Thank you all for making that happen!

Since 3.7.8 is the final bugfix release for 3.7.x, this is your last chance to get non-security fixes in to 3.7.x. Considering that we are now at the end of the bugfix phase of 3.7, please use extra care when merging changes prior to 3.7.8rc1. Please take into account the priority and the severity of the issue and ask yourself whether this change is really warranted at this late date in 3.7’s life cycle. A major goal of 3.7.8, as with all bugfix releases, is to allow users of earlier 3.7.x releases to upgrade to 3.7.8 with as little fuss as possible: no regressions, no incompatibilities, no need to rebuild 3.7.x third-party packages. If you know of any changes in 3.7.8 that do not meet those goals, please bring them up ASAP. They also must be highlighted in the What’s New for 3.7 document.

Consider using the following guidelines for 3.7.8 issues:

  • fixes for real world security problems (including DoS scenarios) -> merge
  • fixes for problems reported by users or likely to be seen by users that produce serious incorrect results -> merge
  • fixes for regressions with earlier 3.7.x releases -> merge
  • fixes for bugs that users are reporting as having a serious ongoing impact -> merge
  • fixes for bugs that exist in releases earlier than 3.7 and/or for which workarounds exist -> maybe merge
  • documentation fixes -> merge
  • fixes to test suite for failing or unreliable tests -> merge

When in doubt, ask the release manager for guidance.

3.7.8 rc1 will mark the end of the bugfix phase of the 3.7 release cycle. After 3.7.8 rc1 is tagged for release, the 3.7 branch will move to security-only mode. All subsequent merges to 3.7 will need the approval of the release manager; you will not be able to merge PRs directly. We will then go through and remove the needs backport to 3.7 label from remaining open non-security PRs. Going forward after 3.7.8 rc1, please do not use the needs backport to 3.7 label unless you feel the PR meets the criteria for a security-only fix. Generally, we also do not backport documentation fixes to security-only branches but, if you feel there is a serious documentation issue that should be fixed, ask.

Likewise, if you know of fixes for security issues that should be backported to 3.6, please try to get them in before the 3.6.11 rc1 cutoff.

Thanks again for all your efforts in supporting Python development, especially in these difficult times! Looking forward to the day when we can again celebrate our efforts in person!

Łukasz, 3.9 and 3.8 Release Manager
Ned, 3.7 and 3.6 Release Manager