Howdy guys,
Some issues I've seen with 19a-pre3 on Debian/x86:
1. Efficiency notes on any old deftype. If you compile this in a file:
(declaim (optimize (speed 2)))
(deftype foo () 'number)
You get:
; In: DEFTYPE FOO
; (DEFTYPE FOO () 'NUMBER)
; --> EVAL-WHEN LISP::%DEFTYPE LISP::%DEFTYPE FUNCTION BLOCK LET* UNLESS COND
; --> IF NOT IF <=
; --> (LAMBDA (#:G3 #:G2 #:G1) (IF (> #:G3 #:G2) NIL (IF # NIL T)))
; --> LISP::DOTTED-LIST-LENGTH BLOCK LOOP BLOCK LET LET ANSI-LOOP::LOOP-BODY
; --> TAGBODY WHEN COND IF PROGN
; ==>
; (SETQ #:G4 (1+ #:G4))
; Note: Doing signed word to integer coercion (cost 20), for:
; The first argument of CHECK-FIXNUM.
This appears to happen with any deftype at all.
2. Spurious-looking notes when using WITH-SLOTS on structures.
Example:
(defpackage :test)
(in-package :test)
(defstruct s (a "default value"))
(defun test ()
(with-slots (a) (make-s)
a))
When compiling:
; In: DEFUN TEST
; (WITH-SLOTS (A) (MAKE-S) A)
; --> LET SYMBOL-MACROLET A SLOT-VALUE PCL::ACCESSOR-SLOT-VALUE LET FUNCALL
; --> C::%FUNCALL
; ==>
; #'(PCL:SLOT-ACCESSOR :GLOBAL A PCL::READER)
; Warning: Undefined function (PCL:SLOT-ACCESSOR :GLOBAL A
; PCL::READER) as the argument to FUNCTION
; ;
; Warning: This function is undefined:
; (PCL:SLOT-ACCESSOR :GLOBAL A PCL::READER)
;
Though it actually works:
CL-USER> (test::test)
"default value"
And if you recompile the file after loading it then the warnings
disappear.
-Luke