Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions rfcs/python_39.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# RFC 200: Bump minimum supported Python to 3.9

## Summary

Raise the minimum supported Python version from 3.8 to 3.9.

## Details

The project currently supports Python 3.8 and newer. Python 3.8 reached end
of life in October 2024, and the broader Python ecosystem has largely dropped
support for it. As a result, we have been unable to update several dependencies
that now require Python 3.9 or newer.

Historically, continued Python 3.8 support was required due to downstream CI
integrations with Apple’s and Google’s infrastructure. These systems have since
Comment on lines +14 to +15
Copy link
Member

Choose a reason for hiding this comment

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

WebKit hasn't had any need for Python 3.8 since we dropped support for Xcode 12 several years ago. Our own tooling hasn't support it in a while.

It's not clear to me from #200 when Mozilla stopped needing Python 3.8 support? After upgrading systems after Ubuntu 20.04 LTS reached extended security maintenance?

Copy link
Contributor

Choose a reason for hiding this comment

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

I think we still have some older Ubuntu versions, but we've updated all the Python to at least 3.9, and that's what the build system requires. In practice I think all the CI machines might have at least 3.10, but I'm not sure about that.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

been updated and no longer depend on Python 3.8, removing the primary blocker
for increasing our minimum supported version.

Implementing this change will require several concrete steps:

- Update CI jobs currently running on Python 3.8 to use Python 3.9.
- Refresh vendored dependencies that were previously constrained by
Python 3.8 compatibility.
Comment on lines +22 to +23
Copy link
Member

Choose a reason for hiding this comment

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

Note with web-platform-tests/wpt#49752 unlanded we don't have a particularly easy way to do this. :'(

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I assume that this was just a comment from your side and nothing specific to update this content with?

- Re-run CI for Dependabot pull requests to allow dependency updates to proceed.
Some dependencies may now require Python 3.10 or newer; in those cases, we
should manually update to the latest release that remains compatible with
Python 3.9.
Comment on lines +24 to +27
Copy link
Member

Choose a reason for hiding this comment

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

I did question in web-platform-tests/wpt#55608 whether we should just outright disable dependabot; it's unclear to me we're gaining much except noise with our minimum version?

Copy link
Contributor

Choose a reason for hiding this comment

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

I think that would require a new RFC, but I'd be opposed; at least some dependencies do usefully get updates.


## Risks

Python 3.9 itself reached end of life in October 2025, which means we
will encounter similar pressure to raise the minimum version again as
dependencies may already require Python 3.10 or newer. Any further
Comment on lines +31 to +33
Copy link
Member

Choose a reason for hiding this comment

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

We could also change policy about how we lock dependency versions.

We've typically gone for something approximating the fewest versions (along the lines of uv pip compile's --fork-strategy fewest); we could also use split it by the required Python version (along the lines of its --fork-strategy requires-python).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I assume this is as well something not blocking this RFC?

increase in the minimum supported Python version should be handled
through a separate RFC, particularly to account for vendor requirements.

There is also a possibility that some external users rely on Python 3.8
support, especially those using Ubuntu 20.04 LTS with extended security
maintenance through 2030. While this scenario is considered unlikely,
because such users would need to depend heavily on wpt in an environment
where Python upgrades are difficult and also not participate in the RFC
process, we will work with affected users in such cases to identify a
viable path forward.