On Tuesday, 2 April 2013 at 09:43:37 UTC, Jonathan M Davis wrote:
Naturally, the biggest reason to have size_t be unsigned is so
that you can
access the whole address space
Length exists to limit access to memory. If you want unlimited
access, use just a pointer.
For some people though, it _is_ a big deal on 32-bit machines.
For
instance, IIRC, David Simcha need 64-bit support for some of
the stuff he was
doing (biology stuff I think), because he couldn't address
enough memory on a
32-bit machine to do what he was doing. And I know that one of
the products
where I work is going to have to move to 64-bit OS, because
they're failing at
keeping its main process' memory footprint low enough to work
on a 32-bit box.
Having a signed size_t would make it even worse. Granted,
they're using C++,
not D, but the issue is the same.
I'm afraid, those applications are not tied to 32-bit ints. They
just want a lot of memory because they have a lot of data. It
means they want more than 4 gigs, so uint won't help in the
slightest: it can't address more than 4 gigs, and applications
will keep failing. There's a technology to use more than 4 gigs
on 32-bit system:
http://en.wikipedia.org/wiki/Address_Windowing_Extensions
but uint still has no advantage over int, as it still can't
address all the needed memory (which is more than 4 gigs).