<p dir="ltr">ASAP please.</p>
<div class="gmail_quote">Dne 16. 3. 2014 5:10 "Andrei Alexandrescu" <<a href="mailto:SeeWebsiteForEmail@erdani.org">SeeWebsiteForEmail@erdani.org</a>> napsal(a):<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
D1's approach to multithreading was wanting. D2 executed a big departure from that with the shared qualifier and the default-thread-local approach to data.<br>
<br>
We think this is a win, but D2 inherited a lot of D1's thread-related behavior by default, and some of the rules introduced by TDPL (<a href="http://goo.gl/9gtH0g" target="_blank">http://goo.gl/9gtH0g</a>) remained in the "I have a dream" stage.<br>

<br>
Fixing that has not gained focus until recently, when e.g. <a href="https://github.com/D-Programming-Language/dmd/pull/3067" target="_blank">https://github.com/D-<u></u>Programming-Language/dmd/pull/<u></u>3067</a> has come about. There is other more stringent control of shared members, e.g. "synchronized" is all or none, "synchronized" only makes direct member variables unshared, and more.<br>

<br>
This will statically break code. It will refuse to compile code that is incorrect, but also plenty of code that is correct; the compiler will demand extra guarantees from user code, be they in the form of casts and stated assumptions.<br>

<br>
I believe this is a bridge we do need to cross. One question is how we go about it: all at once, or gradually?<br>
<br>
<br>
Andrei<br>
<br>
</blockquote></div>