Dear Robert, Maxima developers,
From time to time, I check ABCL's status with Maxima. Today I updated
to the latest, but found that I can't compile anymore. The issue is with intl.lisp: the defvar form defining *default-domain* contains an _N reader macro, which expands into multiple symbols on ABCL: This is what I found after expansion:
--- fasl content (DEFVAR *DEFAULT-DOMAIN* "maxima" NIL "The message-lookup domain used by INTL:GETTEXT and INTL:NGETTEXT. Use (INTL:TEXTDOMAIN "whatever") in each source file to set this.") --- fasl content
As you see, there's an additional NIL there. I'm hoping to work out together with you what's going on here, as support for Maxima is one of the important items on the list of ABCL developers.
With kind regards,
Erik ABCL developer
On 3/13/10, Erik Huelsmann ehuels@gmail.com wrote:
The issue is with intl.lisp: the defvar form defining *default-domain* contains an _N reader macro, which expands into multiple symbols on ABCL: This is what I found after expansion:
--- fasl content (DEFVAR *DEFAULT-DOMAIN* "maxima" NIL "The message-lookup domain used by INTL:GETTEXT and INTL:NGETTEXT. Use (INTL:TEXTDOMAIN "whatever") in each source file to set this.") --- fasl content
Erik, thanks for your work on ABCL. With the fragment shown in the PS to define _N, I get this output:
$ java -jar /usr/local/armedbear-svn/abcl/dist/abcl.jar Armed Bear Common Lisp 0.19.0-dev Java 1.5.0_01 Sun Microsystems Inc. Java HotSpot(TM) Client VM Low-level initialization completed in 3.619 seconds. Startup completed in 9.248 seconds. Type ":help" for a list of available commands. CL-USER(1): (load "/tmp/_N.lisp") T CL-USER(2): _N"foo" NIL CL-USER(3): "foo" CL-USER(4): (defvar *blurf* _N"foo") *BLURF* CL-USER(5): (macroexpand '(defvar *blurf* _N"foo")) (PROGN (SYSTEM::%DEFVAR (QUOTE *BLURF*)) (UNLESS (BOUNDP (QUOTE *BLURF*)) (SETQ *BLURF* NIL)) (SYSTEM:%SET-DOCUMENTATION (QUOTE *BLURF*) (QUOTE VARIABLE) (QUOTE "foo")) (QUOTE *BLURF*)) T
Hmm, I didn't type "foo" at CL-USER(3), it showed up by itself. When I try it in Clisp, I don't see the superfluous NIL + spurious "foo" input:
[1]> (load "/tmp/_N.lisp") ;; Loading file /tmp/_N.lisp ... ;; Loaded file /tmp/_N.lisp T [2]> _N"foo" "foo" [3]>
Maybe this gives some clue? Not sure what's going on here.
I built ABCL from svn on 2010-01-24.
best,
Robert Dodier
PS. $ cat /tmp/_N.lisp (defpackage :intl)
(eval-when #-gcl (:compile-toplevel :execute) #+gcl (compile eval) (defparameter intl::*default-domain* "maxima") (unless (and (fboundp 'intl::read-translatable-string) (eq (get-macro-character #_) (fdefinition 'intl::read-translatable-string))) (set-macro-character #_ (lambda (stream char) (declare (ignore char)) (case (peek-char nil stream nil nil t) (#" (values)) (#\N (read-char stream t nil t) (values)) (otherwise '_))) t)))
armedbear-devel@common-lisp.net