From: Christophe Rhodes Date: Thu, 30 May 2002 17:54:19 +0000 (+0000) Subject: 0.7.4.8: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=7f0f521aa3f6b45259c5dfd5f7f11adcd1a7cac6;p=sbcl.git 0.7.4.8: Tweak (again) the deftransform for %WITH-ARRAY-DATA to optimize for general vector as well as for simple-array. Use a conforming lambda list for the implementation of DEF!CONSTANT. Minor documentation tweaks --- diff --git a/BUGS b/BUGS index 409cdf8..c8f86e8 100644 --- a/BUGS +++ b/BUGS @@ -1235,6 +1235,14 @@ WORKAROUND: (DEFCLASS FOO () ((A :SILLY T))) signals a SIMPLE-ERROR, not a PROGRAM-ERROR. +172: + sbcl's treatment of at least macro lambda lists is too permissive; + e.g., in sbcl-0.7.3.7: + (defmacro foo (&rest rest bar) `(,bar ,rest)) + (macroexpand '(foo quux zot)) -> (QUUX (QUUX ZOT)) + whereas section 3.4.4 of the CLHS doesn't allow required parameters + to come after the rest argument. + DEFUNCT CATEGORIES OF BUGS IR1-#: These labels were used for bugs related to the old IR1 interpreter. diff --git a/doc/compiler.sgml b/doc/compiler.sgml index 39468a6..8606a45 100644 --- a/doc/compiler.sgml +++ b/doc/compiler.sgml @@ -274,10 +274,10 @@ gives this error: in: DEFUN FOO (DO ((CURRENT L #) (# NIL)) (WHEN (EQ # E) (RETURN CURRENT)) ) -caught ERROR: (during macroexpansion) - -error in function LISP::FROB-DO-BODY: - DO step variable is not a symbol: (ATOM CURRENT) +caught ERROR: + (in macroexpansion of (DO # #)) + (hint: For more precise location, try *BREAK-ON-SIGNALS*.) + DO step variable is not a symbol: (ATOM CURRENT) diff --git a/doc/efficiency.sgml b/doc/efficiency.sgml index 88d7d88..b4dc6aa 100644 --- a/doc/efficiency.sgml +++ b/doc/efficiency.sgml @@ -28,7 +28,7 @@ few other points to keep in mind. The &CMUCL; manual doesn't seem to state it explicitly, but &Python; has a mental block about type inference when - assignment is. involved &Python; is very aggressive and clever + assignment is involved. &Python; is very aggressive and clever about inferring the types of values bound with let, let*, inline function call, and so forth. However, it's much more passive and dumb about inferring the types of diff --git a/src/code/defbangconstant.lisp b/src/code/defbangconstant.lisp index e248a20..539b95b 100644 --- a/src/code/defbangconstant.lisp +++ b/src/code/defbangconstant.lisp @@ -22,15 +22,15 @@ ;;; confident in my understanding, I might try to do drastic surgery, ;;; but my head is currently spinning (host? target? both?) so I'll go ;;; for the minimal changeset... -- CSR, 2002-05-11 -(defmacro def!constant (&rest rest name value &optional doc) +(defmacro def!constant (&whole whole name value &optional doc) `(progn #-sb-xc-host - (defconstant ,@rest) + (defconstant ,@(cdr whole)) #+sb-xc-host ,(unless (eql (find-symbol (symbol-name name) :cl) name) - `(defconstant ,@rest)) + `(defconstant ,@(cdr whole))) #+sb-xc-host - ,(let ((form `(sb!xc:defconstant ,@rest))) + ,(let ((form `(sb!xc:defconstant ,@(cdr whole)))) (if (boundp '*delayed-def!constants*) `(push ',form *delayed-def!constants*) form)))) diff --git a/src/compiler/array-tran.lisp b/src/compiler/array-tran.lisp index 772b90f..5a81b1a 100644 --- a/src/compiler/array-tran.lisp +++ b/src/compiler/array-tran.lisp @@ -561,7 +561,7 @@ ;; haven't tried to understand the ;; performance issues involved. -- ;; WHN, and also CSR 2002-05-26 - (simple-array index (or index null)) + ((or vector simple-array) index (or index null)) * :important t :node node diff --git a/version.lisp-expr b/version.lisp-expr index 3e842c1..dd68d41 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -18,4 +18,4 @@ ;;; for internal versions, especially for internal versions off the ;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.7.4.7" +"0.7.4.8"