[slime-devel] communication-style nil and interrupts

Tobias C. Rittweiler tcr at freebits.de
Mon Mar 8 16:35:57 UTC 2010


Currently, we use NIL on ECL because on one hand while it has threads,
some parts are not yet thread-safe, and on the other hand, I do not
fully understand Slime's :fd-handler architecture. 

:FD-HANDLER seems to be tied to an I/O-implies-serve-event architecture
like SBCL (and CMUCL?) have. OTOH, I just took a courtesy look at
WAIT-FOR-INPUT in swank-cmucl and see *INTERRUPT-QUEUED-HANDLER*. What's
the purpose of that? Why does WAIT-FOR-INPUT write to that pipe? :-)

ECL does have a select()-based serve-event, but it's not implicitly
called. Where in the backend should it call serve-event?


The problem with NIL is that if ECL was built with threads enabled, it
executes the SIGINT handler function inside a new thread. But we
actually want to interrupt the REPL thread -- however SIGNAL-INTERRUPT
just ignores its thread argument in case :SPAWN is not used. So I do not
see an obvious way out.

That said, the problem won't be solved by implementing :FD-HANDLER for
ECL either.

Thoughts?

  -T.





More information about the slime-devel mailing list