Skip to content

Support for Windows on ARM wheels #9629

Closed

Description

@MGN-GIT

PR Description:

  • The adoption of Windows on ARM (WoA) devices is steadily increasing, yet many Python wheels are still not available for this platform.
  • GitHub Actions now offer native CI runners for Windows on ARM devices (windows-11-arm), enabling automated builds and testing.
  • Currently, official statsmodels Python wheels are not provided for Windows ARM64 and thus users/developers were facing difficulties using popular statsmodels library natively.
  • Now SciPy and NumPy are released for Windows on ARM, having statsmodel wheels for Windows on ARM would be highly appreciated :)

Activity

  1. bashtage commented on Sep 12, 2025

    @bashtage
    Member

    Need a pandas release that supports arm64 on Windows in order to test, which is required before we can release.

  2. bashtage commented on Sep 12, 2025

    @bashtage
    Member

    First attempt failed due to changes in NumPy's npymath library structure.

    #xref numpy/numpy#29747

  3. MGN-GIT commented on Sep 12, 2025

    @MGN-GIT
    Author

    @bashtage I have a local Windows on ARM setup, let try to reproduce from my side and let you know

  4. bashtage commented on Sep 13, 2025

    @bashtage
    Member

    main is now building on win-arm64

    Image

    Probably won't be on PyPI until the next release, and we will likely need win-arm64 pandas since it is required for the tests.

  5. MGN-GIT commented on Sep 13, 2025

    @MGN-GIT
    Author

    @bashtage this is really great and highly appreciable, thanks for adding the support. I could see that Pandas already supports Windows ARM builds in the wheel builder, might be releasing wheels in the next minor release. Could you share some information (ETA) on the next official release for statsmodel?

  6. bashtage commented on Sep 13, 2025

    @bashtage
    Member

    Ideally it would be sometime this fall, but hard to say. First pandas, then maybe some patches, and only then would be put out a wheel on PYPi. This said, dailies will be available on anaconda in the coming days.

  7. bashtage commented on Sep 13, 2025

    @bashtage
    Member
  8. MGN-GIT commented on Sep 13, 2025

    @MGN-GIT
    Author

    Thanks, will keep an eye on Panda's release

  9. bashtage commented on Oct 30, 2025

    @bashtage
    Member

    There are many failing tests when trying to run on Windows on Arm. I don't have any hardward so would really need someone to work through these failures and find the root cause (and submit PRs).

  10. bashtage commented on Oct 30, 2025

    @bashtage
    Member

    Small correction - the failures are actually segfaults. Most appear to be related to models that use the Poisson. I suspect that there is an issue somewhere in SciPy or NumPy as we don't have any compiled code in these models.

  11. bashtage commented on Oct 31, 2025

    @bashtage
    Member

    First hint as to the ultimate source

    2025-10-30T18:09:48.5055765Z   File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-w3cdw1ru\cp313-win_arm64\venv-test\Lib\site-packages\numpy\linalg\_linalg.py", line 669 in inv
    2025-10-30T18:09:48.5056878Z   File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-w3cdw1ru\cp313-win_arm64\venv-test\Lib\site-packages\statsmodels\genmod\generalized_linear_model.py", line 1387 in _fit_gradient
    2025-10-30T18:09:48.5058174Z   File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-w3cdw1ru\cp313-win_arm64\venv-test\Lib\site-packages\statsmodels\genmod\generalized_linear_model.py", line 1305 in fit
    2025-10-30T18:09:48.5059299Z   File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-w3cdw1ru\cp313-win_arm64\venv-test\Lib\site-packages\statsmodels\base\_penalized.py", line 213 in fit
    2025-10-30T18:09:48.5060682Z   File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-w3cdw1ru\cp313-win_arm64\venv-test\Lib\site-packages\statsmodels\base\_screening.py", line 297 in screen_exog
    2025-10-30T18:09:48.5061956Z   File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-w3cdw1ru\cp313-win_arm64\venv-test\Lib\site-packages\statsmodels\base\tests\test_screening.py", line 160 in test_glmpoisson_screening
    

    Looks like a segfault in matrix inversion via NumPy.

  12. khmyznikov commented on Jan 21, 2026

    @khmyznikov

    @bashtage segfaults on scipy sides are gone. pandas just got 3.0 release with WoA support.

  13. bashtage commented on Jan 21, 2026

    @bashtage
    Member

    We can see what happens now then.

  14. khmyznikov commented on Mar 27, 2026

    @khmyznikov

    @bashtage I don't see any nighthly builds anymore for some reason... What's the current state of this effort? Any new blocking issues?

  15. bashtage commented on Mar 28, 2026

    @bashtage
    Member

    Oh, you are looking for ARM. I don't think we've had ARM succeed yet, and it isn't part of the nightly build.

  16. khmyznikov commented on Mar 28, 2026

    @khmyznikov

    @bashtage I bet it was there last September. What's the current issues? Still some instabilities have occurs? Could you point me to the logs?

  17. rgommers commented on Mar 29, 2026

    @rgommers
    Member

    I think that's a known issue: numpy/numpy#29442

  18. bashtage commented on Mar 31, 2026

    @bashtage
    Member

    After skipping two tests that segfault on win-arm64, the test suite passes. The next challenge is determinine how to get the nightlies to upload. We use miniforge which does not have an arm64 installer. Any ideas?

  19. rgommers commented on Mar 31, 2026

    @rgommers
    Member

    Two options:

    1. Switch to building all wheels, then accumulate them all in a single job with artifact-upload/artifact-download, then upload them in a single job running on Linux x86-64 (scipy-release just switched to this, TBD if there are any issues with rate limits).
    2. Handle win-arm64 specially like so: https://github.com/numpy/numpy-release/blob/2c5bc070bce1ac72bafdb66f115f1446916e67a2/.github/workflows/wheels.yml#L150-L168
  20. bashtage commented on Apr 1, 2026

    @bashtage
    Member

    I was wrong about the passing of Windows-ARM64. It is still consistently segfaulting inv operations, e.g.,

        File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-3ijbha8c\cp313-win_arm64\venv-test\Lib\site-packages\numpy\linalg\_linalg.py", line 648 in inv
        File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-3ijbha8c\cp313-win_arm64\venv-test\Lib\site-packages\statsmodels\tsa\statespace\kalman_smoother.py", line 1687 in smoothed_state_gain
    

    This needs to be fixed upstream (OpenBLAS or NumPy, depending) before it will be possible to release for Windows-ARM64.

  21. bashtage commented on Apr 1, 2026

    @bashtage
    Member

    If anyone has a Windows-ARM64 devide wiht a different CPU, it would be great if you could see if the statsmodels test suit can run on your CPU (to see if it is a kernel-specific bug in OpenBLAS)

  22. bashtage commented on Apr 1, 2026

    @bashtage
    Member

    I will add the failing Windows-ARM64 build so that if it is fixed upstream, the wheels will start showing up in nightlies.

    xref MacPython/statsmodels-wheels#191

  23. xieofxie commented on Sep 23, 2026

    @xieofxie

    I will add the failing Windows-ARM64 build so that if it is fixed upstream, the wheels will start showing up in nightlies.

    xref MacPython/statsmodels-wheels#191

    it shows up now https://anaconda.org/channels/scientific-python-nightly-wheels/packages/statsmodels/files?file_q=win_arm64 and also in pypi. so it is resolved ?

  24. bashtage commented on Sep 28, 2026

    @bashtage
    Member

    I think it is resolved. They still fail the test suite but this is upstream to us.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions