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).

Reply via email to