Windows on Arm Environments

Arm Laptop and dev boxes

  • Limited availability

  • Thinkpads x13 with Snapdragons are expensive.

  • Volterra is out of stock

  • Arm does not have any more to loan

  • Linaro has a couple to spare surface-10 / Volterra•

    • About 10 projects are being run on Linaro CI machines

    • Cannot club multiple projects as they are not running VMs / Docker images

    • Security implications.

    • Not a predictable environment. Prone to system downs.

  • Raspberry Pi could be used to run Windows

  • Faster than qemu-wine

Cross compiling on Linux boxes

•Can use for MSVC 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 a Arm64 VM within Windows x64

  • Acceptable for browsing an 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 enables a .exe to run on Linux

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

Docker image with WoA

  • Waiting on docker to support WoA

  • (Not a solution, but useful after WoA machine is available)

App Assure, FastTrack, TestBase

  • Expensive, need to buy licenses for 150 users

ARM instances from AWS, Oracle, Google, Azure

  • Azure offers Win arm64 instances using Ampere Altra

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

    • You now 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

  • Others can provide a aarch64 linux instance

Windows ARM64 VM using Parallels on AppleSilicon

  • Microsoft supported and good performance on Parallels

  • Expensive to buy a Mac and Parallels license

  • UTM is an alternative, but no MS license yet.

GitHub Actions for ARM64