Microsoft always gets low marks for communication. Here’s the most recent example.

This week, the software giant inexplicably told a non-programmer from Engadget that it was about to enable 64-bit apps on Windows 10 on ARM. But as Mehedi reported, the story is a lot more nuanced than that.

So let’s set the record straight.

First of all, Windows 10 on ARM is a 64-bit operating system, and there is no 32-bit version of it available. By comparison, Windows 10 on Intel/AMD ships in both 32-bit (x86) and 64-bit (x64, sometimes called AMD64) variants.

Mainstream (Intel-type) 64-bit Windows versions can run both 64-bit and 32-bit (x86) applications. Likewise, mainstream (Intel-type) 64-bit Windows 10 versions can also run both 64-bit and 32-bit Store apps. This includes both “pure” Universal Windows Platform (UWP) apps and Desktop Bridge (“Centennial”) apps.

In its initial shipping version, however, Windows 10 on ARM is only compatible with 32-bit apps*. This includes 32-bit UWP Store apps that are compiled to ARM (which run natively), 32-bit x86 UWP or Desktop Bridge Store apps (which run in emulation), and 32-bit (x86) desktop applications (which also run in emulation).

(* The one workaround is that a developer using Visual Studio today could compile a desktop application for x86, ARM32, and/or ARM64, and, in doing so, create a 64-bit ARM64 desktop application. But it’s not officially supported. Literally, no one does this.)

However, Microsoft has always maintained that it will bring ARM64 apps to the platform; this includes both ARM64 UWP Store apps and (official support for) ARM64 desktop applications. Not included, ever, are 64-bit x64/AMD64 desktop applications (which includes 64-bit Desktop Bridge apps in the Store): Windows 10 on ARM will never emulate x64/AMD64, Microsoft says.

The revelation that Microsoft provided to Engadget, for some reason, was that support for 64-bit ARM Store and desktop apps was coming sooner than we had expected. But the messaging was confused, which makes sense since this topic is confusing. It made it seem like any 64-bit app, including 64-bit (x64/AMD64) desktop applications would somehow magically start working on Windows 10 on ARM.

I asked Rafael about this and he confirmed what I had been told previously: x64/AMD64 applications will never run in emulation on Windows 10 on ARM. So I asked Microsoft for clarification, just to be sure. Today, finally, I got the following statement.

“To clarify, Microsoft is planning to release a preview of the Windows 10 ARM64 SDK for Store and desktop apps, allowing developers to recompile their Win32 desktop apps to ARM64 so they can run natively without emulation,” the Microsoft representative told me. “With the SDK, x64 apps and x86 apps will also be able to recompile to ARM64 and run natively. We will be sharing more details on the ARM64 SDK Preview at Build.”

Long story short, my central point, that x64/AMD64 applications will never run in emulation on Windows 10 on ARM, is still very much the case. But there is some new info in there.

So let’s step through this statement and pull out what’s really happening.

Microsoft is planning to release a preview of the Windows 10 ARM64 SDK for Store and desktop apps. The Build release of this SDK is only a preview, so it’s not really happening sooner than expected. I had previously figured this capability would ship as part of Windows 10 version 1809 and that appears to still be the case.

This SDK will allow developers to recompile their Win32 desktop apps to ARM64 so they can run natively without emulation. This is new; today, developers can only (officially) recompile x86/x64 desktop apps to ARM32. What this means is that those developers who created desktop applications with Visual Studio will be able to recompile them for ARM64 and create native ARM64 versions of those apps. Does this mean that Photoshop Elements (a 64-bit Desktop Bridge Store app) will one day appear on Windows 10 on ARM? Maybe. That application, like so many Win32 applications, is complex and large, and I doubt that simply checking a box in the compiler is enough to make this work. But it does open up that possibility.

With the SDK, x64 apps and x86 apps will also be able to recompile to ARM64 and run natively. I’m not sure how this differs from the previous sentence. Perhaps the word “Store” was left out, as developers today can create x64, x86, and ARM64 UWP Store apps from the same project. This SDK will add ARM64 to the matrix of target platforms. ARM32 and ARM64 apps compiled in this way will run natively on Windows 10 on ARM.

We will be sharing more details on the ARM64 SDK Preview at Build. I eagerly await this. 🙂

Microsoft, please. Next time tell someone (cough, me? Rafael, even better) who can explain this accurately. Just a thought.

Tagged with Windows 10 on ARM