[slime-devel] Restartable frames
Terje Norderhaug
terje at in-progress.com
Mon Mar 22 17:20:00 UTC 2010
On Mar 22, 2010, at 6:54 AM, Helmut Eller wrote:
> * Terje Norderhaug [2010-03-21 20:39+0100] writes:
>
>> Six swank back-ends implement the RESTART-FRAME interface. Yet only
>> two of these back-ends implements FRAME-RESTARTABLE-P, which is used
>> by the BACKTRACE slimefun to identify whether a frame is restartable.
>>
>> Allegro and SBCL implement both restart-frame and frame-restartable-
>> p. ABCL, CCL, CLISP and LispWorks only implement restart-frame.
>
> ABCL doesn't support it; the code is just a comment. CCL only on PPC.
> CLISP or LispWorks have no documented debugger API and without knowing
> the internals it's hard to say anything other than "may or may not
> work".
Hence there are really three answers to the question of whether a
frame is restartable: "yes", "no" and "maybe". Yet the BACKTRACE
slimefun only allows FRAME-RESTARTABLE-P to return T or NIL:
(ecase (frame-restartable-p frame)
((nil) nil)
((t) `((:restartable t))))
I suggest BACKTRACE passes on the "maybe" semantics to the client,
for example by returning the :restartable if and only if it
definitely can be determined whether or not a frame is restartable.
As in:
(ecase (frame-restartable-p frame)
((nil) `((:restartable nil)))
((t) `((:restartable t)))
(:maybe nil))
>> For consistency, perhaps back-ends that implement restart-frame also
>> could implement frame-restartable-p?
>
> They can but it shouldn't be required. The default implementation
> seems
> good enough to me.
The default implementation of frame-restartable-p always returns NIL,
even for back-ends that implement restart-frame. The consequence is
that swank clients are unable to determine whether a frame definitely
cannot be restarted or whether the frame might be restarted.
This has usability implications as swank clients cannot adapt to
whether a frame certainly is restartable, might possibly be
restartable, or definitely isn't restartable.
-- Terje Norderhaug
terje at in-progress.com
More information about the slime-devel
mailing list