Skip to content

Officially add Windows ARM64 to tier 1.5 #10549

Description

@seibert

As per the Tier 1.5 discussion in #10406 (and the open PR to add the definition into the docs in #10548), I'd like to propose we add Windows ARM64 to Tier 1.5 over the next few months.

Windows on ARM64 is becoming more popular, and we've seen several requests for native support:

Initially I think we should add just Python 3.14 support (no free-threading) as a test. I expect most bugs will be either related to word sizes or LLVM linker issues with MCJIT, so once we are happy with it, we can talk about expanding the support to more Python versions.

Activity

  1. esc commented on Apr 21, 2026

    @esc
    Member

    This was discussed during the maintainer meeting today and no objections to moving forward with this were raised:

    https://hackmd.io/vYBWLcuZT7eYj4vDyCzZAw

  2. seibert commented on Jun 10, 2026

    @seibert
    ContributorAuthor

    Hi, just wanted to update this issue to note that we are actively working on this. I don't have a precise ETA yet, because we expect to discover if LLVM (especially MCJIT) has any yet-unknown Windows ARM64 bugs that impact Numba. We're hoping to have something building in GHA, even if not fully working, by the end of the month, and want to ship experimental packages hopefully around the time that Python 3.15 is released.

  3. MugundanMCW commented on Jun 10, 2026

    @MugundanMCW

    Hi @seibert

    Currently, there is one bug in llvmlite on windows ARM64 which is affecting the Unicodesets test cases in Numba. Kindly refer to the following trackers:

    Thanks

  4. MugundanMCW commented on Jul 22, 2026

    @MugundanMCW

    Hi @seibert,
    Now that the PR fixing the Numba UnicodeSet test failures has been merged, could you share the ETA for the Windows ARM64 releases?

  5. swap357 commented on Jul 22, 2026

    @swap357
    Contributor

    Hi @seibert, Now that the PR fixing the Numba UnicodeSet test failures has been merged, could you share the ETA for the Windows ARM64 releases?

    Hello @MugundanMCW,
    Release candidates for llvmlite 0.49 and Numba 0.67 are currently being prepared. These releases will include numpy2.5 support and the first Windows ARM64 binaries, both conda packages and wheels.

  6. MugundanMCW commented on Jul 23, 2026

    @MugundanMCW

    Thanks @swap357 for sharing the ETA

  7. swap357 commented on Aug 12, 2026

    @swap357
    Contributor

    Windows-arm64 wheels are now available with Numba 0.67.0 and llvmlite 0.49.0
    https://pypi.org/project/numba/0.67.0/#files
    Please test and post any findings.

  8. MugundanMCW commented on Aug 12, 2026

    @MugundanMCW

    sure @swap357, thanks

  9. jasperlittle commented on Aug 14, 2026

    @jasperlittle

    I have tried this with python 3.14 and 3.11 on both Windows and WSL, but unfortunately still have the same compilation error. Testing the minimal example from the docs:

    from numba import jit
    import numpy as np
    
    x = np.arange(100).reshape(10, 10)
    
    @jit
    def go_fast(a):
        trace = 0.0
        for i in range(a.shape[0]):
            trace += np.tanh(a[i, i])
        return a + trace
    
    print(go_fast(x))

    gives

    DefIdx 1 exceeds machine model writes for early-clobber %25:gpr64sp, %26:gpr64 = LDRXpost %4:gpr64sp(tied-def 0), 8 ::(load (s64) from %ir.lsr.iv9)
     (Try with MCSchedModel.CompleteModel set to false)incomplete machine model
    UNREACHABLE executed at C:\a\_temp\conda-base\conda-bld\llvmdev_1782178184130\work\llvm\lib\CodeGen\TargetSchedule.cpp:226!
    

    Numba was installed in a clean venv from the wheel.

    numba -s from Windows with Python 3.14

    __Time Stamp__
    Report started (local time)                   : 2026-08-14 10:20:00.170197
    UTC start time                                : 2026-08-14 08:20:00.170223
    Running time (s)                              : 2.661254
    
    __Hardware Information__
    Machine                                       : ARM64
    CPU Name                                      : oryon-1
    CPU Count                                     : 12
    Number of accessible CPUs                     : ?
    List of accessible CPUs cores                 : ?
    CFS Restrictions (CPUs worth of runtime)      : None
    
    CPU Features                                  : aes bf16 crc dotprod fullfp16 i8mm
                                                    jsconv lse rcpc sha2
    
    Memory Total (MB)                             : 59973
    Memory Available (MB)                         : 19395
    
    __OS Information__
    Platform Name                                 : Windows-11-10.0.26200-SP0
    Platform Release                              : 11
    OS Name                                       : Windows
    OS Version                                    : 10.0.26200
    OS Specific Version                           : 11 10.0.26200 SP0 Multiprocessor Free
    Libc Version                                  : ?
    
    __Python Information__
    Python Compiler                               : MSC v.1944 64 bit (ARM64)
    Python Implementation                         : CPython
    Python Version                                : 3.14.4
    Python Locale                                 : en_AU.cp1252
    
    __Numba Toolchain Versions__
    Numba Version                                 : 0.67.0
    llvmlite Version                              : 0.49.0
    
    __LLVM Information__
    LLVM Version                                  : 22.1.0
    
    __CUDA Information__
    CUDA Target Implementation                    : Built-in
    CUDA Device Initialized                       : False
    CUDA Driver Version                           : ?
    CUDA Runtime Version                          : ?
    CUDA NVIDIA Bindings Available                : ?
    CUDA NVIDIA Bindings In Use                   : ?
    CUDA Minor Version Compatibility Available    : ?
    CUDA Minor Version Compatibility Needed       : ?
    CUDA Minor Version Compatibility In Use       : ?
    CUDA Detect Output:
    None
    CUDA Libraries Test Output:
    None
    
    __NumPy Information__
    NumPy Version                                 : 2.5.2
    NumPy Supported SIMD features                 : ('NEON', 'NEON_FP16', 'NEON_VFPV4', 'ASIMD')
    NumPy Supported SIMD dispatch                 : ('ASIMDHP', 'ASIMDDP', 'ASIMDFHM')
    NumPy Supported SIMD baseline                 : ('NEON', 'NEON_FP16', 'NEON_VFPV4', 'ASIMD')
    
    __SVML Information__
    SVML State, config.USING_SVML                 : False
    SVML Library Loaded                           : False
    llvmlite Using SVML Patched LLVM              : False
    SVML Operational                              : False
    
    __Threading Layer Information__
    TBB Threading Layer Available                 : False
    +--> Disabled due to Unknown import problem.
    OpenMP Threading Layer Available              : True
    +-->Vendor: MS
    Workqueue Threading Layer Available           : True
    +-->Workqueue imported successfully.
    
    __Numba Environment Variable Information__
    None found.
    
    __Conda Information__
    Conda not available.
    
    __Installed Packages__
    Package  Version
    -------- -------
    llvmlite 0.49.0
    numba    0.67.0
    numpy    2.5.2
    pip      26.2.1
    
    No errors reported.
    
    
    __Warning log__
    Warning (cuda): CUDA driver library cannot be found or no CUDA enabled devices are present.
    Exception class: <class 'numba.cuda.cudadrv.error.CudaSupportError'>
    Warning: Conda not available.
    Warning (psutil): psutil cannot be imported. For more accuracy, consider installing it.
    

  10. gmarkall commented on Aug 14, 2026

    @gmarkall
    Member

    Looks like another oryon-specific backend error in LLVM. @jasperlittle if you set the environment variable NUMBA_CPU_NAME="generic", does that work around the issue?

  11. jasperlittle commented on Aug 14, 2026

    @jasperlittle

    @gmarkall yup, that works fine on both Windows and WSL

  12. swap357 commented on Aug 14, 2026

    @swap357
    Contributor

    This might be same issue as #10388 and needs this suggested patch #10388 (comment) to llvmdev. I'm working to rebuild llvmdev for next release as part of manylinux image upgrade (numba/llvmlite#1471), can someone open a PR with that patch to llvmdev recipe ? I can review it.

  13. MugundanMCW commented on Aug 15, 2026

    @MugundanMCW

    Yeah sure @swap357, let me create a PR with this patch

  14. esc commented on Aug 28, 2026

    @esc
    Member

    @seibert I think with the availability of artifacts for win-arm64 and a mention in the docs:

    Wheel packages on the PyPI distribution system and conda packages on the Anaconda dot org distribution system for Python 3.14 only. Support for additional Python versions may be added in the future.
    
        win-arm64 (Windows on 64-bit ARM)
    

    This can be closed now? Artifacts are available, CI is setup, support is documented.

  15. esc commented on Aug 28, 2026

    @esc
    Member

    FYI: since more versions below 3.14 are no supported, here is a PR to update the docs:

    #10805

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

    needs triage/maintainer discussionFor an issue/PR that needs discussion at a triage/maintainer meeting

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions