Is DMD 2.052 32-bit?

Jonathan M Davis jmdavisProg at gmx.com
Thu Mar 10 11:12:28 PST 2011


On Thursday, March 10, 2011 09:29:01 dsimcha wrote:
> == Quote from Jonathan M Davis (jmdavisProg at gmx.com)'s article
> 
> > Linux distros _definitely_ prefer to have native binaries, and those that
> > try and be 64-bit pure _can't_ use 32-bit binaries unless those binaries
> > are completely statically linked - though multilib is still the most
> > common scenario for 64-bit versions of most Linux distros.
> 
> Out of curiosity, what's the advantage of this purity, other than a fairly
> inconsequential amount of disk space and bandwidth savings?  32-bit can
> even be _more_ efficient for certain things because pointers are only 4
> bytes instead of 8.

Probably the biggest advantage of purity is that it simplifies the system and 
makes life easier on package management and whatnot. For multilib, you have to 
have duplicate lib directories (lib and lib32, or lib and lib64, or possibly 
even lib, lib32, _and_ lib64). You have to make sure that everything is set up 
correctly so that the 32-bit stuff is where the 32-bit stuff goes and the 64-bit 
stuff is where the 64-bit stuff goes. You have to make sure that stuff doesn't 
clash. Some stuff doesn't deal very well with having mutliple architectures on 
the same box. You have to have more versions of all of the packages that get 
duplicated. You have to maintain 32-bit versions of packages targetted for 64-
bit systems in addition to the normal 32-bit versions and the 64-bit versions of 
packages. Etc. Etc.

It's not always trivial to mix 32-bit and 64-bit on the same machine, and it 
does create a fair bit of work for those managing the distros. On some level, 
it's the same as supporting a whole other achitecture.

From the perspective of the user, while they may not have to worry about sorting 
out all of the lib directories and making sure that packages mix correctly, they 
_do_ have to worry about getting whatever 32-bit packages they need for 
something to work. As long as all you're using is distro-released packages, that 
isn't too bad, but using a 32-bit binary on a 64-bit box when you're not 
installing it with the package manager can be a pain, because you have to figure 
out exactly which packages you need for that particular binary to work. There 
have been plenty of problems with people trying to get dmd working on their 64-
bit machines. It doesn't just work out of the box.

Now, assuming that all of that is taken care, if you're using a 32-bit binary on 
a 64-bit system, you're still going to be restricted on how much that program 
can use. It doesn't use the native word size of the machine to do what it does, 
and in many cases, running a 32-bit program on a 64-bit machine is slower than 
running a 64-bit version of that program on that machine (though that's going to 
vary from program to program, since there are  obviously quite a few factors 
which affect efficiency).

And then of course, there are the people who want the purity of 64-bit for the 
sake of purity. They don't want to be running 32-bit programs in a 64-bit 
environment any more than they'd want to be running 16-bit programs in a 32-bit 
environment. They want a 64-bit machine to be running 64-bit code.

And I'm sure that there are other reasons/advantages/disadvantages, but I 
believe that the average user who is aware of the issue wants to be running 64-
bit programs on 64-bit machines, not 32-bit programs. And there _are_ a number 
of problems and disadvantages in mixing architectures and running 32-bit 
programs on 64-bit machines. It's worse for the folks maintaining a distro than 
the user of a distro, but it can be a definite issue having to deal with 32-bit 
stuff on a 64-bit box.

- Jonathan M Davis


More information about the Digitalmars-d mailing list