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
“Parallels” software is Microsoft supported, and has good performance
Expensive option considering a modern Mac with at least 16 GB Ram and Parallels license.
UTM is the recommended open source alternative based on QEMU, and has good performance on Mac computers.
Windows 11 ARM64 ISO is available here:
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
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.