X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=BUGS;h=ad30c7b996929c947c9d2499e7cb51ec7b791be7;hb=f0338f6fa732b21daa4405e19465bd460e0526d9;hp=37e8fed529d48ae7aee5933ac5bedba05fb236db;hpb=54a2e62234dc9a399ae12e56fe212d2137b43556;p=sbcl.git diff --git a/BUGS b/BUGS index 37e8fed..ad30c7b 100644 --- a/BUGS +++ b/BUGS @@ -225,10 +225,12 @@ WORKAROUND: 26: reported by Sam Steingold on the cmucl-imp mailing list 12 May 2000: - -Also, there is another bug: `array-displacement' should return an array -or nil as first value (as per ANSI CL), while CMUCL declares it as -returning an array as first value always. + Also, there is another bug: `array-displacement' should return an + array or nil as first value (as per ANSI CL), while CMUCL declares + it as returning an array as first value always. + (Actually, I think the old CMU CL version in SBCL never returns NIL, + i.e. it's not just a declaration problem, but the definition doesn't + behave ANSIly.) 27: Sometimes (SB-EXT:QUIT) fails with @@ -811,13 +813,6 @@ Error in function C::GET-LAMBDA-TO-COMPILE: (I haven't tried to investigate this bug enough to guess whether there might be any user-level symptoms.) -87: - Despite what the manual says, (DECLAIM (SPEED 0)) doesn't cause - things to be byte compiled. This seems to be true in cmucl-2.4.19, - too: (COMPILE-FILE .. :BYTE-COMPILE T) causes byte-compilation, - but ordinary COMPILE-FILE of a file containing (DECLAIM (SPEED 0)) - does not. - 90: a latent cross-compilation/bootstrapping bug: The cross-compilation host's CL:CHAR-CODE-LIMIT is used in target code in readtable.lisp @@ -857,15 +852,55 @@ Error in function C::GET-LAMBDA-TO-COMPILE: (:LINUX :X86 :IEEE-FLOATING-POINT :SB-CONSTRAIN-FLOAT-TYPE :SB-TEST :SB-INTERPRETER :SB-DOC :UNIX ...) is not of type SYMBOL. -94: - As reported by Christophe Rhodes on sbcl-devel 2001-03-28, the - old declaration - (declaim (ftype (function (list list symbol t) list) parse-deftransform)) - above DEFUN PARSE-DEFTRANSFORM was incorrect. The bad declaration was - removed in sbcl-0.6.11.28, but the compiler problem remains: the compiler - should've complained about the mismatch between the declaration and the - definition, and didn't. (The compiler in cmucl-2.5.1 does detect the - problem and complain.) +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 + core file (apparently representing memory usage up to the previous + high-water mark). Moreover, when the file is loaded, it confuses the + GC, so that thereafter memory usage can never be reduced below that + level. + +96: + The TRACE facility can't be used on some kinds of functions. + Basically, the breakpoint facility wasn incompletely implemented + in the X86 port of CMU CL, and we haven't fixed it in SBCL. + +97: + FRESH-LINE doesn't seem to work properly within pretty-printed + output. E.g. + "~@~2%" + called on a CONDITION whose printer does + "~&~@" + gives two newlines between "unhandled CONDITION" and "error", when + (it at least seems as though) correct behavior would be to give one. KNOWN BUGS RELATED TO THE IR1 INTERPRETER