+133:
+ Trying to compile something like
+ (sb!alien:def-alien-routine "breakpoint_remove" sb!c-call:void
+ (code-obj sb!c-call:unsigned-long)
+ (pc-offset sb!c-call:int)
+ (old-inst sb!c-call:unsigned-long))
+ in SBCL-0.pre7.86.flaky7.22 after warm init fails with an error
+ cannot use values types here
+ probably because the SB-C-CALL:VOID type gets translated to (VALUES).
+ It should be valid to use VOID for a function return type, so perhaps
+ instead of calling SPECIFIER-TYPE (which excludes all VALUES types
+ automatically) we should call VALUES-SPECIFIER-TYPE and handle VALUES
+ types manually, allowing the special case (VALUES) but still excluding
+ all more-complex VALUES types.
+
+135:
+ Ideally, uninterning a symbol would allow it, and its associated
+ FDEFINITION and PROCLAIM data, to be reclaimed by the GC. However,
+ at least as of sbcl-0.7.0, this isn't the case. Information about
+ FDEFINITIONs and PROCLAIMed properties is stored in globaldb.lisp
+ essentially in ordinary (non-weak) hash tables keyed by symbols.
+ Thus, once a system has an entry in this system, it tends to live
+ forever, even when it is uninterned and all other references to it
+ are lost.
+
+136:
+ (reported by Arnaud Rouanet on cmucl-imp 2001-12-18)
+ (defmethod foo ((x integer))
+ x)
+ (defmethod foo :around ((x integer))
+ (let ((x (1+ x)))
+ (call-next-method)))
+ Now (FOO 3) should return 3, but instead it returns 4.
+
+137:
+ (SB-DEBUG:BACKTRACE) output should start with something
+ including the name BACKTRACE, not (as in 0.pre7.88)
+ just "0: (\"hairy arg processor\" ...)". Until about
+ sbcl-0.pre7.109, the names in BACKTRACE were all screwed
+ up compared to the nice useful names in sbcl-0.6.13.
+ Around sbcl-0.pre7.109, they were mostly fixed by using
+ NAMED-LAMBDA to implement DEFUN. However, there are still
+ some screwups left, e.g. as of sbcl-0.pre7.109, there are
+ still some functions named "hairy arg processor" and
+ "SB-INT:&MORE processor".
+
+138:
+ a pair of cross-compiler bugs in sbcl-0.pre7.107
+
+138a:
+ $ cat > /tmp/bug138.lisp << EOF
+ (in-package "SB!KERNEL")
+ (defun f-c-l (name parent-types)
+ (let* ((cpl (mapcar (lambda (x)
+ (condition-class-cpl x))
+ parent-types))
+ (new-inherits
+ (concatenate 'simple-vector
+ (layout-inherits cond-layout))))
+ (if (not (mismatch (layout-inherits olayout) new-inherits))
+ olayout
+ (make-layout))))
+ EOF
+ $ sbcl --core output/after-xc.core
+ ...
+ * (target-compile-file "/tmp/bug138.lisp")
+ ...
+ internal error, failed AVER:
+ "(COMMON-LISP:MEMBER SB!C::FUN (SB!C::COMPONENT-LAMBDAS SB!C:COMPONENT))"
+
+ It seems as though this xc bug is likely to correspond to a bug in the
+ ordinary compiler, but I haven't yet found a test case which causes
+ this problem in the ordinary compiler.
+
+ related weirdness: Using #'(LAMBDA (X) ...) instead of (LAMBDA (X) ...)
+ makes the assertion failure go away.
+
+138b:
+ Even when you relax the AVER that fails in 138a, there's another
+ problem cross-compiling the same code:
+ internal error, failed AVER:
+ "(COMMON-LISP:ZEROP
+ (COMMON-LISP:HASH-TABLE-COUNT
+ (SB!FASL::FASL-OUTPUT-PATCH-TABLE SB!FASL:FASL-OUTPUT)))"
+
+ The same problem appears in the simpler test case
+ (in-package "SB!KERNEL")
+ (defun f-c-l ()
+ (let ((cpl (foo (lambda (x)
+ (condition-class-cpl x))))
+ (new-inherits (layout-inherits cond-layout)))
+ (layout-inherits olayout)))
+
+ Changing CONDITION-CLASS-CPL or (either of the calls to) LAYOUT-INHERITS
+ to arbitrary nonmagic not-defined-yet just-do-a-full-call functions makes
+ the problem go away. Also, even in this simpler test case which fails
+ on a very different AVER, the 138a weirdness about s/(lambda/#'(lambda/
+ making the problem go away is preserved.
+
+ I still haven't found any way to make this happen in the ordinary
+ (not cross-) SBCL compiler, nor in CMU CL.
+
+138c:
+ In sbcl-0.pre7.111 I added an assertion upstream, in IR2-CONVERT-CLOSURE,
+ which fails for the test case above but doesn't keep the system
+ from cross-compiling itself or passing its tests.
+
+139:
+ In sbcl-0.pre7.107, (DIRECTORY "*.*") is broken, as reported by
+ Nathan Froyd sbcl-devel 2001-12-28.
+
+ Christophe Rhodes suggested (sbcl-devel 2001-12-30) converting
+ the MERGED-PATHNAME expression in DEFUN DIRECTORY to
+ (merged-pathname (merge-pathnames pathname
+ *default-pathname-defaults*))
+ This looks right, and fixes this bug, but it interacts with the NODES
+ logic in %ENUMERATE-PATHNAMES to create a new bug, so that
+ (DIRECTORY "../**/*.*") no longer shows files in the current working
+ directory. Probably %ENUMERATE-PATHNAMES (or related logic like
+ %ENUMERATE-MATCHES) needs to be patched as well.
+
+ Note: The MERGED-PATHNAME change changes behavior incompatibly,
+ making e.g. (DIRECTORY "*") no longer equivalent to (DIRECTORY "*.*"),
+ so deserves a NEWS entry. E.g.
+* minor incompatible change (part of a bug fix by Christophe Rhodes
+ to DIRECTORY behavior): DIRECTORY no longer implicitly promotes
+ NIL slots of its pathname argument to :WILD, and in particular
+ asking for the contents of a directory, which you used to be able
+ to do without explicit wildcards, e.g. (DIRECTORY "/tmp/"),
+ now needs explicit wildcards, e.g. (DIRECTORY "/tmp/*.*").
+
+