Skip to content

Conversation

@AndrewFerr
Copy link
Member

@AndrewFerr AndrewFerr commented Oct 24, 2025

Python 3.9 EOL is on 2025-10-31

Dev notes

Previous times we had to drop Python versions:

Python 3.8:

Python 3.7:

Pull Request Checklist

  • Pull request is based on the develop branch
  • Pull request includes a changelog file. The entry should:
    • Be a short description of your change which makes sense to users. "Fixed a bug that prevented receiving messages from other servers." instead of "Moved X method from EventStore to EventWorkerStore.".
    • Use markdown where necessary, mostly for code blocks.
    • End with either a period (.) or an exclamation mark (!).
    • Start with a capital letter.
    • Feel free to credit yourself, by adding a sentence "Contributed by @github_username." or "Contributed by [Your Name]." to the end of the entry.
  • Code style is correct (run the linters)

@AndrewFerr AndrewFerr requested a review from a team as a code owner October 24, 2025 19:18
@github-actions github-actions bot deployed to PR Documentation Preview October 24, 2025 19:20 Active
Comment on lines +120 to +125
# Upgrading to v1.142.0
## Minimum supported Python version
The minimum supported Python version has been increased from v3.9 to v3.10.
You will need Python 3.10+ to run Synapse v1.142.0 (due out Nov 11th, 2025).
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It goes without saying, but this section may need updating to specify the actual version this PR lands in.

Do this to prevent the trial-olddeps test workflow from installing a
version of jaeger-client that pulls in an old version of a dependency
(tornado) that is incompatible with Python 3.10.
@github-actions github-actions bot deployed to PR Documentation Preview October 27, 2025 06:12 Active
@github-actions github-actions bot deployed to PR Documentation Preview October 27, 2025 06:26 Active
@github-actions github-actions bot deployed to PR Documentation Preview October 27, 2025 06:29 Active
@github-actions github-actions bot deployed to PR Documentation Preview October 27, 2025 06:42 Active
@github-actions github-actions bot deployed to PR Documentation Preview October 27, 2025 19:46 Active
@github-actions github-actions bot deployed to PR Documentation Preview October 27, 2025 20:29 Active
It's recommended to use the latest Python versions.

RHEL 8 in particular ships with Python 3.6 by default which is EOL and therefore no longer supported by Synapse. RHEL 9 ships with Python 3.9 which is still supported by the Python core team as of this writing. However, newer Python versions provide significant performance improvements and they're available in official distributions' repositories. Therefore it's recommended to use them.
RHEL 8 & 9 in particular ship with Python 3.6 & 3.9 respectively by default which are EOL and therefore no longer supported by Synapse. However, newer Python versions provide significant performance improvements and they're available in official distributions' repositories. Therefore it's recommended to use them.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How can I cross-reference this information?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment on lines 29 to 37
DISTS = (
"debian:bullseye", # (EOL ~2024-07) (our EOL forced by Python 3.9 is 2025-10-05)
"debian:bookworm", # (EOL 2026-06) (our EOL forced by Python 3.11 is 2027-10-24)
"debian:sid", # (rolling distro, no EOL)
"ubuntu:jammy", # 22.04 LTS (EOL 2027-04) (our EOL forced by Python 3.10 is 2026-10-04)
"ubuntu:noble", # 24.04 LTS (EOL 2029-06)
"ubuntu:plucky", # 25.04 (EOL 2026-01)
"debian:trixie", # (EOL not specified yet)
)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not necessarily something for this PR specifically but should this include forky (14)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suppose that could be done when Synapse is verified to work on forky. I'm unaware of when/if that was done.

Comment on lines +204 to +205
# 2.0.5 updates collections.abc imports to avoid Python 3.10 incompatibility.
sortedcontainers = ">=2.0.5"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for including the context!

Comment on lines +204 to +205
# 2.0.5 updates collections.abc imports to avoid Python 3.10 incompatibility.
sortedcontainers = ">=2.0.5"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To explain this: this is just bumping minimum versions. We're already using much newer versions that are specified in poetry.lock.

@@ -0,0 +1 @@
Drop support for Python 3.9.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We haven't quite reached the Python 3.9 EOL date on 2025-10-31.

For ease of releases, backports, etc. I'm not sure if we want to wait until then.

@github-actions github-actions bot deployed to PR Documentation Preview October 28, 2025 18:32 Active
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants