<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 4 February 2014 12:57, Andrei Alexandrescu <span dir="ltr"><<a href="mailto:SeeWebsiteForEmail@erdani.org" target="_blank">SeeWebsiteForEmail@erdani.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 2/3/14, 5:36 PM, Adam Wilson wrote:<br>
</div><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
You still haven't dealt with the cyclic reference problem in ARC. There<br>
is absolutely no way ARC can handle that without programmer input,<br>
therefore, it is simply not possible to switch D to ARC without adding<br>
some language support to deal with cyclic-refs. Ergo, it is simply not<br>
possible to seamlessly switch D to ARC without creating all kinds of<br>
havoc as people now how memory leaks where they didn't before. In order<br>
to support ARC the D language will necessarily have to grow/change to<br>
accommodate it. Apple devs constantly have trouble with cyclic-refs to<br>
this day.<br>
</blockquote>
<br></div>
The stock response: weak pointers. But I think the best solution is to allow some form of automatic reference counting backed up by the GC, which will lift cycles.</blockquote><div><br></div><div>I agree, I suggested that a few times, and Adam ignored it each time.</div>
<div>With this approach, performance/aggressive users would be able to disable the backing GC, and deal with cycles manually, taking responsibility for leaking themselves.</div><div>All other users would be able to ignore the problem and have it collected by the backing GC, business as usual.</div>
<div><br></div><div>The advantage here is *choice*. Users would then have a fully automated system and/or have quite articulate control over it's influence on their app.</div></div></div></div>