Skip to content

NEP 57: NumPy platform support#30748

Merged
mattip merged 7 commits into
numpy:mainfrom
rgommers:nep-platform-support
Feb 11, 2026
Merged

NEP 57: NumPy platform support#30748
mattip merged 7 commits into
numpy:mainfrom
rgommers:nep-platform-support

Conversation

@rgommers

Copy link
Copy Markdown
Member

This is a rough draft, with the purpose of agreeing on the principles first on the mailing list before polishing the text. Please keep the big picture discussion on the mailing list. Edits for correctness/completeness are of course welcome on this PR already.

Relevant issues and PRs for one specific platform:

@bashtage

Copy link
Copy Markdown
Contributor

FWIW there is some pressure to provide windows ARM wheels for statsmodels. So far we haven't although recent pandas may make it more likely. The big issues for us is that no one has a local windows ARM computer so it is really tedious to try and figure out any windows ARM specific issues using only CI.

Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
@ngoldbaum

Copy link
Copy Markdown
Member

The big issues for us is that no one has a local windows ARM computer so it is really tedious to try and figure out any windows ARM specific issues using only CI.

If anyone has an ARM macbook, you can run ARM Windows in a VM pretty easily. Sadly Microsoft hasn't yet published free images for this purpose so you need a Windows license or an unlicensed install.

@rgommers

rgommers commented Jan 30, 2026

Copy link
Copy Markdown
Member Author

@bashtage a few thoughts:

Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
Comment thread doc/neps/nep-0057-numpy-platform-support.rst
Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
@andyfaff

Copy link
Copy Markdown
Member

Thank you for providing leadership on this @rgommers. It would be good to point to something when we get these questions. I think downstream packages will also use this NEP.

Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
Comment thread doc/neps/nep-0057-numpy-platform-support.rst
@charris

charris commented Feb 2, 2026

Copy link
Copy Markdown
Member

Should we also include dropping support in this NEP? Current examples would be PyPy, Mac on X86_64, and 32 bit Windows.

@rgommers

rgommers commented Feb 2, 2026

Copy link
Copy Markdown
Member Author

Should we also include dropping support in this NEP?

There are several comments on decision making. I'm not sure if we can make it much more precise than:

  • Moving a platform to a lower support tier must be discussed on the mailing list.
  • Moving a platform to a higher support tier this includes releasing wheels on PyPI for that platform must be discussed on the mailing list.

Everything else, and especially for "dropping" is going to be quite case-specific I'd think. Am I missing something? Happy to be convinced to add more detail, I'm just not sure what to write that can be useful and generally applicable.

@ngoldbaum

Copy link
Copy Markdown
Member

Maybe just changing this:

Moving a platform to a lower support tier must be discussed on the mailing list.

to this:

Moving a platform to a lower support tier or dropping support must be discussed on the mailing list. The circumstances for each platform are unique so the community will evaluate each platform on a case-by-case basis.

It amounts to the same thing but more clearly states that dropping support is a thing and that there isn't a hard-and-fast rule.

@rgommers

rgommers commented Feb 3, 2026

Copy link
Copy Markdown
Member Author

It amounts to the same thing but more clearly states that dropping support is a thing and that there isn't a hard-and-fast rule.

I included that now, thanks.

@mattip

mattip commented Feb 3, 2026

Copy link
Copy Markdown
Member

I wonder why docs CI is not running here, are we excluding NEPs from any CI?

NEP0 states

At the earliest convenience, the PR should be merged (regardless of whether it is accepted during discussion). Additional PRs may be made by the Author to update or expand the NEP, or by maintainers to set its status, discussion URL, etc.

so I think we should merge this whenever the author feels it is can be taken out of PR-draft (as opposed to NEP-draft) status

Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
@rgommers

rgommers commented Feb 4, 2026

Copy link
Copy Markdown
Member Author

I wonder why docs CI is not running here, are we excluding NEPs from any CI?

Just because I added [ci skip] on the last commit

so I think we should merge this whenever the author feels it is can be taken out of PR-draft

I'll do one more round to get it there.

@rgommers

rgommers commented Feb 4, 2026

Copy link
Copy Markdown
Member Author

One question I had was names of one or more maintainers to put behind the Tier 2 platforms, now that it seems everyone is fine with that principle. I also didn't want to make assumptions without asking, so let me do that here:

  • musllinux x86-64 and aarch64: I'm happy to put my name there. @andyfaff would you be interested as well? I think you've done most of the heavy lifting for this.
  • free-threaded Python: @ngoldbaum do you want to be added? I'll sign up for that one too.

@rgommers

rgommers commented Feb 4, 2026

Copy link
Copy Markdown
Member Author

Oh sorry, should have asked for Tier 3 as well

  • FreeBSD: this was me wanting that CI job to avoid build system regressions, so I'll add myself
  • Linux ppc64le:
    • @seiko2plus since you tend to fix the harder SIMD and compiler issues: do you want to be added?
    • In case there's an IBM team member that wants to be added, we can do that as well. @sandeepgupta12 you did most of the heavy lifting, so maybe you have an interest?
  • Emscripten/Pyodide: @agriyakhetarpal since you did a lot of the work and we tend to ping you for puzzling stuff: do you want to be added for this platform?

@rgommers

rgommers commented Feb 4, 2026

Copy link
Copy Markdown
Member Author

Out of the Tier 1 platforms, only Windows arm64 seems a bit questionable - it might be early; setup-python has had an issue for a month with it, we had an issue in wheel build jobs because cryptography dropped win_arm64 wheels, etc. - maybe that should be Tier 2 instead?

being shipped, for NumPy or for a comparable project, then download data
from PyPI may be obtained through BigQuery. For new platforms, sources
like the*
`Steam Hardware & Software Survey <https://store.steampowered.com/hwsurvey/?platform=combined>`__

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This website reports only PC counts and does not include the server market, which makes it an unreliable way to gauge this.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

"sources like" indicates that. If data for server platforms is needed for a specific proposal, then more suitable data sources are very welcome. We've just never done that exercise before, so I have nothing to point to - suggestions are very welcome.

@andyfaff

andyfaff commented Feb 4, 2026

Copy link
Copy Markdown
Member

musllinux x86-64 and aarch64: I'm happy to put my name there. @andyfaff would you be interested as well? I think you've done most of the heavy lifting for this.

I'd prefer not to be added as a maintainer. My expertise here is limited to the build infrastructure, which doesn't cover if a build doesn't work due to e.g. compiler failures, or if there are test fails.

@rgommers

rgommers commented Feb 4, 2026

Copy link
Copy Markdown
Member Author

No worries at all, thanks for considering it @andyfaff

@ngoldbaum

Copy link
Copy Markdown
Member

Sure, I'm happy to be the contact person for free-threaded support.

@sandeepgupta12

Copy link
Copy Markdown
Contributor
  • n case there's an IBM team member that wants to be added, we can do that as well. @sandeepgupta12 you did most of the heavy lifting, so maybe you have an interest?

Sure, I'm happy to be the contact person for ppc64le.

@agriyakhetarpal

Copy link
Copy Markdown
Contributor
  • Emscripten/Pyodide: @agriyakhetarpal since you did a lot of the work and we tend to ping you for puzzling stuff: do you want to be added for this platform?

I'm happy to be a point of contact for Pyodide. Thanks for asking, @rgommers! I'd also ask @hoodmane and @ryanking13 to weigh in, since they can help reduce the bus factor – they also did a lot of the work back when pyodide-build did not support Meson/meson-python, when I was not yet involved.

@agriyakhetarpal agriyakhetarpal left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this proposal! thanks for writing it, Ralf! I left a few comments inline; some on language clarifications, and a few other questions. Besides these, I had a few other (hopefully small) suggestions:

  • non-blocking: perhaps we should have a sentence at the top to describe what "platform" means here? This is understandable to everyone involved here, obviously, but perhaps it would be useful to note that "platform" for the purposes of this document is not an OS/architecture combination in the traditional sense, but also encompasses interpreter variants, such as free-threaded CPython.
  • non-blocking: there's no reference to PyPI storage limits at the moment. I am aware that this is a NEP for platform support, but since you mentioned the Stable ABI, I think it warrants a brief acknowledgement, since there is a practical limit that will keep getting approached with time.
  • is there (or could there be) a grace period and/or call for new maintainers before demotung a platform? I assume it will all be discussed on the mailing list, but it doesn't describe what happens if/after a maintainer for a platform becomes unavailable.
  • since all wheels are released via the numpy-release repo, would it make sense for points of contact to be given triage/non-write permissions to it or be added as CODEOWNERS so that they can receive relevant pings? We do this for cibuildwheel and I've felt that it helps to have someone looking at what is being changed for a platform. edit: turns out this is not possible right now, and is a long-standing feature request for GitHub (of course it is 🤷🏻): https://github.com/orgs/community/discussions/23042, https://github.com/orgs/community/discussions/29982

P.S. while going through many of the historical discussions while reviewing this, I came across #20089 (comment), it's finally nice that this NEP will be landing soon :D

Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
Comment thread doc/neps/nep-0057-numpy-platform-support.rst
Comment thread doc/neps/nep-0057-numpy-platform-support.rst
Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
Comment on lines +168 to +169
- Linux x86-64 (manylinux)
- Linux aarch64 (manylinux)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Could you please explain (mostly for my curiosity) why musl wheels are Tier 2 rather than Tier 1? They are built on GitHub CI, released on PyPI, and from https://github.com/numpy/numpy/issues?q=%22musl%22, I think there have been fewer issues than usual post 2022/2023 after uploading PyPI wheels was finalised (though I don't know how much effort it takes for all maintainers to keep them working).

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

They're much more niche than manylinux, and we had a discussion about it that could have turned out differently. They're just not a must-have-so-we're-all-responsible.

Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
Comment thread doc/neps/nep-0057-numpy-platform-support.rst
Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
@ryanking13

Copy link
Copy Markdown
Contributor

I'm happy to be a point of contact for Pyodide. Thanks for asking, @rgommers! I'd also ask @hoodmane and @ryanking13 to weigh in, since they can help reduce the bus factor – they also did a lot of the work back when pyodide-build did not support Meson/meson-python, when I was not yet involved.

Sure, we care a lot to make all the numpy features work in Pyodide, and happy to be a point of contact.

[skip actions] [skipp cirrus] [skip azp]
@rgommers rgommers marked this pull request as ready for review February 6, 2026 14:21
@rgommers

rgommers commented Feb 6, 2026

Copy link
Copy Markdown
Member Author

so I think we should merge this whenever the author feels it is can be taken out of PR-draft

Thanks for the feedback everyone. Updated and taken out of draft now. I resolved all the straightforward and accepted comments, left the ones I replied to open. I think this is okay to merge as is now, probably after giving the reviewers with open comments at least a day or two to either resolve them or reply again.

@agriyakhetarpal agriyakhetarpal left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks, Ralf! Looking at your latest commit 6f49427 and the other threads above where you responded, my comments have been resolved. The PyPI storage limit suggestion I had will get encompassed by this sentence, since the discussion about storage limits will ultimately happen there:

Moving a platform to a higher support tier, if that higher tier includes releasing wheels on PyPI for that platform, must be discussed on the mailing list.

And I noticed that my comment about what "platform" is covered by the abstract, which I think I ended up missing because there was a comment in the GitHub UI over it.

Looking forward to this NEP; thanks for adding Gyeongjae and me to the list!

Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
@rgommers

rgommers commented Feb 9, 2026

Copy link
Copy Markdown
Member Author

Added Kumar, and changed the bullet lists of platforms to reST tables with more details and links out to tracking issues. I'm happy with how this looks now.

@mattip mattip 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.

Thanks, this looks really nice. A few nits. Shouldn't there be a link to the mailing list discussion in Discussion section?

Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
Comment thread doc/neps/nep-0057-numpy-platform-support.rst Outdated
| Linux ppc64le | Runs on IBM-provided self-hosted | Sandeep Gupta |
| | runners, see gh-22318_ | |
+--------------------+----------------------------------------+----------------------------------+
| Emscripten/Pyodide | We provide nightly wheels, used for | Agriya Khetarpal, Gyeongjae Choi |

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.

Let's not commit to permanent support?

Suggested change
| Emscripten/Pyodide | We provide nightly wheels, used for | Agriya Khetarpal, Gyeongjae Choi |
| Emscripten/Pyodide | We currently provide nightly wheels, used for | Agriya Khetarpal, Gyeongjae Choi |

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Accepted the comment; I didn't read it as permanent support either way though. Nothing except wheels on PyPI carries long-term guarantees.

+------------------------------------+--------------------------------+
| Platform | Notes |
+====================================+================================+
| PyPy | See gh-30416_ |

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.

Maybe remove PyPy since things are in a state of flux

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I'd like to keep it since it was a supported platform until very recently. I edited the note for clarity: "Was Tier 2 until the 2.4.x releases, see gh-30416"

[skip actions] [skip cirrus] [skip azp]
@charris

charris commented Feb 10, 2026

Copy link
Copy Markdown
Member

"Was Tier 2 until the 2.4.x releases

It is still in 2.4.x, we dropped it along with Python 3.11 in 2.5.

@rgommers

Copy link
Copy Markdown
Member Author

It is still in 2.4.x, we dropped it along with Python 3.11 in 2.5.

Yeah I know, with "until" I meant <=. Should I replace it with <=2.4 for clarity?

@charris

charris commented Feb 10, 2026

Copy link
Copy Markdown
Member

Ah, Fortran indexing :) Until has the implication "when it changed", <= would be clearer.

[skip actions] [skip cirrus] [skip azp]
@mattip

mattip commented Feb 11, 2026

Copy link
Copy Markdown
Member

Thanks @rgommers and all the reviewers. Let’s put this in

@mattip mattip merged commit 31ebbb8 into numpy:main Feb 11, 2026
2 checks passed
@rgommers rgommers deleted the nep-platform-support branch February 11, 2026 10:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.