Skip to content

Build abi3.abi3t wheels for CPython 3.15+ - #15496

Merged
alex merged 7 commits into
pyca:mainfrom
mayeut:cp315-abi3t
Sep 5, 2026
Merged

Build abi3.abi3t wheels for CPython 3.15+#15496
alex merged 7 commits into
pyca:mainfrom
mayeut:cp315-abi3t

Conversation

@mayeut

@mayeut mayeut commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

This is a follow-up on #15063 which updates the wheel-builder workflow to build abi3.abi3t wheels for CPython 3.15+ now that CPython 3.15.0rc1 is available.

From #15063:

What's the next step after merging this?

Probably worth doing a dry-run of the release automation to verify that you do actually get three wheels per platform out to upload to PyPI. Other than that, I think just a release advertising Python 3.15 support.

Release automation uses the wheel-builder workflow updated here.
Python 3.15 has been added in project classifiers.

@alex alex left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@reaperhulk do we want to drop 3.14t wheels as soon as we're doing abi3t wheels? I strongly prefer that, but curious for your views.

with:
python-version: ${{ inputs.python-version }}
architecture: ${{ inputs.arch }}
allow-prereleases: ${{ inputs.python-version == '3.15t' }}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We do not want to ever use allow-prereleases. If you want to use a pre-release, you should specify the version.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I removed the usage of allow-prereleases.
Depending on the decision by maintainers regarding when this should be available, the modifications could be reduced for Windows if after 3.15.0.final (they can always be reverted after 3.15.0.final if this goes in before that)

@reaperhulk

Copy link
Copy Markdown
Member

@reaperhulk do we want to drop 3.14t wheels as soon as we're doing abi3t wheels? I strongly prefer that, but curious for your views.

Normally I’d be strongly against that, but I think free-threaded consumers are pretty aggressive in their upgrades right now.

However, if we’re shipping abi3t day 1 of 3.15 we’re cutting off wheels for every existing free-threaded consumer so I think we need one release with both?

@alex

alex commented Aug 22, 2026

Copy link
Copy Markdown
Member

Well, we'd need to choose when we want to do a release with this. Are we gonig to try to have it for 3.15 release day?

@alex alex added this to the Fifty First Release milestone Aug 26, 2026
@alex

alex commented Sep 2, 2026

Copy link
Copy Markdown
Member

Ok, we've discussed and we'd like to land this in the next month and then we'll backport it and do a point release. Can you fix the merge conflicts? THanks!

Comment on lines -312 to +335
PYTHON: {VERSION: "3.15-dev", "ABI_VERSION": "py311"}
PYTHON: {VERSION: "3.15.0-rc.2", "ABI_VERSION": "abi3t-py315", FREETHREADED: true}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Despite the "ABI_VERSION": "py311", this axis from #15350 was building a cp315-abi3.abi3t so I changed it to accurately reflect this.

@mayeut

mayeut commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

Just some notes:

  • Linux is still using 3.150rc1 and would need an image rebuild based on the latest manylinux images to pick-up 3.15.0rc2
  • CI failures seem like transient network errors

@alex

alex commented Sep 3, 2026

Copy link
Copy Markdown
Member

Thanks! I just kicked off a rebuild of our docker images, so rc2 should be available momentarily.

@mayeut

mayeut commented Sep 4, 2026

Copy link
Copy Markdown
Contributor Author

Linux is now getting 3.15.0rc2 after the rebuild of docker images

Comment on lines +326 to +327
- {VERSION: "3.14t", FREETHREADED: true}
- {VERSION: "3.15.0-rc.2", "ABI_VERSION": "abi3t-py315", FREETHREADED: true}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

hmm, why do these need the FREETHREADED: true, is the t in the version not sufficient?

@mayeut mayeut Sep 5, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

It's only for consistency when t is in the version spec but the 3.15.0-rc.2 version can't have t in its spec (setup-python limitation) which is why FREETHREADED was a needed addition in the first place.
Relates to #15496 (comment) (although the comment was not explicit about which modification was added for rc vs final, this is the one).

@alex alex left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Besides that question, this lgtm

@alex
alex merged commit 1d428a1 into pyca:main Sep 5, 2026
131 checks passed
@mayeut
mayeut deleted the cp315-abi3t branch September 5, 2026 15:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants