Windows NT has always been a multi-platform OS, but the binaries are not

Microsoft has demonstrated a Windows build running on an ARM system. For some this seems to be a great surprise, as if Windows has only ever run on x86—and the fact is that just isn’t true.

This is akin to the individuals who were in a state of shock and awe when Apple revealed that they’d been producing x86 builds of OS X for every release leading up to the Intel transition, and then once again when it was revealed that the iPhone ran (essentially) OS X on ARM. When Apple open-sourced Darwin, they began a tradition of releasing not only the source but also PowerPC and x86 binary builds (which has since ended). At the time, it seemed somewhat obvious to me: if the Darwin source could be compiled for x86, someone inside Apple with access to the rest of the OS X source could probably compile the Mac OS X userland for x86 with relative ease, and produce, in effect, a version of Mac OS X for x86. It turns out that that was precisely what they were doing all along.

Windows NT has a similar heritage—while Windows NT 4.0 was the last version to ship with support for Alpha, MIPS, and PowerPC, early builds of Windows 2000 did retain support for PowerPC, and even Windows XP was available in a build for Itanium. Note that the Itanium architecture is incompatible with x86, unlike x86-64, so the Itanium version of Windows XP is in the same class as the Alpha, MIPS, and PowerPC releases of Windows NT 4.0.

So it should not come as any great shock when an operating system which is designed with a multi-platform architecture is discovered to have been compiled for yet another platform. That said, what Windows lacks is a fat binary format—that is, a binary format which can contain compiled code for more than one platform. Fat binaries were an essential part of both of Apple’s hardware platform transitions (from 68k to PowerPC, and from PowerPC to Intel), but the PE format used by Windows does not support fat (or multi-architecture) binaries. This creates added complexity; software installers must store multiple versions of a binary and then probe the system and install only the correct binary. Being able to compile an OS for a new platform is absolutely a neat trick, but without binaries it’s worthless—and it was the lack of binaries for popular commercial software which lead to the downfall of Windows NT on Alpha and other platforms.