[armedbear-devel] EXTENSIONS:EXIT behavior (was Re: [armedbear-ticket] [armedbear] #164: Cannot quit SLIME REPL)

Mark Evenson evenson at panix.com
Mon Aug 22 12:19:50 UTC 2011

On Aug 22, 2011, at 11:25 , Ville Voutilainen wrote:

> On 22 August 2011 12:21, armedbear <armedbear-devel at 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.


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."

More information about the armedbear-devel mailing list