On 26 Oct 2020, at 00:57, Robert Munyer 2433647181@munyer.com wrote:
The code below works in CCL, CLISP and SBCL, but not in ABCL.
$ echo '(cl:format cl:t "~&I am in package ~s.~%" cl:*package*)' > foo.lisp $ java -jar abcl-1.7.1.jar Armed Bear Common Lisp 1.7.1 Java 1.8.0_265 Oracle Corporation OpenJDK 64-Bit Server VM Low-level initialization completed in 0.236 seconds. Startup completed in 0.931 seconds. Type ":help" for a list of available commands. CL-USER(1): (defpackage "BAR" (:use)) #<PACKAGE BAR> CL-USER(2): (let ((*package* (find-package "BAR"))) (load (compile-file "foo"))) ; Compiling /tmp/foo/abcl-bin-1.7.1/foo.lisp ... ; (COMMON-LISP:FORMAT COMMON-LISP:T ...) ; Wrote /tmp/foo/abcl-bin-1.7.1/foo.abcl (0.036 seconds) Error loading /tmp/foo/abcl-bin-1.7.1/foo.abcl at line 4 (offset 125) #<THREAD "interpreter" {1B31C40C}>: Debugger invoked on condition of type UNDEFINED-FUNCTION The function BAR::SETQ is undefined. Restarts: 0: CONTINUE Try again. 1: USE-VALUE Specify a function to call instead. 2: RETURN-VALUE Return one or more values from the call to SETQ. 3: TOP-LEVEL Return to top level. [1] BAR(3):
Indeed, there’s a bug in abcl.
$ clall -r '(defpackage "BAR" (:use))' ' (let ((*package* (find-package "BAR"))) (load (compile-file "foo.lisp")))'
Armed Bear Common Lisp --> #<PACKAGE BAR> Armed Bear Common Lisp The function BAR::SETQ is undefined. Clozure Common Lisp --> #<Package "BAR"> Clozure Common Lisp --> #P"/private/tmp/foo.dx64fsl" CLISP --> #<PACKAGE BAR> CLISP --> #P"/private/tmp/foo.fas" ECL --> #<"BAR" package> ECL Note: Invoking external command: gcc -x c-header /usr/local/include/ecl/ecl-cmp.h -I/usr/local/include/ -g -O2 -fPIC -fno-common -D_THREAD_SAFE -Ddarwin -O2 -o /var/folders/pq/82920zm125n09frk81rrtp200000gn/T/ecl-include092A/ecl-cmp.h.gch SBCL --> #<PACKAGE "BAR"> SBCL --> T
$ abcl --help|head -n 3 Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8 -Xmx6g Armed Bear Common Lisp 1.7.1 Java 11.0.8 AdoptOpenJDK OpenJDK 64-Bit Server VM