<div dir="auto"><div>Finalizers aren't free, but every handle already has a finalizer, so that's not an extra cost.<br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Dec 30, 2020, 2:50 PM Oleg Grenrus <<a href="mailto:oleg.grenrus@iki.fi">oleg.grenrus@iki.fi</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I would be afraid of making this change. File descriptors are a scarce<br>
resource, and relying on non-deterministic GC behavior to free them is<br>
big -1.<br>
<br>
Also finalizers are not free in current GC. (Though, you probably cannot<br>
won't that many open files that it would matter).<br>
<br>
- Oleg<br>
<br>
On 30.12.2020 21.23, David Feuer wrote:<br>
> withFile keeps the handle it creates alive until the user action<br>
> completes. If we want to avoid this, we can. All that's required is to<br>
> capture the weak reference that holds the handle's finalizer. Then<br>
> instead of closing the handle in the end (or on exception) using<br>
> hClose, withFile can run the handle's finalizer. Should we do this? Or<br>
> does it run too much against the idea that handles should be managed<br>
> as explicitly as possible?<br>
><br>
> _______________________________________________<br>
> Libraries mailing list<br>
> <a href="mailto:Libraries@haskell.org" target="_blank" rel="noreferrer">Libraries@haskell.org</a><br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank" rel="noreferrer">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div></div></div>