Subject: exit-hook is undocumented and is not called from a non-interactive environment
From: Andrew Psaltis <[email-masked]>
To: [email-masked]
Date: Sun, 22 Jan 2012 14:58:51 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

Currently using guile version 1.8.8.  I have been told that this also
affects the current upstream version as well.

My current project involves using a C library that has some
initialization and cleanup functions.

First:

The library initialization part is well-handled, but I could not find
a way to do the library cleanup part.  After doing some web searches,
I found an answer in "exit-hook", except that it was not clear from
the Guile reference manual that it existed.  It should probably be
documented a little more clearly.

Second:
When I write a scheme script that adds some function to exit-hook, it
is not invoked from a non-interactive call to guile.  I have a file
test.scm that looks like so:

(add-hook! exit-hook (lambda () (display "bye\n")))

In an interactive environment:

$ guile -l test.scm
guile> (exit)
bye
$

In a non-interactive environment:
$ guile -s test.scm
$

Nothing is printed.  As far as I can tell, exit-hook should be made
available in a non-interactive environment so that modules loading
libraries can cleanup easily.