[dmd-beta] dmd 2.064 beta take 2

Михаил Страшун m.strashun at gmail.com
Wed May 15 05:57:39 PDT 2013


Consistency is important. struct S { enum x = 7; } _should_ be
different from struct S { const x = 7; }
Worst part here is not the change itself but that compiler provides no
help in finding all broken places. And that is intolerable.

On Wed, May 15, 2013 at 3:52 PM, Don Clugston <dclugston at gmail.com> wrote:
> On 15 May 2013 13:54, Kenji Hara <k.hara.pg at gmail.com> wrote:
>>
>> 2013/5/15 Don Clugston <dclugston at gmail.com>
>>>
>>> This absolutely must not be released in this form.
>>> This has a silent, massive breaking change --
>>> struct  S { const int x = 7; }
>>> Previously, x was just a manifest constant. Now, S now has an int inside
>>> every instance.
>>> It's OK to turn that into an error. It's not OK to silently change the
>>> meaning of existing code.
>>> Especially in such a radical manner.
>>
>>
>> It will be properly documented at the top of the language changes.
>>
>> https://github.com/D-Programming-Language/d-programming-language.org/pull/303/files#L0R60
>>
>> Certainly it will change object layout silently. But semantic meaning
>> would not be changed in most cases,
>
>
> Sorry, but that is absolute rubbish.
> (1) Any existing instance of this silently introduces a *severe* performance
> bug.
> (2) Any storage of this struct silently fails.
>
> For example, for us, we serialize objects and store them in a database. This
> now fails because they are the wrong size.
>
> I can accept the consistency argument against the existing behaviour.
> However, I cannot imagine a scenario where this new behaviour would be
> desirable. Are there any use cases?
>
>
>> So just once full-recompilation would be necessary.
>
>
> No, this is wrong. Every existing instance must be changed. And there is no
> way to find them.
>
> Seriously, this is one of the most breaking changes I can ever remember in
> the history of D.
>
> _______________________________________________
> dmd-beta mailing list
> dmd-beta at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/dmd-beta


More information about the dmd-beta mailing list