Skip to content

Conversation

neutrinoceros
Copy link
Contributor

This contains a couple separable changes:

  • enable building limited-API compliant wheels
  • make CI actually produce abi3 wheels (intended for both testing and publication)
  • move as much configuration as possible for cibuildwheel into pyproject.toml

Note that abiding to the limited API drastically improves wheels portability, but may incur a cost in performance. In my experience so far with packages using Cython+numpy to build extensions, I haven't seen any measurable performance regression anywhere, but I still strongly advise experts to run benchmarks before blessing the PR as the default way to build wheels for this package.

@neutrinoceros neutrinoceros force-pushed the whl/abi3 branch 4 times, most recently from ccbf3a7 to ade4072 Compare September 15, 2025 18:46
@ocefpaf
Copy link
Collaborator

ocefpaf commented Sep 15, 2025

Python 3.9 EoL is next month. What do you all think if we drop it now in this PR?

@neutrinoceros
Copy link
Contributor Author

Python 3.9 EoL is next month. What do you all think if we drop it now in this PR?

As far as I'm concerned I'd rather do it in a separate PR, but I'm happy to contribute this too, either now or after this PR is ready (and merged ?).

@neutrinoceros
Copy link
Contributor Author

I'm also working on cftime to modernize infrastructure before I attempt to do the same thing there: Unidata/cftime#371

@neutrinoceros neutrinoceros force-pushed the whl/abi3 branch 2 times, most recently from 8a417c8 to ccfe53c Compare September 16, 2025 18:12
@neutrinoceros
Copy link
Contributor Author

The remaining failures seem unrelated (stubtests + a network error), so I'll undraft now

@neutrinoceros neutrinoceros marked this pull request as ready for review September 16, 2025 18:23
@jswhit jswhit requested a review from ocefpaf September 20, 2025 15:38
@ocefpaf
Copy link
Collaborator

ocefpaf commented Sep 20, 2025

@jswhit this is highly desirable IMO, it will reduce the build matrix and make it easier to maintain them. We could do some dev releases if you want to be careful and have more people testing the performance impacts. However, I'm 99% sure they'll be minor and the benefits will outweigh the disadvantages.

PS: I would remove py39 here b/c we are unlikely to mint a new version release before its EoL. It will reduce the matrix even further and remove on of the matrix items where ABI3 isn't possible.

@neutrinoceros
Copy link
Contributor Author

Rebased to resolve merge conflicts, and added a commit to drop 3.9

@neutrinoceros neutrinoceros force-pushed the whl/abi3 branch 2 times, most recently from 9450110 to 0c6af9c Compare September 20, 2025 18:06
@neutrinoceros
Copy link
Contributor Author

Should I also add a 'Programming Language :: Python :: 3.14' PyPI classifier while I'm at it ?

@jswhit
Copy link
Collaborator

jswhit commented Sep 22, 2025

good idea, please do

@neutrinoceros
Copy link
Contributor Author

done !

@jswhit jswhit merged commit bd4302b into Unidata:master Sep 22, 2025
33 of 34 checks passed
@neutrinoceros neutrinoceros deleted the whl/abi3 branch September 23, 2025 06:12
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.

3 participants