<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Feb 19, 2016 at 5:36 PM, John Lenz <span dir="ltr">&lt;<a href="mailto:concavelenz@gmail.com" target="_blank">concavelenz@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">The finalizer holdings, could itself could hold a reference to the weakrefernce correct?</div></blockquote><div><br></div><div>The holdings can certainly strongly point to the weakref itself, yes. There is no reason to think this is a mistake.</div><div><br></div><div>By contrast, though we cannot prevent the holdings from strongly pointing to the target, this would almost certainly be a mistake. It would prevent the finalization that would involve this holdings. See the four scenarios at</div><div><br></div><div><a href="https://github.com/tc39/proposal-weakrefs/issues/5#issuecomment-185955167">https://github.com/tc39/proposal-weakrefs/issues/5#issuecomment-185955167</a><br></div><div><br></div><div>If the weakref with these holdings is itself strongly reachable (scenarios 1 and 2) then this will also prevent the target from being collected. If the holdings is strongly reachable (scenario 4) the target again cannot be collected. If the weakref and the holdings are both not reachable (scenario 3), then they and the target can all be collected at the same time without any finalization action involving that holdings. Other weakrefs onto target (wr3a) can observe target disappear, and can have their own finalization actions. These will still be triggered.</div><div><br></div><div>There is a possible controversy regarding scenario 2, for which I&#39;ll refer you to the issue.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=""><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 19, 2016 at 12:30 AM, Dean Tribble <span dir="ltr">&lt;<a href="mailto:tribble@e-dean.com" target="_blank">tribble@e-dean.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Thanks for your comments.<div><br></div><div>A practical answer to your question:  If you drop references to a subsystem that internally uses weak references, the &quot;finalization&quot; it would engage is just death throes. For example, if you drop an Xml parser, then there&#39;s no reason to muck out it&#39;s internal cache since that&#39;s going to be collected anyway. Thus, this variant is more expressive.</div><div><br></div><div>It also breaks the retention properties of the system. In order to require the executor to run, <i>something </i>has to point at it (and the holdings) strongly. Otherwise for example the holdings and executor might not be retained (and you couldn&#39;t run finalization). You can end up with cycles of executors pointing at each other&#39;s targets such that neither can ever be collected because the system is keeping them around strongly. </div><div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 18, 2016 at 10:42 PM, John Lenz <span dir="ltr">&lt;<a href="mailto:concavelenz@gmail.com" target="_blank">concavelenz@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">This seems like a very solid proposal.  I like that the finalizers run on their own turn (it had to be that way in retrospect).<br><br>I&#39;m unclear about one thing: the reasoning for not running finalizers when weak-references them become unreferenced.  Did I misunderstand this?  Doesn&#39;t this force he &quot;hard&quot; reference to also a soft reference &quot;weak reference&quot; to insure that finalizer run (such as closing a file, etc)?  If aren&#39;t concerned about non-memory resources is there any point to having holding at all?<div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>On Sun, Feb 14, 2016 at 11:35 PM, Dean Tribble <span dir="ltr">&lt;<a href="mailto:tribble@e-dean.com" target="_blank">tribble@e-dean.com</a>&gt;</span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div><div dir="ltr"><div>I have posted a stage 1 proposal for weak references in ES7 for your perusal and feedback. </div><div><br></div><div><a href="https://github.com/tc39/proposal-weakrefs.git" target="_blank">https://github.com/tc39/proposal-weakrefs.git</a></div><div><br></div><div>Thanks to Mark Miller and the authors of earlier proposals for help with the document and content!  Finally thanks to a few intrepid early reviewers for their edits, comments, and feedback.<br></div></div>
<br></div></div><span>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></span></blockquote></div><br></div>
<br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div></div></div></div></div>
</blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">    Cheers,<br>    --MarkM</div>
</div></div>