Over the last few days, there’s been quite a bit of speculation about whether Windows 8 on ARM will ship the desktop environment and allow recompiled code written to the legacy Win32 APIs run. John Gruber argues that Microsoft could simplify the user-facing story by saying that Windows 8 on ARM only runs Metro apps. However, that still wouldn’t leave a clear story, because there are at least three kinds of Metro apps (JavaScript, CLR and native) and two kinds of non-ARM Windows (x86 and x86_64).
From what I can tell from public MSDN documentation, it seems to me the support matrix is going to look like this assuming that ARM ships the desktop environment. (I’ve seen no indication of whether the x86_64 version of Windows will run x86-native Metro apps. I’m also extrapolating for CLR desktop apps.)
x86 | x86_64 | ARM | |
---|---|---|---|
x86 desktop app | Y | Y | N |
x86_64 desktop app | N | Y | N |
ARM desktop app | N | N | Y |
CLR desktop app (guessing) | Y | Y | Y |
JavaScript Metro app | Y | Y | Y |
CLR Metro app | Y | Y | Y |
x86 Metro app | Y | ? | N |
x86_64 Metro app | N | Y | N |
ARM Metro app | N | N | Y |
User-facing communication will be “fun” – especially if Microsoft doesn’t come up with fat binaries for native code.