Update of /cvsroot/sbcl/sbcl
In directory usw-pr-cvs1:/tmp/cvs-serv13631
Modified Files:
BUGS NEWS
Log Message:
0.7.2.7:
making SUBTYPEP work better on ATOM (which is tricky because
it contains a naughty NOT, and which CMU CL SUBTYPEP
mostly punted on in a way that ANSI forbids), in a way
inspired by but different from CSR "get atom subtype"
patch...
...Do CALL-NEXT-METHOD, more or less, when before UNION-TYPE's
COMPLEX-SUBTYPEP-ARG2 would return NIL NIL.
...reviewed all COMPLEX-SUBTYPEP-ARG1 methods adding defensive
code to handle the new TYPE2 args that they may see now
...hacked HAIRY-COMPLEX-SUBTYPEP-ARG1 type method so that it
understands that ATOM isn't a subtype of any built-in
type except T and ATOM itself
(After changes above, we can deal with most of the cases that
CSR's patch did, but not yet (SUBTYPEP 'ATOM NIL). I
posted the code to sbcl-devel, got the green flag from
CSR, and forged ahead.)
...factored out the CALL-NEXT-METHOD-ish logic used in the
UNION-TYPE COMPLEX-SUBTYPEP-ARG2 method so that it can
be used in other COMPLEX-SUBTYPEP-ARG2 methods
...used the CALL-NEXT-METHOD-ish logic not only for NAMED
(to deal with (SUBTYPEP 'ATOM NIL)) but also in other
COMPLEX-SUBTYPEP-ARG2 methods which looked as though
they could (or just might) benefit from it
...The precondition "this will never be called with a hairy
type as TYPE2" in !HAS-SUPERCLASSES-COMPLEX-SUBTYPEP-ARG1
is now broken. (It would've been easier to figure this
out if the precondition had been expressed as an
assertion instead of just a comment. Oh well...)
...The SATISFIES FBOUNDP types floating around (mostly in pprint)
aren't really very good types in the sense of ANSI CL,
because they're not in general fixed sets, but can
change with time, so when the compiler attempts
reasonable tests and optimziations on them, things
will get confused. So convert them to explicit calls
to FBOUNDP, and/or just punt them somehow.
...Factor out the "type can conceal other types" predicate
in general. (Replace FLET SIMPLE-CTYPE?, and various
expressions involving HAIRY-TYPE-P, with a
TYPE-MIGHT-CONTAIN-OTHER-TYPES? CTYPE slot accessor,
and set that slot for HAIRY and COMPOUND CTYPEs.)
...Since there's an extra slot in CTYPE, we need to change
+FASL-FILE-VERSION+ again.
(Remove ridiculous #+(OR SBCL CMU) in my local CLOCC "ANSI"
test cases :TYPE-LEGACY-405, :TYPE-LEGACY-410, and
:TYPE-LEGACY-437. Otherwise we *fail* those tests now
that we have ANSI behavior! What were the CLOCC guys
thinking??)
Now bug #58 is gone too. Cool!
Index: BUGS
===================================================================
RCS file: /cvsroot/sbcl/sbcl/BUGS,v
retrieving revision 1.122
retrieving revision 1.123
diff -C2 -d -r1.122 -r1.123
*** BUGS 1 Apr 2002 14:52:22 -0000 1.122
--- BUGS 8 Apr 2002 22:00:38 -0000 1.123
***************
*** 325,337 ****
it binds is declared SPECIAL inside.
- 50:
- type system errors reported by Peter Van Eynde July 25, 2000:
- g: The type system [still] isn't all that smart about relationships
- between hairy types. [The original example from PVE was
- (SUBTYPEP 'CONS '(NOT ATOM)) => NIL, NIL, which was fixed
- by CSR in sbcl-0.7.1.28, but there are still
- plenty of corner cases out there: (SUBTYPEP 'ATOM 'LIST)
- returns NIL, NIL in sbcl-0.7.1.31.]
-
51:
miscellaneous errors reported by Peter Van Eynde July 25, 2000:
--- 325,328 ----
***************
*** 1281,1284 ****
--- 1272,1284 ----
but it has happened in more complicated cases (which I haven't
figured out how to reproduce).
+
+ 155:
+ Executing
+ (defclass standard-gadget (basic-gadget) ())
+ (defclass basic-gadget () ())
+ gives an error:
+ The slot SB-PCL::DIRECT-SUPERCLASSES is unbound in the
+ object #<SB-PCL::STANDARD-CLASS "unbound">.
+ (reported by Brian Spilsbury sbcl-devel 2002-04-09)
DEFUNCT CATEGORIES OF BUGS
Index: NEWS
===================================================================
RCS file: /cvsroot/sbcl/sbcl/NEWS,v
retrieving revision 1.115
retrieving revision 1.116
diff -C2 -d -r1.115 -r1.116
*** NEWS 4 Apr 2002 16:07:50 -0000 1.115
--- NEWS 8 Apr 2002 22:00:38 -0000 1.116
***************
*** 1074,1077 ****
--- 1074,1093 ----
(thanks to coreythomas)
+ changes in sbcl-0.7.3 relative to sbcl-0.7.2:
+ * The system is smarter about SUBTYPEP relationships, especially
+ those involving NOT types (including types such as ATOM which are
+ represented internally using NOT types). Thus SUBTYPEP is less
+ likely to return (VALUES NIL NIL) in general, and in particular
+ bugs 58 and (the remaining bits of) bug 50 are fixed. (thanks to
+ Christophe Rhodes)
+ * The fasl file format has changed again, because the internal
+ representation of types now includes a new slot to support the new
+ SUBTYPEP-of-NOT-types logic.
+ * (not a change in the main branch of SBCL, but a related prototype
+ which can hopefully be merged into the main branch of SBCL in the
+ future:) Brian Spilsbury has produced a Unicode-enabled variant of
+ sbcl-0.7.0, available as a patch against sbcl-0.7.0 at
+ <http://designix.com.au/brian/SBCL/sbcl-0.7.0-unicode.p0.gz>.
+
planned incompatible changes in 0.7.x:
* When the profiling interface settles down, maybe in 0.7.x, maybe
|