2.2 Package Structure

CLIM defines a variety of packages in order to provide its functionality. In general, no symbols except for the symbols in this specification should be added to those packages. [annotate]

The clim-lisp package is intended to implement as much of the draft X3J13 Common Lisp as possible, independent of the conformance of individual vendors. (When all Lisp vendors implement X3J13 Common Lisp, the clim-lisp package could be eliminated.) clim-lisp is the version of Common Lisp in which CLIM is implemented and which the clim-user package uses instead of common-lisp. clim-lisp contains only exported symbols, and is locked in those implementations that allow package locking. [annotate]

clim is the package where the symbols specified in this specification live. It contains only exported symbols and is locked in those implementations that allow package locking. [annotate]

clim-sys is the package where useful "system-like" functionality lives, including such things as resources and multi-processing primitives. It contains functionality that is not part of Common Lisp, but which is not conceptually the province of CLIM itself. It contains only exported symbols and is locked in those implementations that allow package locking. [annotate]

No code is written in any of the above packages, but rather code is written for symbols in the above packages. None of the above use any other packages (in the sense of the :use option to defpackage). A CLIM implementation might define a clim-internals package that uses each of the above packages, thus getting the definition of Lisp from clim-lisp. It would then implement the functionality of the symbols in clim and clim-sys in the clim-internals package. [annotate]

clim-user is a package that programmers can use if they don't wish to create their own package. It is the CLIM analog of common-lisp-user. [annotate]