On Aug 22, 2011, at 11:25 , Ville Voutilainen wrote:
On 22 August 2011 12:21, armedbear armedbear-devel@common-lisp.net wrote:
Further analysis reveals that ProcessingTerminated is a pure Java-side construct so there is currently no way to hook in from Lisp, so that part of the concern is unfounded. Still, calling System.exit() seems really wrong. Need to reconsider the reason under which ProcessingTerminated exception was introduced.
Sounds like ext:exit has been converted to do ProcessingTerminated, but it shouldn't actually do that. This strongly suggests that too much has been changed over to ProcessingTerminated; the original reason for converting some uses over is still valid, because in order to work as a library, abcl should avoid exitting.
*sigh*
We should probably centralize using the value of a variable as to whether to really exit or not. For the case where SLIME is making thread(s) to handle the Emacs REPL request, EXTENSIONS:EXIT is pretty clearly meant to map to System.exit().
But what should the semantics of EXTENSIONS:EXIT be for "ABCL as library"? Should it try to interrupt all of the currently running LispThreads? When really "used as a library" this may or may not be a good idea, as it might just want to "exit all threads that have been started by the current thread".
The question then becomes how can we distinguish between ABCL running as a library vs. running as a process? Maybe somehow mark all possible ways of getting the Interpreter object with a boolean?
-- "A screaming comes across the sky. It has happened before, but there is nothing to compare to it now."