Windows on Arm
Windows has traditionally run on machines that are powered by x86 / x64 processors, but more recently, also runs on devices powered by Arm processors.
Arm-powered devices are particularly interesting because the power-frugal nature of the Arm architecture enables these devices to offer longer battery life while delivering great performance. Arm Systems on Chip (SoC) often include other key features such as a powerful CPU, GPU, Wi-Fi & mobile data networks, as well as Neural Processor Units (NPUs) for accelerating AI workloads.
Build Windows apps that run on Arm
Windows 10 enables existing unmodified x86 apps to run on Arm devices. Windows 11 adds the ability to run unmodified x64 Windows apps on Arm devices! This ability to run x86 & x64 apps on Arm devices gives end-users confidence that the majority of their existing apps & tools will run well even on new Arm-powered devices.
For the best performance, responsiveness, and battery life, users will want and need Arm-native Windows apps, which means that developers will need to build or port Arm-native Windows apps.
Arm developer tools
Microsoft is working to deliver an Arm-native developer toolset that includes Arm-native Visual Studio 2022, VSCode, VC++ toolchain, classic .NET Framework, modern .NET, and Java. Microsoft is also working with several 3rd parties and open-source communities to port common tools, runtimes, frameworks and libraries to natively target Windows on Arm. See the announcement from Build 2022 about this comprehensive suite of tools, services, and devices that enable developers to build and port apps that natively target Arm just as easily as when targeting x64.
Arm developer services
Many developers today also rely on Virtual Machines and Containers. Which is why Microsoft's Azure team recently announced a preview of their new Arm Virtual Machines service and will soon be previewing Arm Containers via Azure Kubernetes Services.
Most developers also rely on build and test automation via Continual Integration / Continual Deployment (CI/CD), often hosted in cloud services, like Azure DevOps or GitHub. In late Summer 2022, Microsoft will begin work to port the CI/CD automation runner/agent shared by Azure DevOps and GitHub. Details are coming soon regarding when cloud-hosted Arm CI/CD services will become available.
Arm developer devices
Developers need Arm devices upon which to build and test Arm-native Windows apps. Several Arm-powered devices are already available, including Surface Pro X and devices from our OEM partners, including the Lenovo ThinkPad X13S. These portable devices, whether a laptop form-factor device or convertible-tablet, offer great performance, battery life, and run the growing array of Arm-native developer tools.
Microsoft is also working on "Project Volterra" - an exciting new Arm-powered device built by Windows Developers, for Windows developers. Since "Project Volterra" is built on Qualcomm's Snapdragon Compute Platform and sports a powerful Neural Processing Unit (NPU), this will be a great device for AI researchers and developers looking to integrate AI into their apps and experiences. More details about "Project Volterra" will be announced later this year.
Arm64EC - Build apps for Windows 11 on Arm
Arm64EC (“Emulation Compatible”) enables you to incrementally build new apps, or port existing apps, to take advantage of native Arm performance where possible, while utilizing existing x64 code & libraries until fully migrated. Learn more:
Support for existing Windows apps on Arm
Windows on Arm runs native Arm apps, as well as many unmodified x86 & x64 apps, but for the best performance and battery life, apps should be built to be Arm-native wherever possible. Windows apps can be built using many different tools and technologies, including native C/C++ Win32 apps, classic .NET Framework WinForms/WPF apps, modern .NET or MAUI apps, or even apps built using Java, Python, node, etc.
Find tools for Arm development
Windows offers a variety of tools and frameworks to support app development for Arm, on Arm.
- The new Arm-native Visual Studio includes Visual C++, .NET & .NET Framework and Java and will enable developers to natively build and debug Arm apps on Arm-based devices. Learn more in the blog announcement.
- Visual Studio Code natively supports Arm and can be installed on Arm devices. The VS Code C++ extension also offers C++ IntelliSense and build support for developing Windows apps that run natively on Arm64 devices.
- .NET 6 already supports Arm, both for native Arm execution and x64 emulation. To develop .NET apps that run natively on Arm64 devices, we recommend installing the new Arm native Visual Studio 2022 Preview, and the latest .NET 7 Preview Arm64 SDK. Learn more about .NET 7 support for Arm on the .NET Blog.
- .NET 6 Arm64 SDK: By default, if you
dotnet runa .NET 6 app with the Arm64 SDK, it will run as Arm64. The
dotnet-runtimeinfotool can be used to discover the environment that .NET is running on. See the .NET 6 blog announcement on Arm64 support to learn more.
We use the term Arm as a shorthand for PCs that run the desktop version of Windows on Arm64 (also commonly called AArch64) processors. We use the term Arm32 here as a shorthand for the 32-bit Arm architecture (commonly called Arm in other documentation). PCs powered by Arm provide great application compatibility and allow you to run your existing unmodified x86 win32 applications. Arm apps run natively without any emulation, while x86 amnd x64 apps run under emulation on Arm devices.
Additional tips for developing Windows apps that run on Arm devices
Not all Visual Studio projects are configured to launch projects locally when you start debugging (F5) from an Arm device. You may need to configure Visual Studio for remote debugging, even though your app is running locally. For more information, see remote debugging.
To find and install the recommended packages on Visual Studio, visit the Visual Studio downloads page.
- For the Remote Tools for Visual Studio 2022, scroll below the All downloads section and expand the Tools for Visual Studio 2022 drop-down menu. Remote Tools for Visual Studio 2022 will be listed there. Be sure to check the Arm64 radio button, then Download.
- For the Microsoft Visual C++ Redistributable, scroll below the All downloads section and expand the Other tools and Frameworks drop-down menu. Microsoft Visual C++ Redistributable for Visual Studio 2022 will be listed there. Be sure to check the Arm64 radio button, then Download.
- If you are using an older version of Visual Studio, select the Older Downloads link at the bottom of the page to search for the downloads associated with your version of Visual Studio.
When a user installs your app on an Arm device from the Microsoft Store, Windows 11 will automatically select the optimal version of your app that is available. If you submit x86, Arm32, and Arm64 versions of your app to the Microsoft Store, the operating system will automatically install the Arm64 version of your app. If you only submit x86 and Arm32 versions of your app, the operating system will install the Arm32 version. If you only submit the x86 version of your app, the operating system will install that version and run it under emulation.
When given the choice of app architecture, choose the 32-bit x86 version to run the app's 32-bit version on a Windows on Arm PC. If an app's x64 Win32 version doesn't work, most apps will have an x86 version available.
For more information about architectures, see App package architectures.
- Satya Nadella's Build 2022 keynote announcing "Project Volterra"
- How x86 emulation works on Arm
- Troubleshooting x86 desktop apps
- Troubleshooting ARM UWP apps
- Program Compatibility Troubleshooter on ARM
- Building Arm64 Drivers with the WDK: Instructions for building an Arm64 driver.
- Debugging x86 apps on Arm | Guidance for debugging x86 apps on Arm.
- Video: Building Arm64 Win32 C++ Apps
- Windows 10 on Arm for developers (Microsoft Build 2018 video presentation)
- Blog: Original announcement of Windows 10 support for Arm development
- Report a bug