1.0.0.22: Extensible sequences. (EXPERIMENTAL: Do Not Use As Food)
authorChristophe Rhodes <csr21@cantab.net>
Tue, 5 Dec 2006 17:50:18 +0000 (17:50 +0000)
committerChristophe Rhodes <csr21@cantab.net>
Tue, 5 Dec 2006 17:50:18 +0000 (17:50 +0000)
commita682f4c392bc874a6a898632889319ebdd8821fc
tree3e25d3d5bf3a131bc6c76a65d2be7001aa8ba43e
parent39e19255f69cbba8668b4b7ffa58532ab6309375
1.0.0.22: Extensible sequences.  (EXPERIMENTAL: Do Not Use As Food)
... a little bit of type system hackery, as usual; we can't
use hierarchical comparison on the newly non-sealed
classoid SEQUENCE because, well, its subclasses aren't
hierarchically arranged (take a bow, ARRAY).
... a certain amount of rearrangement of seq.lisp and related
source files; mostly, defining SEQ-DISPATCH to have
three branches rather than two, and writing trampoline
stubs.
... make CONSED-SEQUENCE understand that we can only be clever
about freshly-consed vectors.
... actually make DOVECTOR be like DOLIST, in having a tagbody,
being clever about the declarations, and so on.
... new SEQUENCEP function.
... new macro DOSEQUENCE (like DOVECTOR and DOLIST but for
sequences, used in one or two places)
... lotso &REST args for sequence functions, so fndb needed
reworking.  (The &REST args have dynamic extent and
are declared as such)
... change VALIDATE-SUPERCLASS to allow SEQUENCE as a
superclass.
... disable a couple of XC type tests.

Note: you don't get tests for this for two reasons: one, the
interface isn't stable (I'm hoping to get feedback), but more
importantly two, the tests that I have are a derived work of a
        GPL piece of software (the ansi-tests from GCL).  This situation
        will be rectified eventually.

        Feedback welcome.
23 files changed:
NEWS
package-data-list.lisp-expr
src/code/array.lisp
src/code/class.lisp
src/code/coerce.lisp
src/code/cross-type.lisp
src/code/defboot.lisp
src/code/deftypes-for-target.lisp
src/code/early-extensions.lisp
src/code/early-type.lisp
src/code/late-type.lisp
src/code/pred.lisp
src/code/seq.lisp
src/code/sort.lisp
src/cold/warm.lisp
src/compiler/fndb.lisp
src/compiler/generic/vm-fndb.lisp
src/compiler/seqtran.lisp
src/compiler/typetran.lisp
src/pcl/sequence.lisp [new file with mode: 0644]
src/pcl/std-class.lisp
tests/type.before-xc.lisp
version.lisp-expr