<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On 15 May 2013 15:17, Kenji Hara <span dir="ltr"><<a href="mailto:k.hara.pg@gmail.com" target="_blank">k.hara.pg@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="im"><div style="font-family:arial,sans-serif;font-size:14px">> I can accept the consistency argument against the existing behaviour.<br></div><span style="font-family:arial,sans-serif;font-size:14px">> However, I cannot imagine a scenario where this new behaviour would be desirable. Are there any use cases?</span><br style="font-family:arial,sans-serif;font-size:14px">

<div><span style="font-family:arial,sans-serif;font-size:14px"><br></span></div></div><div><div><font face="arial, sans-serif"><span style="font-size:14px">import std.typecons;</span></font></div><div><font face="arial, sans-serif"><span style="font-size:14px">void main()</span></font></div>

<div><font face="arial, sans-serif"><span style="font-size:14px">{</span></font></div><div><font face="arial, sans-serif"><span style="font-size:14px">    alias Typedef!(immutable int, 1) MyInt;</span></font></div><div>
<span style="font-size:14px;font-family:arial,sans-serif">    MyInt x;  // did not work witn 2.062 and earlier</span><br></div><div><font face="arial, sans-serif"><span style="font-size:14px">}</span></font></div><div><br>

</div><div>In D2, 'immutabe' and 'const' are type qualifier, and it should not have "manifest constant" meaning. That is completely different from the 'const' in D1.</div></div></div></blockquote>
<div><br></div><div>I agree with that, but...<br></div><div>I think the new behaviour is a misfeature, and nothing more. It makes no sense to store a value in each struct, when the value is exactly the same every time.<br>
</div><div>My assert: 100% of these cases are bugs.<br></div><div><br></div><div>Having looked at the code for Typedef, I think it's a bug. It's unnecessarily inefficient.<br></div><div><br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div><div> Yes' this would be a big change for someone, because it was the long term bug bug FROM THE BEGINNING OF D2. We must fix the bug AS FAR AS POSSIBLE FAST. It's a time now.</div>
<div><br></div><div>Kenji Hara</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/5/15 Don Clugston <span dir="ltr"><<a href="mailto:dclugston@gmail.com" target="_blank">dclugston@gmail.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>On 15 May 2013 13:54, Kenji Hara <span dir="ltr"><<a href="mailto:k.hara.pg@gmail.com" target="_blank">k.hara.pg@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr">2013/5/15 Don Clugston <span dir="ltr"><<a href="mailto:dclugston@gmail.com" target="_blank">dclugston@gmail.com</a>></span><br><div class="gmail_extra"><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



<div dir="ltr"><div><div><div>This absolutely must not be released in this form.<br>This has a silent, massive breaking change --<br></div>struct  S { const int x = 7; }<br></div>Previously, x was just a manifest constant. Now, S now has an int inside every instance.<br>




</div><div>It's OK to turn that into an error. It's not OK to silently change the meaning of existing code.<br></div><div>Especially in such a radical manner. </div></div></blockquote><div><br></div></div><div>It will be properly documented at the top of the language changes.</div>



<div><a href="https://github.com/D-Programming-Language/d-programming-language.org/pull/303/files#L0R60" target="_blank">https://github.com/D-Programming-Language/d-programming-language.org/pull/303/files#L0R60</a></div>


<div>
<br></div><div>Certainly it will change object layout silently. But semantic meaning would not be changed in most cases,</div></div></div></div></blockquote><div><br></div></div><div>Sorry, but that is absolute rubbish.<br>

(1) Any existing instance of this silently introduces a *severe* performance bug.<br>
</div><div>(2) Any storage of this struct silently fails.<br><br></div><div>For example, for us, we serialize objects and store them in a database. This now fails because they are the wrong size.<br><br><div>I can accept the consistency argument against the existing behaviour.<br>


</div>However, I cannot imagine a scenario where this new behaviour would be desirable. Are there any use cases?<br><br></div><div><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> So just once full-recompilation would be necessary.</div></div></div></div></blockquote><div><br></div></div><div>No, this is wrong. Every existing instance must be changed. And there is no way to find them.<br>


</div><div><br></div><div>Seriously, this is one of the most breaking changes I can ever remember in the history of D.<br></div></div></div></div>
<br></div></div><div class="im">_______________________________________________<br>
dmd-beta mailing list<br>
<a href="mailto:dmd-beta@puremagic.com" target="_blank">dmd-beta@puremagic.com</a><br>
<a href="http://lists.puremagic.com/mailman/listinfo/dmd-beta" target="_blank">http://lists.puremagic.com/mailman/listinfo/dmd-beta</a><br></div></blockquote></div><br></div>
<br>_______________________________________________<br>
dmd-beta mailing list<br>
<a href="mailto:dmd-beta@puremagic.com">dmd-beta@puremagic.com</a><br>
<a href="http://lists.puremagic.com/mailman/listinfo/dmd-beta" target="_blank">http://lists.puremagic.com/mailman/listinfo/dmd-beta</a><br></blockquote></div><br></div></div>