length's type.

Kevin Bailey keraba at yahoo.com
Wed Feb 14 00:56:21 UTC 2024


On Tuesday, 13 February 2024 at 23:57:12 UTC, Ivan Kazmenko wrote:
>
> I'd like to note that even C++20 onwards has `.ssize`, which is 
> signed size.
>
> I do use lengths in arithmetic sometimes, and that leads to 
> silent bugs currently.  On the other hand, since going from 16 
> bits to 32 and then 64, in my user-side programs, I had a flat 
> zero bugs because some length was 2^{31} or greater -- but at 
> the same time not 2^{32} or greater.  So, in D, I usually 
> `to!int` or `to!long` them anyway.  Or cast in 
> performance-critical places.
>
> Another perspective.  Imagine a different perfect world, where 
> programmers just had 64-bit integers and 64-bit address space, 
> everywhere, from the start.  A clean slate, engineers and 
> programmers designing their first hardware and languages, but 
> with such sizes already feasible.  Kinda weird, but bear with 
> me a bit.  Now, imagine someone proposing to make sizes 
> unsigned.  Wouldn't that be a strange thing to do?  The benefit 
> of having a universal arithmetic type for everything, from the 
> ground up -- instead of two competing types producing bugs at 
> glue points -- seems to far outweigh any potential gains.  
> Unsigned integers could have their small place, too, for bit 
> masks and microoptimizations and whatnot, but why sizes?  The 
> few applications that really benefit from sizes of 
> [2^{63}..2^{64}) would be the most odd ones, deserving some 
> workarounds.
>
> Right now though, we just have to deal with the legacy, in 
> software, hardware, and mind -- and with the fact that quite 
> some environments are not 64-bit.
>
> Ivan Kazmenko.

Personally, I don't have a problem with .length being unsigned. 
How do you have a negative length? My problem is that the 
language doesn't correctly compare signed and unsigned.

Earlier in the thread, people mentioned NOT mentioning other 
languages but I just learned that Carbon correctly compares 
signed and unsigned ints.

cheers



More information about the Digitalmars-d-learn mailing list