WTF: dmd 2.066 vs. dmd 2.067 really dangerous code breakage

Daniel Kozak via Digitalmars-d digitalmars-d at puremagic.com
Thu Apr 23 01:11:45 PDT 2015


On Wednesday, 22 April 2015 at 22:23:30 UTC, Martin Nowak wrote:
> On 04/22/2015 01:36 PM, Dicebot wrote:
>> 
>> -d is your enemy, If you remove that, there will be a clear 
>> warning
>> "Deprecation: variable XXX.S.FLAG_ON immutable field with 
>> initializer
>> should be static, __gshared, or an enum". You decided to 
>> ignore and hide
>> it, why the surprise about the breakage?
>
> Maybe using -d should itself emit a warning?

This does not help (-d is not problem), you can not protect me 
from myself. Real problem is that changing semantics never end up 
well. If I skip 2.066(and many versions before) version of D 
compiler, I even do not get any deprecation or warning message. 
Original code is 2 years old (which should be legacy code for 
someone).

Even if this kind of change take more time, what time is enought?
2 years, 5 years, 10 years? What about old stackoverflow answers? 
IMHO it is impossible to make this right. We only can try to make 
it right as possible. And in this case I do not think we made it 
:(.


More information about the Digitalmars-d mailing list