Microsoft published new support documents this week for Windows 10 on ARM devices, outlining the limitations of apps and experiences that are running on the company’s new platform.
Slowly but surely, all of our questions are being answered regarding Microsoft’s latest endeavor to get Windows 10 running on ARM processors. First announced in December 2016, the company surprised everyone by partnering with Qualcomm in an effort to get Win32 apps running on ARM chips. A year later, the first devices to use the Snapdragon 835 chipset were announced, but those won’t come to market until this spring.
In other words, very few people have actually used one of these devices, so we’re still relying on Microsoft and OEMs to tell us what to expect. This week though, Microsoft published some documentation regarding Windows 10 on ARM, and it described the limitations of the new platform.
Just in case you don’t remember Windows RT, that was the company’s last attempt at Windows on ARM. Based on Windows 8, users could only use apps built for the Store. Windows 10 on ARM is quite different. These devices ship with Windows 10 S, so they still run apps from the Store, although the Windows 10 Store now takes Win32 apps that are packaged for it, and there’s also a free upgrade path to Windows 10 Pro.
But with Windows RT still fresh on many people’s mind, we’re still all curious about what the limitations of Windows 10 on ARM will be.
The lack of support for 64-bit Win32 apps has been known for some time. The reason for this is because the emulation that Windows on ARM uses to get Win32 apps working on ARM processors is actually the same emulation layer (Windows on Windows, or WoW) that Microsoft uses to get x86 apps running on x64 machines.
Developers may also want to call IsWow64Process2 from their apps. The original IsWow64Process was used to tell if a 32-bit app was running on a 64-bit machine. Obviously, these were meant for PCs with Intel chips, so apps might be made to direct the user to download and install the 64-bit version if the app detects that the PC supports it. Of course, the new ARM64 machines are indeed 64-bit, which means that developers will want to switch to the new API.
One of the key features of Windows 10 Pro, or the version of Pro known as Windows 10 S, is Hyper-V. This allows users to create virtual machines, similar to a number of third-party options. Hyper-V on ARM isn’t supported, and according to the documentation, you won’t be able to create VMs at all, even with a third-party solution.
Microsoft’s Universal Windows Platform was built in an interesting way. Developers are able to create one app with responsive design (similar to a webpage). The app is then compiled for x86, x64, and ARM platforms, and distributed accordingly. In other words, if the app is built properly, Microsoft could expand Windows 10 Mobile to include x86 support, or expand Windows 10 PCs to include ARM support, and developers wouldn’t have to rebuild their apps.
Obviously, not all developers follow best practices, and some may have written their code assuming that all ARM devices are phones. These apps might show in the wrong orientation, present other UI issues, or just crash altogether.
One reason that this will happen is if the app tries to call mobile-only APIs. For example, calling HardwareButtons could cause an issue.
I don’t know what games you were planning to play on your new Lenovo Miix 630 with its Snapdragon 835 SoC, but it turns out that some of them won’t work. Any game that requires a version of OpenGL later than 1.1, or hardware-accelerated OpenGL won’t run.
Microsoft also says that games that rely on anti-cheat drivers won’t work either. ARM PCs will, however, support DirectX 9 through 12.
While apps can be emulated on ARM, drivers cannot. All « kernel-mode drivers, User-Mode Driver Framework (UMDF) drivers, and print drivers » must be compiled for the native architecture for the operating system.
In other words, if you’ve written a driver and want people to use it, you should recompile it for ARM. If you’re an end user, this could possibly affect your usage of older, unsupported peripherals.
As Microsoft notes, « Native OS components cannot load non-native components. » Apps that customize the OS can include input method editors, assistive technologies, and cloud storage applications. In other words, it’s pretty much anything that customizes the shell.
The extensions for these apps may fail, and if the app doesn’t catch the error and handle it, it might not work at all.
You shouldn’t expect any of these limitations to change within the near future. For example, Microsoft probably isn’t going to put effort into getting x64 apps to work. This is built on top of existing technology, and Microsoft wants the future to be UWP, so it’s not pushing development of Win32.
Currently, the only ARM processor that’s supported by Windows 10 version 1709 is the Qualcomm Snapdragon 835. But in fact, this isn’t something that’s owned by Qualcomm. Competitors like MediaTek, Nvidia, Samsung, and more can make their own mobile PCs as well, if they choose to.
Are these limitations dealbreakers for you? Let us know in the comments!