In my last post in this series, I discussed the question whether the 64-bit edition of Windows Vista is faster than its 32-bit version. I came to the conclusion that working with Vista x64 only makes sense if you need more than 3GB memory. The other interesting topic is if compatibility to the 32-bit world is still an issue 16 months after Vista’s release. Today I discuss software compatibility, in my next post in this series I’ll write about hardware compatbilty.
When I wrote about this subject shortly after Vista came out, I more or less voted against installing Vista x64. My main point was that Vista will already cause enough compatibility problems. So it is certainly better to limit the number of possible culprits. At that time, I didn’t imagine that Vista adoption would be this slow, though. So I decided to wait for a year or so until most of Vista’s general problems are solved. I hoped that software and hardware vendors would start embracing Vista x64 as soon as they got the 32-bit version under control.
Today, I will focus on software compatibility. In my next post, I will blog about Vista x64 hardware compatibility.
32-bit vs. 64-bit applications
According to an article of the German print journal C’t (8/2008), 64-bit is still not a topic for most software vendors. That is, most Vista compatible applications are 32-bit. Essentially, those software vendors offering 64-bit versions, do so only because they were unable to make their 32-bit editions work on Vista x64. Manufacturers of antivirus software are a good example. Their hooks go deep into the operating system which requires playing 64-bit.
However, it is also a matter of fact that now most Vista compatible 32-bit apps work on Vista x64 as well. Actually, it is hard to find software that runs on Vista x86 but not on Vista x64. If you know of such an application feel free to leave a note below. Notice that 16-bit apps don’t work at all on Vista x64. Some older 32-bit programs have a 16-bit installer. The only way to make them work on Vista x64 is to create your own installer package. If you are unsure whether your Vista apps are 64-bit compatible, you can just test them with VMware Server or VMware Workstation. So all in all, I’d say application compatibility is not really an issue anymore.
WoW64 (Windows on Windows)
You should be aware of the fact, though, that running 32-bit apps on Vista x64 comes with a price. Vista has to perform some acrobatics to make this possible. The trick is called WoW64. Basically, it has two tasks. It switches the CPU from 64-bit mode to compatibility mode when you launch a 32-bit app. This doesn’t go at the cost of performance. If you install Vista x86 on a 64-bit CPU, it will always run in 32-bit mode.
In my opinion, more problematic is the second feature of WoW64. 32-bit programs are often dependent on 32-bit system libraries which are stored under C:\Windows\System32 on Vista x86. You’ll also find this folder on Vista x64. However, despite of its name, it only contains 64-bit libraries. Vista x64 stores 32-bit libraries in C:\Windows\SysWow64. 32-bit apps always try to load system libraries from System32. Hence, WoW64 has to redirect them to SysWow64. The same applies to some Registry hives. For example, WoW64 redirects HKLM\Software to HKLM\Software\Wow6432Node.
WoW64 is comparable to the other virtualization mechanisms in Vista which assure software compatibility with Windows XP programs. UAC and folder name changes made them necessary. Usually, these redirects work fine. However, any new complexity layer can be the cause of unforeseen problems. The importance of Vista’s virtualization mechanisms for legacy apps decrease steadily because software vendors adapt their programs to Vista. However, since you’ll be forced to run 32-bit apps on Vista x64 most of the time, you’ll be dependent on WoW64 as long as software vendors focus on Vista x86. That is, you will always have to run programs which are designed for another operating system.
In my next post in this series, I’ll blog about the situation regarding device drivers for Vista x64.