X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=BUGS;h=9e5139ab32400abd4b64c20c55871b77014df21f;hb=b4a1fcdd74207442f89f688c59fe6a8c70cd860f;hp=7586950c0faf1300a1800bdc9b2648fec3db1b01;hpb=2768ed83de59354b21ea61de3dea358c53d1ae05;p=sbcl.git diff --git a/BUGS b/BUGS index 7586950..9e5139a 100644 --- a/BUGS +++ b/BUGS @@ -276,34 +276,6 @@ WORKAROUND: holding... * is not equivalent to T in many cases, such as (VECTOR *) /= (VECTOR T). -94a: - Inconsistencies between derived and declared VALUES return types for - DEFUN aren't checked very well. E.g. the logic which successfully - catches problems like - (declaim (ftype (function (fixnum) float) foo)) - (defun foo (x) - (declare (type integer x)) - (values x)) ; wrong return type, detected, gives warning, good! - fails to catch - (declaim (ftype (function (t) (values t t)) bar)) - (defun bar (x) - (values x)) ; wrong number of return values, no warning, bad! - The cause of this is seems to be that (1) the internal function - VALUES-TYPES-EQUAL-OR-INTERSECT used to make the check handles its - arguments symmetrically, and (2) when the type checking code was - written back when when SBCL's code was still CMU CL, the intent - was that this case - (declaim (ftype (function (t) t) bar)) - (defun bar (x) - (values x x)) ; wrong number of return values; should give warning? - not be warned for, because a two-valued return value is considered - to be compatible with callers who expects a single value to be - returned. That intent is probably not appropriate for modern ANSI - Common Lisp, but fixing this might be complicated because of other - divergences between auld-style and new-style handling of - multiple-VALUES types. (Some issues related to this were discussed - on cmucl-imp at some length sometime in 2000.) - 95: The facility for dumping a running Lisp image to disk gets confused when run without the PURIFY option, and creates an unnecessarily large @@ -846,22 +818,7 @@ WORKAROUND: Then (FOO #\1 *STANDARD-OUTPUT*) signals type error. (In 0.7.9.1 the result type is (FUNCTION * *), so Python does not - produce invalid code, but type checking is not accurate. Similar - problems exist with VALUES-TYPE-INTERSECTION.) - -220: - Sbcl 0.7.9 fails to compile - - (multiple-value-call #'list - (the integer (helper)) - nil) - - Type check for INTEGER, the result of which serves as the first - argument of M-V-C, is inserted after evaluation of NIL. So arguments - of M-V-C are pushed in the wrong order. As a temporary workaround - type checking was disabled for M-V-Cs in 0.7.9.13. A better solution - would be to put the check between evaluation of arguments, but it - could be tricky to check result types of PROG1, IF etc. + produce invalid code, but type checking is not accurate.) 233: bugs in constraint propagation a. @@ -1067,24 +1024,42 @@ WORKAROUND: Urgh... It's time to write IR1-copier. -262: - In 0.8.1.32: - - * (ensure-generic-function 'foo) - # - * (defmethod foo (x) x) - debugger invoked on condition of type SIMPLE-ERROR: - The generic function # takes 0 required - arguments; was asked to find a method with specializers (#) - - AMOP seems to say that it should work (first ADD-METHOD initializes - GF lambda list). - -263: - :PREFIX, :PER-LINE-PREFIX and :SUFFIX arguments of - PPRINT-LOGICAL-BLOCK may be complex strings. - - (fixed in 0.8.1.33) +265: + SB-EXT:RUN-PROGRAM is currently non-functional on Linux/PPC; + attempting to use it leads to segmentation violations. This is + probably because of a bogus implementation of + os_restore_fp_control(). + +266: + David Lichteblau provided (sbcl-devel 2003-06-01) a patch to fix + behaviour of streams with element-type (SIGNED-BYTE 8). The patch + looks reasonable, if not obviously correct; however, it caused the + PPC/Linux port to segfault during warm-init while loading + src/pcl/std-class.fasl. A workaround patch was made, but it would + be nice to understand why the first patch caused problems, and to + fix the cause if possible. + +267: + In + (defun fact (x i) + (if (= x 0) + i + (fact (1- x) (* x i)))) + sbcl does not convert the self-recursive call to a jump, though it + is allowed to by CLHS 3.2.2.3. CMUCL, however, does perform this + optimization. + +268: "wrong free declaration scope" + The following code must signal type error: + + (locally (declare (optimize (safety 3))) + (flet ((foo (x &optional (y (car x))) + (declare (optimize (safety 0))) + (list x y))) + (funcall (eval #'foo) 1))) + +269: + SCALE-FLOAT should accept any integer for its second argument. DEFUNCT CATEGORIES OF BUGS IR1-#: