TechHow Microsoft achieved seamless compatibility: The rise of Windows on ARM

How Microsoft achieved seamless compatibility: The rise of Windows on ARM

Windows on ARM
Windows on ARM
Images source: © dobrepeorgramy | Kamil Dudek
Kamil J. Dudek

19 September 2024 09:52

The number of computers with Windows and Snapdragon processors is increasing. While their main promoted feature is currently Copilot, the key to the success of Windows on ARM processors is not AI but compatibility with x86. How was this achieved, and how is it performing?

Microsoft introduced Windows on ARM gradually and initially without much success. The Universal Windows Platform (UWP) failed, so the only way to ensure the presence and functionality of apps on ARM is through emulation. The latest version of Windows provides this through Prism technology.

Windows libraries

As explained in the company's documentation, Prism operates by translating instruction sets (not individual instructions) to ARM64 via just-in-time (JIT) compilation. These compiled elements are stored in the cache and shared among multiple x86_64 applications whenever possible.

The issue of libraries has been addressed ingeniously. If anyone has ever wondered why Windows updates for ARM are larger than those for x86, the system uses the ARM64X PE format and ARM64 EC (emulation compatible) code. This allows for mixing ABIs and integrating x86 code with ARM code within a single process. This method facilitates easier program migration to a new platform while maintaining compatibility with old x86 plugins for programs that have transitioned to ARM (Office is a good example).

Applications - are they there or not?

What does Windows on ARM look like in practice? Currently, there are many applications built for ARM64. Edge, Teams, Visual Studio, and OneDrive are native applications for this architecture. Skype is the main exception among first-party apps, but its development has long been secondary to Teams. Even though Visual Studio might be surprising as an ARM64 app example, Office is even more shocking.

This suite, burdened with such a heavy compatibility load, seemed impossible to move. However, for years now, it has been an ARM64 EC application, maintaining compatibility with the Intel platform. Perhaps Office is heavily patched with x86 code in places, but it is "sufficiently native" to work seamlessly.

Adobe has also released its software for ARM64. Photoshop runs natively (with minor issues), and the company has announced that Illustrator, InDesign, and Premiere Pro will follow soon. Graphic software might experience some problems on Adreno chips due to software unpreparedness. For example, Blender (and its benchmarks) runs only in CPU mode. Nevertheless, Adobe's feat is impressive, especially compared to Autodesk software, which is currently unprepared to work with ARM.

Open source and developers

For a while now, Firefox, LibreOffice, VLC, and 7-Zip have been building for ARM, more or less officially. Firefox is the most stable of them all, available directly in the ARM variant from the Microsoft Store, but it’s only a matter of time before the others mature. Their emulation works flawlessly if you choose the x86 version, though, for Firefox, this would be inadvisable.

Developers are becoming increasingly satisfied. Not only are VSCode and full Visual Studio available in ARM variants, but WSL and Docker also work. Docker officially provides containerisation support on ARM64 and support for aarch64 images in the stable channel. WSL may have minor hiccups, but nothing more than on x86. Docker works entirely predictably, and working with Windows on ARM64 will be indistinguishable from working on x86_64 in an increasing number of scenarios.

Docker Desktop ARM64
Docker Desktop ARM64© Dobreprogramy | Kamil Dudek

Everyday software and games

Windows' strength, stemming from its compatibility with thousands of user applications, often with a small user base, remains intact. We tested many programs from the download section. The ones that caused issues were mostly advanced communication tools with hardware, antivirus software, and games. Native ARM64 applications should be used for hardware, as emulation does not cover drivers—so older hardware is out! The best role for antivirus software on ARM is currently left to Defender. Otherwise, the chances of a programme not working are quite low. The Prism emulator seems to perform excellently.

One area where it certainly doesn't perform well is games. Advanced graphics use and overall complexity from optimisation mean that games won't start. Newer games will explicitly refuse to run due to the architecture. Unfortunately, older games like Left 4 Dead will try to run, causing unpleasant visual effects, freezes, and resolution problems.

This situation is unlikely to change. It’s too complex an issue. Gamers will have to wait for ARM variants of their games. Although this architecture is more consumer-oriented today, gamers are currently excluded from the group of satisfied Windows on ARM users.

Despite this, Prism emulation can be rated as highly impressive. It performs really well, which undoubtedly requires a lot of work. Perhaps the poor condition of Windows 11 in other areas today is because the most talented teams are working on ensuring smooth operation on ARM processors. Is it worth it? Time will tell—even if the architecture doesn't bring a revolution, it will undoubtedly motivate Intel to work better. And that’s what we need today.

See also