On 06/11/06, Helmut Eller heller@common-lisp.net wrote:
- Brad Beveridge [2006-11-06 08:29+0100] writes:
SBCL's reader barfs on the symbol CFFI-FEATURES:DARWIN, because the host side doesn't have have the package CFFI-FEATURES. Which is fair enough. I'm guessing that the Emacs interpreter doesn't bother resolving the symbols, so there is no problem. Later on Slime prefixes ":" in front of the non-keyword symbols, presumably to make them into keyword symbols.
I think, Slime only adds the ":" when it parses features expressions in source buffers, not for the message from the wire.
Am I understanding this correctly?
Yes. By convention, messages on the wire should only contain keywords, nil, and t. But this convention isn't enforced, and the :new-features message obviously violates the convention.
That makes sense.
Is it possible to move the keyword interning to the Swank side? If so, I'll try to write a patch for that.
I'm not sure what you mean with "interning" here. Instead of including the symbols in the message we could send a string [e.g. created with (let ((*package* <keyword-package>)) (prin1-to-string <new-features>))].
I don't think I knew what I meant when I said "interning" :) I think that for now I will hack on my Swank backend to return :new-features as a string, later on I'll look at how that impacts Slime and submit a patch.
Cheers Brad