Skip to content

chore(ci,deps): remove PyPy 3.11 support#2372

Closed
kevaundray wants to merge 3 commits into
ethereum:forks/amsterdamfrom
kevaundray:kw/remove-pypy
Closed

chore(ci,deps): remove PyPy 3.11 support#2372
kevaundray wants to merge 3 commits into
ethereum:forks/amsterdamfrom
kevaundray:kw/remove-pypy

Conversation

@kevaundray
Copy link
Copy Markdown
Contributor

@kevaundray kevaundray commented Mar 1, 2026

🗒️ Description

Since Python 3.13 (Cpython) is now faster than Python 3.11 (PyPy), we can use Python 3.13/3.14 for the usecases that we were using PyPy for.

🔗 Related Issues or PRs

Closes #1258, #2029, #2055.

✅ Checklist

  • All: Ran fast tox checks to avoid unnecessary CI fails, see also Code Standards and Enabling Pre-commit Checks:
    uvx tox -e static
  • All: PR title adheres to the repo standard - it will be used as the squash commit message and should start type(scope):.
  • All: Considered updating the online docs in the ./docs/ directory.
  • All: Set appropriate labels for the changes (only maintainers can apply labels).
  • Tests: Ran mkdocs serve locally and verified the auto-generated docs for new tests in the Test Case Reference are correctly formatted.
  • Tests: For PRs implementing a missed test case, update the post-mortem document to add an entry the list.
  • Ported Tests: All converted JSON/YML tests from ethereum/tests or tests/static have been assigned @ported_from marker.

Cute Animal Picture

Put a link to a cute animal picture inside the parenthesis-->

Comment thread CONTRIBUTING.md
@@ -151,7 +151,6 @@ Running the tests necessary to merge into the repository requires:

- [`uv`](https://docs.astral.sh/uv/) package manager,
- Python 3.11.x,
Copy link
Copy Markdown
Contributor Author

@kevaundray kevaundray Mar 1, 2026

Choose a reason for hiding this comment

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

It seems that its a goal to support 3.11, so still keeping it supported. See #2316

can bump to 3.13 if folks think we want to increase the minimum supported python version

@codecov
Copy link
Copy Markdown

codecov Bot commented Mar 1, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 84.89%. Comparing base (47ae746) to head (b22a9aa).

Additional details and impacted files
@@               Coverage Diff                @@
##           forks/amsterdam    #2372   +/-   ##
================================================
  Coverage            84.89%   84.89%           
================================================
  Files                  599      599           
  Lines                36719    36719           
  Branches              3780     3780           
================================================
  Hits                 31172    31172           
  Misses                4916     4916           
  Partials               631      631           
Flag Coverage Δ
unittests 84.89% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@kevaundray kevaundray marked this pull request as ready for review March 1, 2026 22:02
@kevaundray kevaundray changed the title chore(ci): Remove Python 3.11 (PyPy) chore(ci): Remove PyPy 3.11 Mar 2, 2026
This reverts commit a8f1684.
@marioevz marioevz requested a review from danceratopz March 2, 2026 22:26
Copy link
Copy Markdown
Member

@danceratopz danceratopz left a comment

Choose a reason for hiding this comment

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

Removing pypy support is fine from my side (it would close #1258, #2029, #2055) and this PR LGTM.

The breakdown of ethereum-execution downloads by Python implementation over the last 180 days definitely doesn't show many pypy downloads.

Claude told me I could handwave away the "Unknowns" as unlikely to be attributed to PyPy as it's a deliberate choice of a modern toolchain; not sure I 100% agree 😆. Sam would def be using 3.11 and not 3.10 :-).

Implementation Python Downloads %
CPython 3.12 30,737 39.63%
CPython 3.10 25,876 33.36%
CPython 3.11 10,695 13.79%
CPython 3.13 1,623 2.09%
PyPy 3.10 62 0.08%
Unknown n/a 8,263 10.65%
Other 83 0.11%
Total 77,325
Source https://pypistats.org/packages/ethereum-execution (via BigQuery).

Either way, I don't think we have many PyPy users of ethereum-execution other than Sam.

But as Sam does use PyPy and it seemed important for mainnet sync, I would defer approval of this PR to @SamWilsn.

@danceratopz danceratopz added C-chore Category: chore A-deps Area: Dependencies—Stuff we build on top of (eg. `uv.lock`, `pyproject.toml`) A-ci Area: Continuous Integration labels Mar 3, 2026
@danceratopz danceratopz changed the title chore(ci): Remove PyPy 3.11 chore(ci,deps): remove PyPy 3.11 Mar 3, 2026
@danceratopz danceratopz changed the title chore(ci,deps): remove PyPy 3.11 chore(ci,deps): remove PyPy 3.11 support Mar 3, 2026
@danceratopz
Copy link
Copy Markdown
Member

I'd add that we're making a lot changes at the mo 😆 and I don't have the overview of how they all interplay. Perhaps @kevaundray does :-) I mean, how does #2370 impact pypy vs cpython?

Since Python 3.13 (Cpython) is now faster than Python 3.11 (PyPy), we can use Python 3.13/3.14 for the usecases that we were using PyPy for.

Btw, @kevaundray what was statement this based on? It doesn't seem to be consensus in public benchmarks. Is it just the case for our codebase?

Of course, if we don't need pypy (because it's not faster), I'm happy to drop support.

@kevaundray
Copy link
Copy Markdown
Contributor Author

I'd add that we're making a lot changes at the mo 😆 and I don't have the overview of how they all interplay. Perhaps @kevaundray does :-) I mean, how does #2370 impact pypy vs cpython?

Since Python 3.13 (Cpython) is now faster than Python 3.11 (PyPy), we can use Python 3.13/3.14 for the usecases that we were using PyPy for.

Btw, @kevaundray what was statement this based on? It doesn't seem to be consensus in public benchmarks. Is it just the case for our codebase?

Of course, if we don't need pypy (because it's not faster), I'm happy to drop support.

Hey ser,

Yeah I was only basing it off of the CI times for testing in this codebase, given pypy is testing about a third of cpython

@danceratopz
Copy link
Copy Markdown
Member

Yeah I was only basing it off of the CI times for testing in this codebase, given pypy is testing about a third of cpython

Fair :) I was just wondering if you had any other specific benchmarks as you've been digging around a lot!

@kevaundray
Copy link
Copy Markdown
Contributor Author

Yeah I was only basing it off of the CI times for testing in this codebase, given pypy is testing about a third of cpython

Fair :) I was just wondering if you had any other specific benchmarks as you've been digging around a lot!

Makes sense! -- happy to do a mainnet sync if you have the command -- was mainly using the CI testcases as a proxy for this codebase

@kevaundray
Copy link
Copy Markdown
Contributor Author

Spoke with @SamWilsn , who has now merged in #2482 -- so will close this

@kevaundray kevaundray closed this Mar 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-ci Area: Continuous Integration A-deps Area: Dependencies—Stuff we build on top of (eg. `uv.lock`, `pyproject.toml`) C-chore Category: chore

Projects

None yet

Development

Successfully merging this pull request may close these issues.

PyPy3 runs tests way slower than CPython

2 participants