On 15 May 2013 13:54, Kenji Hara <[email protected]> wrote:

> 2013/5/15 Don Clugston <[email protected]>
>
>> 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
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-beta

Reply via email to