A heavy hand, or bad engineering?

Tom Yager of Infoworld recently reviewed Microsoft’s first attempt at a 64-bit operating system. While most of the review was unexceptionable, a couple of comments really irked me:

“Windows Server 2003 Enterprise x64 Edition debuted with an anemic shelf of 64-bit apps. Skeptics will rejoice to learn that 64-bit Windows isn’t load-and-run compatible with many, if not most, 32-bit Windows applications…. Windows x64 runs 32-bit applications stably or not at all; it won’t allow an incompatible app to install or load. This is neither Microsoft’s heavy hand nor bad engineering. It is genuinely impossible to run a great many 32-bit applications directly on AMD64 and its Intel derivative in pure 64-bit mode.” [My emphasis.]

Now this last point is simply false. As I replied to Tom:

“I’m typing this email into Mozilla Thunderbird on an Acer Ferrari (AMD Athlon 64) laptop, running Solaris 10 in 64-bit mode. The Thunderbird executable that I’m running is 32-bit:
/usr/local/lib/thunderbird-1.0.2/thunderbird-bin: ELF 32-bit LSB executable 80386 Version 1, dynamically linked, stripped
(It’s the same binary that runs quite happily if I boot into 32 bit mode.) However the “ls” command is 64-bit:
/bin/amd64/ls: ELF 64-bit LSB executable AMD64 Version 1, dynamically linked, stripped
So far, I personally haven’t encountered a single 32-bit Solaris application that won’t run under 64-bit Solaris.”

So how come Solaris 10 can mix and match 32-bit and 64-bit processes* while Microsoft can’t? As my colleague James Carlson said, it’s:

“… mostly because of a great deal of effort that happened almost a decade ago when we originally switched to 64-bit kernels, and continuing work since then to make sure everything just works right…. I’m sure that Windows users hope that one day MS approaches that level of maturity.”


* OK, it’s true (as James pointed out) that Wine doesn’t work (yet) on Solaris 10. However I don’t really think of Wine as an “application”. I really can’t think of any 32-bit Solaris x86 application that won’t run in 64-bit mode – but if there is, I’m sure the blogosphere will know.