software may work perfectly on x32 while barfing on x64, especially
software that wasn't designed with x64 in mind. Making software compatible
with every conceivable architecture upgrade of the distant future would
add massive layers of abstraction.
Many years ago, while taking a C programming
course, I ran into some
"gotchas" with variable sizes, when moving between 32 & 16 bit
systems. In class, we were using Borland's Turbo C++ for DOS and at
home I had Borland C++ for OS/2. There was a difference in the size
of some variable types, such as INT, so that a program that ran fine
at home would fail in class, because I had exceeded the maximum
integer size. However, I have no idea how 32 & 64 bit systems compare
with this issue.
It's still the exact same thing. People are not making architecture
independent code, still.