Windows on Arm Environments

Windows on Arm Environments

We attempt to explore different options to run Windows on Arm64. The recommended option for best compatibility and performance is to use CoPilot+ PC.

CoPilot+ PCs and previous generation Windows on Arm devices

  • Surface books, and Thinkpad T14s with Snapdragon X-Plus and X-Elite processors are excellent Windows on Arm machines running Windows 11. This is the preferred choice for development.

  • Volterra dev boxes, laptops, and Surfaces (Snapdragon 8cx Gen3), running Windows 11 may not be available, but can be found cheaply on secondary markets. They serve as low cost alternatives, but it is worth noting that “you get what you pay for” applies here, and the performance improvement of the X Elite/X Plus machines is significant.

  • WinRT and Windows 10 based devices are not recommended, and in most cases have had support withdrawn.

Cloud providers - AWS, Oracle, Google, Azure

  • Windows Arm64 instances are currently offered only from Azure

  • https://actuated.dev/blog/native-arm64-for-github-actions

    • You have to maintain the software packages installed on that machine

    • If you use KinD or Docker, you’re going to run into conflicts between builds

    • Out of the box scheduling is poor - by default it only runs one build at a time there

  • Other cloud providers can provide a aarch64 linux instance

Windows ARM64 VM on AppleSilicon

Building applications using GitHub Actions for ARM64

  • Applications developed on Github may use GitHub Actions (currently available for paid accounts, free tier for open source projects expected in Q2 2025). GHA can be used to build WoA native binaries.

  • Billed per minute (until free tier available) as opposed to hourly on Azure, might prove to be more economical than getting virtual machines in Azure, but limited to actions.

Cross compiling on Linux boxes

  • Can be use for MSVC based projects but not recommended

https://github.com/mstorsjo/msvc-wine

  • Works well for LLVM, but would still need WoA box to run and test

  • No GCC support

windows-arm64 VM using QEMU-system on x64

  • Can bring up an emulated Arm64 VM within Windows x64

  • Acceptable for browsing and basic usage

  • Not suitable for compiling and running big projects.

Windows Emulation using QEMU-user and WINE on Linux X64

  • Use QEMU to emulate a ARM64 machine on Linux x64 machine

    QEMU https://gitlab.com/Linaro/windowsonarm/woa-linux

  • Wine is an experimental option that enables Windows apps to run on Linux. This is prone to frequent breakages and therefore not recommended for product quality software.

  • $ qemu-aarch64 /path/to/wine-arm64/wine ./program.exe

Docker image with WoA

Docker supports WoA images for development.