.NET is not a universal binary in the sense I meant, it's a high level language runtime. What I meant was something that was like LLVM bitcode - a close to machine code representation that can be turned into actual machine code the first time the operating system runs it. So I might have a 7z.exe, or an openoffice.exe, or a firefox.exe each with a bunch of DLLs but they're not 32-bit, or 64-bit or x86 or Arm, they're bitcode. The OS sees this, and produces a native exe & dlls which are run thereafter. It means the people making software don't care what the architecture is for the most part. Now that isn't strictly true since there might be some asm conditionally compiled into these bits of software but there is no reason that couldn't be expressed as a bitcode too.