PRINT-OBJECT doesn't seem to work with *PRINT-LENGTH*. Is this a bug?
but instead
Subject: apparent bug in PRINT-OBJECT (or *PRINT-LENGTH*?)
- Under sbcl-1.2.3, when I compile and load the file
+ In sbcl-1.2.3 running under OpenBSD 4.5 on my Alpha box, when
+ I compile and load the file
(DEFSTRUCT (FOO (:PRINT-OBJECT (LAMBDA (X Y)
(LET ((*PRINT-LENGTH* 4))
(PRINT X Y)))))
(There is also some information on bugs in the manual page and in the
TODO file. Eventually more such information may move here.)
-* (DESCRIBE NIL) causes an endless loop.
-
* The FUNCTION special operator doesn't check properly whether its
argument is a function name. E.g. (FUNCTION (X Y)) returns a value
- instead of failing with an error.
-
-* (DESCRIBE 'GF) fails where GF is the name of a generic function:
- The function SB-IMPL::DESCRIBE-INSTANCE is undefined.
+ instead of failing with an error. (Later attempting to funcall the
+ value does cause an error.)
* Failure in initialization files is not handled gracefully -- it's
a throw to TOP-LEVEL-CATCHER, which is not caught until we enter
* (COMPILED-FUNCTION-P #'FOO)
T
-* The CL:STEP macro is undefined.
-
* DEFSTRUCT should almost certainly overwrite the old LAYOUT information
instead of just punting when a contradictory structure definition
is loaded.
:LET fell through ECASE expression.
Very likely the patch discussed there is appropriate for SBCL
as well, but I don't understand it, so I didn't apply it.
+
+* The implementation of #'+ returns its single argument without
+ type checking, e.g. (+ "illegal") => "illegal".
+
+* In sbcl-0.6.7, there is no doc string for CL:PUSH, probably
+ because it's defined with the DEFMACRO-MUNDANELY macro and something
+ is wrong with doc string setting in that macro.
+
+* Attempting to use COMPILE on something defined by DEFMACRO fails:
+ (DEFMACRO FOO (X) (CONS X X))
+ (COMPILE 'FOO)
+Error in function C::GET-LAMBDA-TO-COMPILE:
+ #<Closure Over Function "DEFUN (SETF MACRO-FUNCTION)" {480E21B1}> was defined in a non-null environment.
+
+* In sbcl-0.6.7, the compiler accepted a bogus declaration
+ (TYPE INDEX LENGTH) in the definition of BUTLAST, and then died
+ with infinite regress of errors when the BUTLAST function was
+ executed with a LIST=NIL which would cause LENGTH to be -1.
+ I fixed the bogus declaration, but I should come back and see
+ whether the system's inability to recover from the bogus declaration
+ (by signalling a TYPE-ERROR and dropping into the debugger) was
+ a compiler problem which remains to be fixed, or one of the
+ unrelated infinite-regress-errors problems, many related to
+ revised signal handling, which were fixed around the same time.
+
+* Even when FINISH-OUTPUT is called, the system doesn't in general
+ flush the last line of output unless it's terminated by a newline.
+ (This is particularly annoying because several Lisp functions like
+ PRINT *precede* their output with a newline, instead of following
+ it with a newline.)
ancestral CMU CL support for FreeBSD and updating it for the changes
made from FreeBSD version 3 to FreeBSD version 4.
+Colin Walters' O(N) implementation of the general case of MAP on the
+cmucl-imp@cons.org mailing list was the inspiration for similar MAP
+code in sbcl-0.6.8.
and that caused the system to bomb out with infinite regress
when trying to recover from type errors involving signed values,
e.g. (BUTLAST '(1 2 3) -1).)
-?? The system now uses code based on Colin Walters' O(N)
+* (BUTLAST NIL) and (NBUTLAST NIL) now return NIL as they should.
+ (This was one of the bugs Peter Van Eynde reported back in July.)
+* The system now uses code inspired by Colin Walters' O(N)
implementation of MAP (from the cmucl-imp@cons.org mailing
list, 2 September 2000) when it can't use a DEFTRANSFORM to
inline the MAP operation, and there is more than one
of the general M-argument sequence-of-length-N case required
O(M*N*N) time when any of the sequence arguments were LISTs.)
?? Raymond Wiker's port of CMU CL's RUN-PROGRAM has been added.
-(?? Don't forget to mention Colin Walters and Raymond Wiker in the
- CREDITS file.)
+(?? Don't forget to mention Raymond Wiker in the CREDITS file.)
?? The debugger now flushes standard output streams before it begins
its output ("debugger invoked" and so forth).
?? The patch for the SUBSEQ bug reported on the cmucl-imp mailing
a bug in SUBSEQ and <a bug in ??>.)
?? A bug in signal handling which kept TRACE from working on OpenBSD
has been fixed.
+ ?? Remember to remove this from the port-specific section of BUGS.
?? The signal handling bug reported by Martin Atzmueller on
sbcl-devel 13 September 2000, which caused the debugger to
get confused after a Ctrl-C interrupt under ILISP, has been fixed.
+?? The QUIT :UNIX-CODE keyword argument has been renamed to
+ QUIT :UNIX-STATUS. (The old name is still supported, but
+ deprecated.)
;; If you want to be able to use the extra debugging information,
;; therefore, be sure to keep the sources around, and run with the
;; readtable configured so that the system sources can be read.
- ;:sb-show
+ ; :sb-show
;; Enable extra debugging output in the assem.lisp assembler/scheduler
;; code. (This is the feature which was called :DEBUG in the
#s(sb-cold:package-data
:name "SB!ASSEM"
:doc "private: the assembler, used by the compiler"
- :use ("CL")
+ :use ("CL" "SB!INT" "SB!EXT")
:export ("ASSEMBLY-UNIT"
"*ASSEM-SCHEDULER-P*"
"VARIABLE-LENGTH"
"SEGMENT-COLLECT-DYNAMIC-STATISTICS"
- ;; In classic CMU CL, these symbols were explicitly imported by
- ;; package C. Since package C uses package ASSEM (and no
- ;; other package does) it seems cleaner to export these symbols
- ;; from package ASSEM instead. I hope nothing breaks..
- ;; -- WHN 19990220
+ ;; FIXME: These are in the SB-ASSEM package now, but
+ ;; (left over from CMU CL) are defined in files which
+ ;; are IN-PACKAGE SB-C. It would probably be cleaner
+ ;; to move at least most of them to files which are
+ ;; IN-PACKAGE SB-ASSEM.
"BRANCH" "DO-SSET-ELEMENTS" "FLUSHABLE" "MAKE-SSET" "SSET"
"SSET-ADJOIN" "SSET-DELETE" "SSET-ELEMENT" "SSET-EMPTY"))
"BELL-CHAR-CODE" "ESCAPE-CHAR-CODE" "FORM-FEED-CHAR-CODE"
"RETURN-CHAR-CODE" "RUBOUT-CHAR-CODE" "TAB-CHAR-CODE"
+ ;; handy user-level/basically-portable DEFTYPEs
+ "INDEX"
+
;; nonstandard type predicates
"INSTANCEP"
"DOUBLE-FLOATP"
;; FIXME: maybe belongs in %KERNEL with other typesystem stuff?
"CONSTANT-ARGUMENT"
- ;; not used any more? (and not appropriate in SB!EXT, since
- ;; SPECIAL things are so obnoxious in Common Lisp)
+ ;; FIXME: Maybe this isn't used any more? And if it is,
+ ;; it probably needs a better name, since SPECIAL things
+ ;; are so obnoxious in Common Lisp.
"E"
;; various internal defaults
"DEFUN-CACHED"
;; time
- "FORMAT-DECODED-TIME" "FORMAT-UNIVERSAL-TIME" "PARSE-TIME"
+ "FORMAT-DECODED-TIME"
+ "FORMAT-UNIVERSAL-TIME"
+ "PARSE-TIME"
;; indenting
"MAKE-INDENTING-STREAM"
"REQUIRED-ARGUMENT"
"UNIX-NAMESTRING" ; FIXME: perhaps belongs in package %UNIX
"FEATUREP"
- "FLUSH-STANDARD-OUTPUT"
+ "FLUSH-STANDARD-OUTPUT-STREAMS"
+ "MAKE-GENSYM-LIST"
- ;; These could be moved back into SB!EXT if someone has compelling
- ;; reasons, but hopefully we can get by without supporting them,
- ;; at least not as publicly accessible things with fixed
- ;; interfaces.
+ ;; These could be moved back into SB!EXT if someone has
+ ;; compelling reasons, but hopefully we can get by
+ ;; without supporting them, at least not as publicly
+ ;; accessible things with fixed interfaces.
"DEFAULT-DIRECTORY"
"FILE-COMMENT"
"GET-FLOATING-POINT-MODES" "SET-FLOATING-POINT-MODES"
"%HYPOT" "%INSTANCE-SET-CONDITIONAL" "%LDB"
"%LOG" "%LOGB" "%LOG10" "%LOG1P" "%LONG-FLOAT"
"%MAKE-COMPLEX" "%MAKE-FUNCALLABLE-INSTANCE" "%MAKE-RATIO"
- "%MAP-TO-SIMPLE-VECTOR-ARITY-1" "%MAP-TO-LIST-ARITY-1"
+ "%MAP" "%MAP-TO-SIMPLE-VECTOR-ARITY-1" "%MAP-TO-LIST-ARITY-1"
"%MAP-TO-NIL-ON-SEQUENCE" "%MAP-TO-NIL-ON-SIMPLE-VECTOR"
"%MAP-TO-NIL-ON-VECTOR" "%MASK-FIELD" "%NEGATE" "%POW"
"%RAW-BITS" "%RAW-REF-COMPLEX-DOUBLE"
"HAIRY-DATA-VECTOR-REF" "HAIRY-DATA-VECTOR-SET" "HAIRY-TYPE"
"HAIRY-TYPE-CHECK-TEMPLATE-NAME" "HAIRY-TYPE-SPECIFIER"
"HANDLE-CIRCULARITY" "IGNORE-IT"
- "INDEX" "INDEX-TOO-LARGE-ERROR" "INTEGER-DECODE-DOUBLE-FLOAT"
+ "INDEX-TOO-LARGE-ERROR" "INTEGER-DECODE-DOUBLE-FLOAT"
"INTEGER-DECODE-LONG-FLOAT" "INTEGER-DECODE-SINGLE-FLOAT"
"INTERNAL-ERROR" "INTERNAL-TIME"
"INVALID-ARGUMENT-COUNT-ERROR" "INVALID-ARRAY-INDEX-ERROR"
#!+gengc "*SAVED-STATE-CHAIN*"
"SCALE-DOUBLE-FLOAT" "SCALE-LONG-FLOAT"
"SCALE-SINGLE-FLOAT"
- "SEQUENCE-END" "SET-HEADER-DATA" "SHIFT-TOWARDS-END"
+ "SEQUENCE-END" "SEQUENCE-OF-CHECKED-LENGTH-GIVEN-TYPE"
+ "SET-HEADER-DATA" "SHIFT-TOWARDS-END"
"SHIFT-TOWARDS-START" "SHRINK-VECTOR" "SIGNED-BYTE-32-P"
"SIMPLE-ARRAY-COMPLEX-DOUBLE-FLOAT-P"
"SIMPLE-ARRAY-COMPLEX-LONG-FLOAT-P"
"VALUES-TYPES" "VALUES-TYPES-INTERSECT" "VECTOR-T-P"
"VECTOR-TO-VECTOR*" "VECTOR-TO-SIMPLE-STRING*"
"VECTOR-TO-BIT-VECTOR*" "VECTOR-TO-SIMPLE-BIT-VECTOR*"
+ "VECTOR-OF-CHECKED-LENGTH-GIVEN-LENGTH"
"WITH-CIRCULARITY-DETECTION" "WITH-TYPE-CACHES"
"WRONG-NUMBER-OF-INDICES-ERROR"
"FDEFN" "MAKE-FDEFN" "FDEFN-P"
"FDEFN-NAME" "FDEFN-FUNCTION"
"FDEFN-MAKUNBOUND" "%COERCE-NAME-TO-FUNCTION"
+ "%COERCE-CALLABLE-TO-FUNCTION"
"FUNCTION-SUBTYPE" "*MAXIMUM-ERROR-DEPTH*"
"%SET-SYMBOL-PLIST" "INFINITE-ERROR-PROTECT"
"FIND-CALLER-NAME"
("code/uncross")
("code/early-defbangmethod")
+ ("code/defbangtype")
+ ("code/defbangmacro")
+
+ ;; for various constants e.g. SB!VM:*TARGET-MOST-POSITIVE-FIXNUM* and
+ ;; SB!VM:LOWTAG-BITS, needed by "early-objdef" and others
+ ("compiler/generic/early-vm")
+ ("compiler/generic/early-vm-macs")
+ ("compiler/generic/early-objdef")
+ ("compiler/target/parms")
+ ("code/early-array") ; needs "early-vm" numbers
+
("code/parse-body") ; on host for PARSE-BODY
("code/parse-defmacro") ; on host for PARSE-DEFMACRO
("code/early-defboot") ; on host for FILE-COMMENT, DO-ANONYMOUS, etc.
("code/specializable-array")
- ;; for various constants e.g. SB!VM:*TARGET-MOST-POSITIVE-FIXNUM* and
- ;; SB!VM:LOWTAG-BITS, needed by "early-objdef" and others
- ("compiler/generic/early-vm")
- ("compiler/generic/early-vm-macs")
- ("compiler/generic/early-objdef")
- ("compiler/target/parms")
- ("code/early-array") ; needs "early-vm" numbers
("code/early-cl")
("code/early-load")
;;; compiler (and a few miscellaneous :NOT-HOST files whose
;;; dependencies make it convenient to stick them here)
-; replaced with defbangtype.lisp in sbcl-0.6.2
-; ;; There are some things (e.g. the type SB!KERNEL:INDEX) which are
-; ;; used early in the compiler in both host and target forms (i.e.
-; ;; SB!KERNEL:INDEX defined to cross-compilation host and
-; ;; SB!KERNEL:INDEX defined to cross-compiler itself).
-; ("code/early-ugly-duplicates")
-
- ("code/defbangtype")
-
("compiler/early-c")
("code/numbers")
("code/typedefs")
- ("code/defbangmacro")
+ ;; ("code/defbangmacro" was here until sbcl-0.6.7.3.)
("compiler/macros")
("compiler/generic/vm-macs")
;; compilation, for now we blithely ignore them and press on to more
;; pressing problems. Someday, though, it would be nice to figure out
;; what the problem is and fix it.. -- WHN 19990323
- ;; FIXME: This problem doesn't seem to occur in the cross-compiler.
- ;; Check whether it occurs when compiling with the final target SBCL.
- ;; If it doesn't, we can punt the KLUDGE message.
:ignore-failure-p)
("compiler/target/pred")
("compiler/target/type-vops")
#!+sb-interpreter ("compiler/eval" :not-host)
("code/debug" :not-host) ; maybe should be :BYTE-COMPILE T
- ;; FIXME: This has been moved to warm init, and should be deleted here.
- #+nil ("code/ntrace" :not-host) ; maybe should be :BYTE-COMPILE T
;; These can't be compiled until CONDITION and DEFINE-CONDITION
;; are defined, and they also use SB-DEBUG:*STACK-TOP-HINT*.
;;; versions, and a string a la "0.6.5.12" is used for versions which
;;; aren't released but correspond only to CVS tags or snapshots.
-"0.6.7.2"
+"0.6.7.3"