0.7.4.8:
authorChristophe Rhodes <csr21@cam.ac.uk>
Thu, 30 May 2002 17:54:19 +0000 (17:54 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Thu, 30 May 2002 17:54:19 +0000 (17:54 +0000)
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

BUGS
doc/compiler.sgml
doc/efficiency.sgml
src/code/defbangconstant.lisp
src/compiler/array-tran.lisp
version.lisp-expr

diff --git a/BUGS b/BUGS
index 409cdf8..c8f86e8 100644 (file)
--- 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.
index 39468a6..8606a45 100644 (file)
@@ -274,10 +274,10 @@ gives this error:
 
 <screen>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)</screen>
+caught ERROR: 
+  (in macroexpansion of (DO # #))
+  (hint: For more precise location, try *BREAK-ON-SIGNALS*.)
+  DO step variable is not a symbol: (ATOM CURRENT)</screen>
 </para>
 
 </sect2>
index 88d7d88..b4dc6aa 100644 (file)
@@ -28,7 +28,7 @@ few other points to keep in mind.
 <itemizedlist>
   <listitem><para>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 <function>let</>,
     <function>let*</>, inline function call, and so forth. However,
     it's much more passive and dumb about inferring the types of
index e248a20..539b95b 100644 (file)
 ;;; 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))))
index 772b90f..5a81b1a 100644 (file)
                                ;; 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
index 3e842c1..dd68d41 100644 (file)
@@ -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"