[slime-devel] 8-bit Allegro mode

Scott L. Burson Scott at sympoiesis.com
Mon Sep 7 03:20:47 UTC 2009


Hi,

In trying out Daniel Herring's new LibCL (http://libcl.com/) on Franz
Allegro CL, I noticed something about LISP-VERSION-STRING which is in
asdf-binary-locations, which evidently borrowed it from SLIME.

There are actually four Lisp executables that come in an Allegro
distribution, that differ in two orthogonal dimensions.  One
dimension, which LISP-VERSION-STRING accounts for, is the case mode,
"ANSI" or "modern".  The other is 8-bit strings vs. 16-bit strings; I
noticed that LISP-VERSION-STRING doesn't take this into account (but
the fasls are indeed incompatible).  The 16-bit executables are the
default; the other two have "8" appended to their names.

Here is a suggestion for the Allegro code in LISP-VERSION-STRING to
reflect this distinction.

 #+allegro   (format nil
                     "~A~A~A~A"
                     excl::*common-lisp-version-number*
                                       ; ANSI vs MoDeRn
                     ;; thanks to Robert Goldman and Charley Cox for
                     ;; an improvement to my hack
                     (if (eq excl:*current-case-mode*
                             :case-sensitive-lower) "M" "A")
                     ;; Note if 8-bit strings
                     (if (code-char 256) "" "8")
                     (if (member :64bit *features*) "-64bit" ""))

This is backward-compatible for users of 16-bit strings.  Since there
probably aren't many users of 8-bit strings, the impact will be
minimal.

-- Scott




More information about the slime-devel mailing list