1. This is in contrast to ``interface'' style approaches such as Xerox's Inter-Language Unification (ILU).[Janssen] The tight integration is not only compatible with interface approaches, but may make interface implementation easier.
2. When LINT is defined as a C preprocessor definition, clObject
is
actually a union of these, so that no warnings are issued with respect
to casts. On some platforms, these two representations are the same
anyway.
3. float
, double
,
(char *)
and (wchar_t *)
primitive C data
are accessible directly in their usual C format (i.e., without
conversion) from SINGLE-FLOAT
,
DOUBLE-FLOAT
, BASE-STRING
and
EXTENDED-STRING
Lisp data. This includes null
termination for strings.
4. Of course, that's how they are used in Lisp, too.
5. Currently, using COMPILE-FILE
on a
DEFGENERIC
form does not create a named C function as it
does for DEFUN
forms. Thus generic functions must be
called by funcalling their Lisp closure object or symbol instead of by
calling a named C function directly. This restriction will be lifted
in future versions.
6. These temporary variables should not effect performance, as a good C compiler should be able to eliminate them. They do effect readability/maintainability, however.
7. The design of the interpreter and integration with
the compiler is outlined in the last section of this paper.
References
[Ansi] ANSI X3. ``X3.226:1994, American National Standard for
Programming Language Common LISP.'' American National Standards
Institute, New York, NY,
1994. (http://www.elwood.com/alu/table/references.htm#ansi)
[Attardi] Attardi, Giuseppe. ``Overview of the ECL Compiler.'' Unpublished. (ftp://ftp.di.unipi.it/pub/lang/lisp/)
[Boehm] Boehm, H., and M. Weiser, ``Garbage Collection in an Uncooperative Environment,'' Software Practice & Experience, September 1988, pp. 807-820. (See DEMERS, below.)
[Demers] Demers Alan, Hans Boehm and Carl Hauser. ``Posix Portable Common Runtime (PPCR) Documentation.'' Unpublished, 1994. (ftp://parcftp.xerox.com/pub/ppcr/)
[Haible] Haible, Bruno and Michael Stoll. ``CLISP Documentation.'' Unpublished. (ftp://ma2s2.mathematik.uni-karlsruhe.de/pub/lisp/clisp)
[Harbison] Harbison, Samuel P. and Guy L. Steele Jr. ``C, A Reference Manual,'' 4th Ed. Prentice-Hall, Englewood Cliffs, NJ, 1995.
[Hennessey] Hennessey, Wade. ``WCL: Delivering Efficient Common Lisp Applciations under Unix.'' Unpublished. (ftp://cdr.stanford.edu/pub/wcl/)
[Hoffmann] Hoffmann, Ulrich. ``Using C as Target Code for Translating Highlevel Programming Languages.'' Unpublished, 1993. (ftp.informatik.uni-kiel.de:/pub/kiel/apply/)
[Janssen] Janssen, Bill, Mike Spreitzer, Dan Larner, Chris Jacobi. ``Inter-Language Unification 2.0 Reference Manual.'' Xerox, Palo Alto, CA, 1998. (ftp://ftp.parc.xerox.com/pub/ilu/ilu.html)
[Kernighan] Kernighan, Brian W. and Dennis M Ritchie. ``The C Programming Language,'' 1st Ed. Prentice-Hall, Englewood Cliffs, NJ, 1978.
[Kiczales] Kiczales, Gregor, Jim des Rivieres and Daniel G. Bobrow. ``The Art of the Metaobject Protocol.'' MIT Press. Cambridge, MA, 1992. (http://www.elwood.com/alu/table/references.htm#mop)
[Schelter] Schelter, William. ``GCL Documentation.'' Unpublished, 1994. (ftp://ftp.cli.com/pub/gcl/)
[Stearns] Stearns, Howard. ``Elwood Eclipse Common Lisp Product Documentation.'' Elwood, Oak Creek, WI, 1997. (http://www.elwood.com/eclipse-info)
[Steele] Steele, Guy L., Jr. ``Common Lisp: The Language,'' 1st Ed. Digital Press, Beford, MA, 1984.
[Yuasa] Yuasa, Taiichi. ``Design and Implementation of Kyoto Common Lisp.'' Journal of Information Processing, Vol. 13, No. 3, 1990.