OT (partially): about promotion of integers

Walter Bright newshound2 at digitalmars.com
Tue Dec 11 18:44:22 PST 2012


On 12/11/2012 5:15 PM, bearophile wrote:
> Regarding safeInt I think today there is no way to write it efficiently in D,
> because the overflow flags are not accessible from D, and if you use inlined
> asm, you lose inlining in DMD. This is just one of the problems.

The way to deal with this is to examine the implementation of CheckedInt, and 
design a couple of compiler intrinsics to use in its implementation that will 
eliminate the asm code. (This is how the high level vector library Manu is 
implementing is done.)


> The other problems are syntax incompatibilities of user-defined structs compared to
> built-in ints.

This is not an issue.

> Other problems are the probable lack of high-level optimizations
> done on such user defined type.

Using intrinsics deals with this issue nicely, as the optimizer knows about them.

> We are very far from a good solution to such problems.

No, we are not.

The problem, as I see it, is nobody actually cares about this. Why would I say 
something so provocative? Because I've seen D programmers go to herculean 
lengths to get around problems they are having in the language. These efforts 
make a strong case that they need better language support (UDAs are a primo 
example of this). I see nobody bothering to write a CheckedInt type and seeing 
how far they can push it, even though writing such a type is not a significant 
challenge; it's a bread-and-butter job.

Also, as I said before, there is a SafeInt class in C++. So far as I can tell, 
nobody uses it.

Want to prove me wrong? Implement such a user defined type, and demonstrate user 
interest in it.

(Also note the HalfFloat class I implemented for Manu, as a demonstration of how 
a user defined type can implement a floating point type that is unknown to the 
compiler.)


More information about the Digitalmars-d mailing list