sbcl.sbcl/contrib
Christophe Rhodes 0aecc2b201 0.9.4.54:
Declassification of INSTANCE and FUNCALLABLE-INSTANCE.

	It turns out that the classes INSTANCE and
        FUNCALLABLE-INSTANCE, as expressed in instance-pointer-lowtag
	and funcallable-instance-widetag, are incompatible with the
	MOP's notion of classes: the types INSTANCE and
	FUNCALLABLE-INSTANCE are necessarily disjoint (no instance can
	have a widetag of anything other than instance-header-widetag),
	but FUNCALLABLE-STANDARD-OBJECT is required to be a subclass of
	STANDARD-OBJECT, and must therefore have the superclasses of
	STANDARD-OBJECT among its superclasses.  If INSTANCE is one of
	those, FUNCALLABLE-INSTANCE cannot be, so F-S-Os would not be of
	type FUNCALLABLE-INSTANCE (which is wrong); if it is not one of
	those, then ordinary S-Os would not be of type INSTANCE (which
	is wrong).  CMUCL, at the time of writing, exhibits type system
	confusion in this area, as demonstrated by CSR cmucl-imp
	2005-09-0x).

	So, we need to do something else; probably most straightforward
	to make INSTANCE and FUNCALLABLE-INSTANCE named types, as they
	are of the same order of specialness as e.g. T -- not quite as
	special, but almost.  Some hacking later...

	... the usual type system dance.  Play whack-a-mole with test
		failures and compilation failures until they all go
		away.  Primtype, class, typetran, and so on are
		fiddled with.
	... somewhat hacky code for determining when a class is subtypep
		instance / funcallable-instance.
	... different hard-coded constants for genesis; don't make a
		special instance-layout, because the instance class is
		gone.
	... just to prove we've achieved something, make STANDARD-OBJECT
		a superclass of FUNCALLABLE-STANDARD-OBJECT.
		(Supporting METAOBJECT should be straightforward now)
	... many many new tests, both of the before-xc variety (it's
		amazing in how many ways I can get the type system
		wrong) and of the regular form.  Also add some
		ctor tests that aren't exercised yet.
2005-09-09 14:16:17 +00:00
..
asdf 0.9.4.18: 2005-08-31 14:43:43 +00:00
asdf-install 0.9.2.43: 2005-07-14 16:30:05 +00:00
sb-aclrepl 0.9.4.54: 2005-09-09 14:16:17 +00:00
sb-bsd-sockets 0.9.2.43: 2005-07-14 16:30:05 +00:00
sb-cltl2 0.9.2.43: 2005-07-14 16:30:05 +00:00
sb-executable 0.9.2.43: 2005-07-14 16:30:05 +00:00
sb-grovel 0.9.2.43: 2005-07-14 16:30:05 +00:00
sb-introspect 0.9.2.43: 2005-07-14 16:30:05 +00:00
sb-md5 0.9.2.43: 2005-07-14 16:30:05 +00:00
sb-posix 0.9.2.43: 2005-07-14 16:30:05 +00:00
sb-rotate-byte 0.9.4.8: 2005-08-26 22:19:12 +00:00
sb-rt 0.9.2.43: 2005-07-14 16:30:05 +00:00
sb-simple-streams 0.9.3.36: 2005-08-10 07:57:33 +00:00
sb-sprof 0.9.2.43: 2005-07-14 16:30:05 +00:00
.cvsignore 0.8.0.20: 2003-05-30 11:26:58 +00:00
asdf-module.mk 0.8.18.15: 2005-01-06 18:31:25 +00:00
asdf-stub.lisp 0.9.2.43: 2005-07-14 16:30:05 +00:00
code-extras.lisp 0.9.2.43: 2005-07-14 16:30:05 +00:00
compiler-extras.lisp 0.9.2.43: 2005-07-14 16:30:05 +00:00
experimental-thread.patch 0.8.4.40 2003-10-24 10:23:55 +00:00
README 0.8.4.27: 2003-10-17 14:27:44 +00:00
stale-symbols.lisp 0.9.2.43: 2005-07-14 16:30:05 +00:00
STANDARDS 0.8.9.33: 2004-04-09 20:54:24 +00:00
vanilla-module.mk 0.8.5.26: 2003-11-08 15:04:45 +00:00

This directory is for extensions to SBCL. They aren't necessary for
core SBCL functionality, or else they'd be built into the main SBCL
binary automatically. And they're not portable Common Lisp, or they'd
be put elsewhere (see http://sbcl.sf.net/libs.php for pointers)

There are two kinds of contrib module in this directory:

  * Newer contrib modules conform to the contrib standard (see 
    STANDARDS) and are automatically built and installed along with
    SBCL itself.  Each of these is in its own subdirectory with a
    Makefile, and can be loaded with REQUIRE.

  * Older standalone files in the contrib directory itself are
    effectively unpackaged and may or may not work with the current
    SBCL version.

Some good candidates for future extensions here are:
  * bindings to existing foreign libraries (e.g. to a regexp library
    like PCRE, or to a compression library like zlib, or to a graphics
    library like Tk)
  * new libraries (e.g. a CORBA interface)
  * low-level hooks into SBCL needed to interface it to some wrapper
    system (e.g. to interface to a graphical debugger of some sort)
  * a too-alpha-to-be-supported-yet tree shaker

SBCL extensions of less general interest, e.g. a binding to the C
interface of the Oracle RDBMS, or particularly large extensions, e.g.
big graphics frameworks, can also be associated with the SBCL project,
but instead of being included in this directory as part of the
distribution, they will be made available or linked to on the SBCL
project web site.