On Tue, Nov 2, 2021 at 1:54 PM Niyas Sait <niyas.sait@linaro.org> wrote:

Numpy v1.21.2 added support for windows/arm64 platforms but we still don't have any systems in place to produce binary wheels or test win/arm64 packages. I think it will be good to start looking into this. CPython has an official buildbot worker running for win/arm64 and official python support for the platform will be available from the 3.11 release.

It is not yet clear to me how the build and CI system for numpy is deployed and how to enable support for a new platform like win/arm64.

For CI, it should all be publicly available (free for open source) CI. We use GitHub Actions and Azure DevOps for the heavy lifting, plus CircleCI (doc builds), and TravisCI (arm64, ppc64le, s390x).

One of the main issues in supporting win/arm64 build would be due to the lack of win/arm64 VMs available on the cloud. But I see we have been producing binary wheels for Apple M1 platforms on pypi and conda repository for some time which also lacks the cloud VM support. I think we could take some learnings from Apple M1 support and look at how a similar strategy can be used for win/arm64.

Hi Niyas, thanks for asking. The learnings are mainly that without regular CI resources being available, this is a huge pain (it's been a year since hardware became available, and support is still spotty). Apple M1 is a bit of a special case, because many users and contributors, and even a few maintainers, now have that hardware locally. On the other hand, Windows on arm64 is not really a thing yet that a significant amount of people have. So probably our stance is that we'll accept patches for it, but cannot think about custom CI build agents (too much maintenance overhead).

I would like to hear if anyone has any thoughts on this topic. Also, any pointers to understand numpy wheel generation and CI flow for similar platforms would be helpful as well.

Our current wheel build machinery is at https://github.com/MacPython/numpy-wheels/, but please ignore that. We just merged a PR which uses cibuildwheel into the main repo. That should be the target. If cibuildwheel has/gains the ability to produce win-arm64 wheels, that'd be a good first step towards support.

More generally: it'd be good to look at support in conda-forge, that had across-the-board macOS M1 support fairly soon, and is in general a much more capable setup for supporting new hardware like this.