(defun bar (x)
(typep x 'foo))
+150:
+ In sbcl-0.7.1.15, compiling this code
+ (let* ()
+ (flet ((wufn () (glorp table1 4.9)))
+ (gleep *uustk* #'wufn "#1" (list)))
+ (if (eql (lo foomax 3.2))
+ (values)
+ (error "not ~S" '(eql (lo foomax 3.2))))
+ (values))
+ causes a failure in SB-C::ADD-TEST-CONSTRAINTS:
+ The value NIL is not of type SB-C::CONTINUATION.
+ other notes:
+ * The problem appears to be tied to the way that EQL is given only
+ one argument, and goes away when we give EQL a second argument.
+ * CMU CL 18c has this problem too, exercised by
+ (compile nil
+ '(lambda ()
+ (let* ()
+ (flet ((wufn () (glorp table1 4.9)))
+ (gleep *uustk* #'wufn "#1" (list)))
+ (if (eql (lo foomax 3.2))
+ (values)
+ (error "not ~S" '(eql (lo foomax 3.2))))
+ (values))))
+
DEFUNCT CATEGORIES OF BUGS
IR1-#:
- These numbers were used for bugs related to the old IR1
+ These labels were used for bugs related to the old IR1
interpreter. The # values reached 6 before the category
was closed down.
\ No newline at end of file
problems, has been invaluable to the CMU CL project and, by
porting, invaluable to the SBCL project as well.
+Dave McDonald:
+ He made a lot of progress toward getting SBCL to be bootstrappable
+ under CLISP.
+
William ("Bill") Newman:
He continued to maintain SBCL after the fork, increasing ANSI
compliance, fixing bugs, regularizing the internals of the
#+sb-xc cl:class
(:make-load-form-fun class-make-load-form-fun)
(:include ctype
- (:class-info (type-class-or-lose #-sb-xc 'sb!xc:class
+ (class-info (type-class-or-lose #-sb-xc 'sb!xc:class
#+sb-xc 'cl:class)))
(:constructor nil)
#-no-ansi-print-object
(:conc-name dd-)
(:make-load-form-fun just-dump-it-normally)
#-sb-xc-host (:pure t)
- (:constructor make-defstruct-description (name)))
+ (:constructor make-defstruct-description
+ (name &aux
+ (conc-name (symbolicate name "-"))
+ (copier-name (symbolicate "COPY-" name))
+ (predicate-name (symbolicate name "-P")))))
;; name of the structure
(name (missing-arg) :type symbol :read-only t)
;; documentation on the structure
(doc nil :type (or string null))
;; prefix for slot names. If NIL, none.
- (conc-name (symbolicate name "-") :type (or symbol null))
+ (conc-name nil :type (or symbol null))
;; the name of the primary standard keyword constructor, or NIL if none
(default-constructor nil :type (or symbol null))
;; all the explicit :CONSTRUCTOR specs, with name defaulted
(constructors () :type list)
;; name of copying function
- (copier-name (symbolicate "COPY-" name) :type (or symbol null))
+ (copier-name nil :type (or symbol null))
;; name of type predicate
- (predicate-name (symbolicate name "-P") :type (or symbol null))
+ (predicate-name nil :type (or symbol null))
;; the arguments to the :INCLUDE option, or NIL if no included
;; structure
(include nil :type list)
type))
;;; A CONS-TYPE is used to represent a CONS type.
-(defstruct (cons-type (:include ctype (:class-info (type-class-or-lose 'cons)))
+(defstruct (cons-type (:include ctype (class-info (type-class-or-lose 'cons)))
(:constructor
;; ANSI says that for CAR and CDR subtype
;; specifiers '* is equivalent to T. In order
(create-alien-type-class-if-necessary ',name ',(or include 'root)))
(def!struct (,defstruct-name
(:include ,include-defstruct
- (:class ',name)
+ (class ',name)
,@overrides)
(:constructor
,(symbolicate "MAKE-" defstruct-name)
\f
;;;; the ENUM type
-(define-alien-type-class (enum :include (integer (:bits 32))
+(define-alien-type-class (enum :include (integer (bits 32))
:include-args (signed))
name ; name of this enum (if any)
from ; alist from keywords to integers.
(declare (ignore type))
value)
-(define-alien-type-class (single-float :include (float (:bits 32))
+(define-alien-type-class (single-float :include (float (bits 32))
:include-args (type)))
(define-alien-type-translator single-float ()
(declare (ignore type))
`(sap-ref-single ,sap (/ ,offset sb!vm:n-byte-bits)))
-(define-alien-type-class (double-float :include (float (:bits 64))
+(define-alien-type-class (double-float :include (float (bits 64))
:include-args (type)))
(define-alien-type-translator double-float ()
`(sap-ref-double ,sap (/ ,offset sb!vm:n-byte-bits)))
#!+long-float
-(define-alien-type-class (long-float :include (float (:bits #!+x86 96
+(define-alien-type-class (long-float :include (float (bits #!+x86 96
#!+sparc 128))
:include-args (type)))
\f
;;;; the POINTER type
-(define-alien-type-class (pointer :include (alien-value (:bits
+(define-alien-type-class (pointer :include (alien-value (bits
#!-alpha
sb!vm:n-word-bits
#!+alpha 64)))
(def!struct (logical-host
(:make-load-form-fun make-logical-host-load-form-fun)
(:include host
- (:parse #'parse-logical-namestring)
- (:unparse #'unparse-logical-namestring)
- (:unparse-host
+ (parse #'parse-logical-namestring)
+ (unparse #'unparse-logical-namestring)
+ (unparse-host
(lambda (x)
(logical-host-name (%pathname-host x))))
- (:unparse-directory #'unparse-logical-directory)
- (:unparse-file #'unparse-unix-file)
- (:unparse-enough #'unparse-enough-namestring)
- (:customary-case :upper)))
+ (unparse-directory #'unparse-logical-directory)
+ (unparse-file #'unparse-unix-file)
+ (unparse-enough #'unparse-enough-namestring)
+ (customary-case :upper)))
(name "" :type simple-base-string)
(translations nil :type list)
(canon-transls nil :type list))
(defconstant default-line-length 80)
(defstruct (pretty-stream (:include sb!kernel:ansi-stream
- (:out #'pretty-out)
- (:sout #'pretty-sout)
- (:misc #'pretty-misc))
+ (out #'pretty-out)
+ (sout #'pretty-sout)
+ (misc #'pretty-misc))
(:constructor make-pretty-stream (target))
(:copier nil))
;; Where the output is going to finally go.
(defstruct (case-frob-stream
(:include ansi-stream
- (:misc #'case-frob-misc))
+ (misc #'case-frob-misc))
(:constructor %make-case-frob-stream (target out sout))
(:copier nil))
(target (missing-arg) :type stream))
(declare (ignore value))
(unless (gethash key standard-ht)
(warn "removing non-ANSI export from package CL: ~S" key)
- (unexport (intern key cl) cl)))
+ #+CLISP (ext:without-package-lock ("CL")
+ (unexport (intern key cl) cl))
+ #-CLISP (unexport (intern key cl) cl)))
host-ht)
(maphash (lambda (key value)
(declare (ignore value))
(unless (gethash key host-ht)
(warn "adding required-by-ANSI export to package CL: ~S" key)
- (export (intern key cl) cl))
+ #+CLISP (ext:without-package-lock ("CL")
+ (export (intern key cl) cl))
+ #-CLISP (export (intern key cl) cl))
+
;; FIXME: My righteous indignation below was misplaced. ANSI sez
;; (in 11.1.2.1, "The COMMON-LISP Package") that it's OK for
;; COMMON-LISP things to have their home packages elsewhere.
;;; COMPILE-STEM function above. -- WHN 19990321
(defun rename-file-a-la-unix (x y)
- ;; CLISP signals an error when the target file exists, which
- ;; seems unjustified by the ANSI definition of RENAME-FILE.
- ;; Work around it.
- #+clisp (ignore-errors (delete-file y))
-
- (rename-file x
- ;; (Note that the TRUENAME expression here is lifted
- ;; from an example in the ANSI spec for TRUENAME.)
- (with-open-file (stream y :direction :output)
- (close stream)
- ;; From the ANSI spec: "In this case, the file is
- ;; closed when the truename is tried, so the truename
- ;; information is reliable."
- (truename stream))))
+ (let ((path ;; (Note that the TRUENAME expression here is lifted from an
+ ;; example in the ANSI spec for TRUENAME.)
+ (with-open-file (stream y :direction :output)
+ (close stream)
+ ;; From the ANSI spec: "In this case, the file is closed
+ ;; when the truename is tried, so the truename
+ ;; information is reliable."
+ (truename stream))))
+ (delete-file path)
+ (rename-file x path)))
(compile 'rename-file-a-la-unix)
;;; a wrapper for compilation/assembly, used mostly to centralize
;;; At run time, we represent the type of info that we want by a small
;;; non-negative integer.
-(defconstant type-number-bits 6)
+(eval-when (:compile-toplevel :load-toplevel :execute)
+ (defconstant type-number-bits 6))
(deftype type-number () `(unsigned-byte ,type-number-bits))
;;; Why do we suppress the :COMPILE-TOPLEVEL situation here when we're
(/show0 "finished with DEFINE-STORAGE-BASE expansion")
',name)))
-;;; Define a storage class Name that uses the named Storage-Base. Number is a
-;;; small, non-negative integer that is used as an alias. The following
-;;; keywords are defined:
+;;; Define a storage class NAME that uses the named Storage-Base.
+;;; NUMBER is a small, non-negative integer that is used as an alias.
+;;; The following keywords are defined:
;;;
;;; :ELEMENT-SIZE Size
;;; The size of objects in this SC in whatever units the SB uses.
;;; A REF represents a reference to a LEAF. REF-REOPTIMIZE is
;;; initially (and forever) NIL, since REFs don't receive any values
;;; and don't have any IR1 optimizer.
-(defstruct (ref (:include node (:reoptimize nil))
+(defstruct (ref (:include node (reoptimize nil))
(:constructor make-ref (derived-type leaf))
(:copier nil))
;; The leaf referenced.
;;;
;;; (What a KLUDGE! Anyone who wants to come in and clean up this mess
;;; has my gratitude.) (FIXME: Maybe this should be me..)
-(defconstant kludge-nondeterministic-catch-block-size 6)
+(eval-when (:compile-toplevel :load-toplevel :execute)
+ (defconstant kludge-nondeterministic-catch-block-size 6))
(define-storage-classes
;;; for internal versions, especially for internal versions off the
;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.7.1.14"
+"0.7.1.16"