Re: [Scheme-reports] valid implementation of call-with-input-file? Alex Shinn 20 Aug 2012 08:27 UTC

On Mon, Aug 20, 2012 at 4:55 PM, Andy Wingo <wingo@pobox.com> wrote:
> On Mon 20 Aug 2012 05:22, Alex Shinn <alexshinn@gmail.com> writes:
>
>> It's expected that implementations close files on
>> gc, and a good implementation should gc when out
>> of file descriptors as well.  An alternate approach
>> to more timely releasing of resources would be
>> to add stronger guarantees about when gc occurs -
>> again, an area of open research not yet ready for
>> WG1.
>
> Leaving file closing to GC is the wrong thing to design for.  It's an OK
> fallback but it's not a good base case.

Indeed, which is why I only suggested it as a
potential starting point, and an open area of
research.

> Part of the reason is that files are closed during finalization, which
> does not have to run when GC runs.  The Java world, for example, has
> standardized on running finalizers in a separate thread.  Guile does
> this as well, when possible.  So running GC might not have the effect of
> closing files.

You don't necessarily need to limit yourself to
finalizers in the traditional sense.

An interesting idea posed by Taylor Campbell
was to attach a finalizer to the final continuation
of the body.  If it is no longer reachable, the
continuation can no longer be re-entered, and
it's safe to reclaim the resources.  The trick is
being able to detect this as soon as possible.

> There are a number of Scheme systems out there that support what Peter
> and I want to do.  Guile's `with-throw-handler' is one example.  I'm
> sure Chicken has something as well.

Sure, this is simple and as I said I had already
proposed it myself, but it doesn't solve the
general case.  We need a little more experience
with this, contrasting different approaches by
existing implementations.  Any help you want
to provide for specifying this in WG2 would be
very much appreciated!

--
Alex

_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports