[OT] Dear Google Cloud: Your Deprecation Policy is Killing You

Andrei Alexandrescu SeeWebsiteForEmail at erdani.com
Wed Aug 19 13:46:31 UTC 2020


On 8/18/20 6:43 PM, H. S. Teoh wrote:
> Things like integer
> promotion, for example, cannot be changed without causing breakage, no
> matter how you try to do it.  Fundamental things of this nature will
> basically have to remain the way they are forever.

I disagree. There are cases in which it's possible to surgically remove 
the bad cases and keep the good cases. We've done that a few times:

* We managed to effectively remove all "bad" uses of the comma operator 
and keep all "good" uses. It went over very smoothly. The rule we 
introduced was you can't use the result of the comma operator.

* We improved comparison operators by simply making them 
non-associative. This made chained comparisons such as a<b<c illegal 
without otherwise impacting semantics.

* We got rid of the dilemma between using a ton of casts among integral 
sizes, and allowing lossy conversions. That also went over very 
smoothly. This does not compile:

ubyte b = array.length;

But this does:

ubyte b = array.length & 0xff;

(Interesting detail, the generated code doesn't even contain the "&": 
https://godbolt.org/z/1Go91n)

So there is opportunity, we just need to carefully search for it.

On the face of it, the bad cases of integral promotion concern 
converting negative integrals to unsigned integrals. I don't think we 
apply Value Range Propagation there. If we did, presumably we could 
eliminate at least some bad cases without impacting the good cases.


More information about the Digitalmars-d mailing list