34.3. Files

34.3.1. Unpreprocessed C code
34.3.1.1. Includes
34.3.1.2. Internal C Modules
34.3.1.3. Number system (arithmetic)
34.3.1.3.1. External routines for the arithmetic system, written in assembly language
34.3.1.4. External routines for accessing the stack, written in assembly language
34.3.2. Other assembly language stuff
34.3.3. Lisp source files
34.3.4. External Modules
34.3.5. Documentation
34.3.6. Internationalization
34.3.7. Automatic configuration on UNIX and MinGW
34.3.8. Externally maintained files

34.3.1. Unpreprocessed C code

34.3.1.1. Includes

src/lispbibl.d
main include file
src/fsubr.d
list of all built-in special forms
src/subr.d
list of all built-in functions
src/pseudofun.d
list of all pseudo functions
src/constpack.d
list of packages accessed by C code
src/constsym.d
list of symbols accessed by C code
src/constobj.d
list of miscellaneous objects accessed by C code
src/unix.d
include file for the UNIX implementations
src/win32.d
include file for the Win32 based versions
src/xthread.d
include file for thread support
build/modules.h
list of foreign modules, generated at build time

34.3.1.2. Internal C Modules

src/spvw.d

Memory management (garbage-collection), startup; some OS interface.

src/avl.d
An implementation of AVL (Adelson-Velskii and Landis) trees.
src/sort.d
A sorting routine.
src/spvwtabf.d
The table of built-in special operators and functions.
src/spvwtabs.d
The table of all SYMBOLs accessed by C code.
src/spvwtabo.d
The table of miscellaneous objects accessed by C code.
src/eval.d

Evaluator (form interpreter) and bytecode interpreter.

src/bytecode.d
List of bytecodes.
src/lightning.c
Just-in-time compiler using GNU lightning.
src/control.d
Special operator interpreter.
src/pathname.d
Pathnames, file- and directory-related functions.
src/stream.d
STREAMs of all kinds: FILE-STREAMs, terminal streams, STRING-STREAMs etc.
src/socket.d
Opening sockets for TCP/IP and CLX.
src/io.d
The lisp reader (parser) and printer (including pretty printer).
src/array.d
Functions dealing with ARRAYs and VECTORs.
src/hashtabl.d
Functions dealing with HASH-TABLEs.
src/list.d
Functions dealing with LISTs.
src/package.d
Functions dealing with PACKAGEs.
src/record.d
Functions dealing with records (structures, closures, etc.)
src/sequence.d
The generic SEQUENCE functions.
src/funarg.d
Functional arguments, like :TEST and :KEY.
src/charstrg.d
Functions dealing with CHARACTERs and STRINGs.
src/debug.d
The debugger and the read-eval-print loop.
src/error.d

ERROR handling and SIGNALing.

src/errunix.d
UNIX-specific error messages.
src/errwin32.d
Win32-specific error messages.
src/misc.d
Miscellaneous functions.
src/time.d
Timing functions.
src/predtype.d
Predicates, type tests.
src/symbol.d
Functions dealing with SYMBOLs.
src/unixaux.d
Auxiliary functions (UNIX version only).
src/win32aux.d
Auxiliary functions (Win32 version only).
src/foreign.d
FFI implementation.
src/lisparit.d
Functions dealing with numbers (arithmetic), see Section 34.3.1.3, “Number system (arithmetic)”.
src/noreadline.d
Dummy plug-in for the GNU readline library.
src/zthread.d
MT implementation.

34.3.1.3. Number system (arithmetic)

src/lisparit.d
initialization, input/output of numbers, lisp functions
src/aridecl.d
declarations
src/arilev0.d
arithmetic at the machine level
src/arilev1.d
digit sequences
src/arilev1c.d
operations on digit sequences, written in C
src/arilev1i.d
operations on digit sequences, as inline functions
src/arilev1e.d
operations on digit sequences, bindings to external routines
src/intelem.d
INTEGERs: elementary operations
src/intlog.d
INTEGERs: logical connectives
src/intplus.d
INTEGERs: addition and subtraction
src/intcomp.d
INTEGERs: comparison
src/intbyte.d
INTEGERs: byte operations LDB, DPB
src/intmal.d
INTEGERs: multiplication
src/intdiv.d
INTEGERs: division
src/intgcd.d
INTEGERs: GCD and LCM
src/int2adic.d
INTEGERs: operations on 2-adic integers
src/intsqrt.d
INTEGERs: square root, n-th root
src/intprint.d
subroutines for INTEGER output
src/intread.d
subroutines for INTEGER input
src/rational.d
rational numbers (RATIOs)
src/sfloat.d
elementary operations for SHORT-FLOATs
src/ffloat.d
elementary operations for SINGLE-FLOATs
src/dfloat.d
elementary operations for DOUBLE-FLOATs
src/lfloat.d
elementary operations for LONG-FLOATs
src/flo_konv.d
conversions between FLOATs
src/flo_rest.d
general FLOAT operations
src/realelem.d
elementary functions for REAL numbers
src/realrand.d
random numbers
src/realtran.d
transcendental functions for REAL numbers
src/compelem.d
elementary functions for COMPLEX numbers
src/comptran.d
transcendental functions for COMPLEX numbers
34.3.1.3.1. External routines for the arithmetic system, written in assembly language
src/ari_asm_sparc.d
written in SPARC assembler
src/ari_asm_sparc64.d
written in 64-bit SPARC assembler
src/ari_asm_i386.d
written in i386/i486 assembler
src/ari_asm_mips.d
written in MIPS assembler
src/ari_asm_mips64.d
written in 64-bit MIPS assembler
src/ari_asm_hppa.d
written in HPPA-1.0 assembler
src/ari_asm_arm.d
written in ARM assembler

34.3.1.4. External routines for accessing the stack, written in assembly language

src/sp_asm_m68k.d
written in 68000 assembler, MIT syntax
src/sp_asm_sparc.d
written in SPARC assembler
src/sp_asm_sparc64.d
written in 64-bit SPARC assembler
src/sp_asm_i386.d
written in i386/i486 assembler
src/sp_asm_mips.d
written in MIPS assembler

34.3.2. Other assembly language stuff

src/asm-i386.sh
converts i386 assembler from Linux/i386 format (with MIT syntax) to a macro syntax
src/asm-i386.h
expands i386 assembler in macro syntax to either MIT or Intel syntax
src/noexecstack.h
Ensures that a hand-written assembly-language file does not force an executable stack in the process that executes. This is needed because the GNU binutils developers, when adding some security feature in 2005, favoured backward compatibility of already built object files, at the detriment of programmers who write assembly-language. For more details, see the notes in GNU libffcall.

34.3.3. Lisp source files

src/init.lisp
the first file to be loaded during bootstrapping, loads everything else
src/defseq.lisp
defines the usual sequence types for the generic sequence functions
src/backquote.lisp
implements the backquote read macro
src/defmacro.lisp
implements DEFMACRO
src/macros1.lisp
the most important macros
src/macros2.lisp
some other macros
src/defs1.lisp
miscellaneous definitions
src/timezone.lisp
site-dependent definition of time zone, except for UNIX and Win32.
src/places.lisp
macros using places, definitions of most standard and extensiion places
src/floatprint.lisp
defines SYS::WRITE-FLOAT-DECIMAL for printing floating point numbers in base 10
src/type.lisp
functions working with type specifiers: TYPEP, SUBTYPEP
src/defstruct.lisp
implements the macro DEFSTRUCT
src/format.lisp
implements the function FORMAT
src/room.lisp
implements the function ROOM (see also Section 25.3.1, “Function ROOM)
src/savemem.lisp
see Section 31.2, “Saving an Image”
src/xcharin.lisp (optional)
implements extended character input for EXT:WITH-KEYBOARD
src/keyboard.lisp (optional)
implements the macro EXT:WITH-KEYBOARD
src/runprog.lisp
implements the functions EXT:RUN-PROGRAM, EXT:RUN-SHELL-COMMAND etc.
src/query.lisp
implements the functions Y-OR-N-P and YES-OR-NO-P
src/reploop.lisp
support for the debugger and the read-eval-print loop
src/dribble.lisp
implements the functions DRIBBLE and EXT:DRIBBLE-STREAM
src/complete.lisp
implements completion, see Section 21.2, “Terminal interaction”.
src/describe.lisp
implements functions DESCRIBE, APROPOS, APROPOS-LIST
src/trace.lisp
tracer
src/macros3.lisp (optional)
macros EXT:LETF, EXT:LETF*, EXT:ETHE, EXT:WITH-COLLECT, function EXT:COMPILED-FILE-P.
build/config.lisp

site-dependent configuration, a user-modified copy of one of the following:

See Section 31.12, “Customizing CLISP behavior”.

src/compiler.lisp
compiles Lisp code to bytecode
src/functions.lisp
FUNCTION-LAMBDA-EXPRESSION et al
src/disassem.lisp
the function DISASSEMBLE
src/defs2.lisp
miscellaneous [ANSI CL standard] definitions
src/loop.lisp
implements the [ANSI CL standard]-compatible LOOP macro
src/clos.lisp

loads the various parts of the CLOS:

src/clos-package.lisp
declares the imports and exports of the CLOS package
src/clos-macros.lisp
defines some internal macros used by the CLOS implementation
src/clos-class0.lisp
defines the class-version structure
src/clos-metaobject1.lisp
defines the CLOS:METAOBJECT class
src/clos-slotdef1.lisp
defines the CLOS:SLOT-DEFINITION class and its subclasses
src/clos-slotdef2.lisp
defines INITIALIZE-INSTANCE methods for CLOS:SLOT-DEFINITION and its subclasses
src/clos-slotdef3.lisp
defines the generic functions that can be used on CLOS:SLOT-DEFINITION objects
src/clos-stablehash1.lisp
defines the EXT:STANDARD-STABLEHASH class
src/clos-stablehash2.lisp
defines INITIALIZE-INSTANCE methods for EXT:STANDARD-STABLEHASH
src/clos-specializer1.lisp
defines the CLOS:SPECIALIZER class and its subclasses
src/clos-specializer2.lisp
defines INITIALIZE-INSTANCE methods for CLOS:SPECIALIZER and its subclasses
src/clos-specializer3.lisp
defines the generic functions that can be used on CLOS:SPECIALIZER objects
src/clos-class1.lisp
defines the potential-class class and its subclasses
src/clos-class2.lisp
implements the mapping from class names to classes
src/clos-class3.lisp
implements the DEFCLASS macro, class definition and class redefinition
src/clos-class4.lisp
defines INITIALIZE-INSTANCE methods for potential-class and its subclasses
src/clos-class5.lisp
implements the special logic of MAKE-INSTANCE, INITIALIZE-INSTANCE etc.
src/clos-class6.lisp
defines the generic functions that can be used on potential-class objects
src/clos-method1.lisp
defines the METHOD class and its subclasses
src/clos-method2.lisp
implements the bulk of DEFMETHOD
src/clos-method3.lisp
defines the generic functions that can be used on METHOD objects
src/clos-method4.lisp
makes generic functions on STANDARD-METHOD objects extensible
src/clos-methcomb1.lisp
defines the METHOD-COMBINATION class
src/clos-methcomb2.lisp
implements method combination (part 2 of generic function dispatch and execution) and the DEFINE-METHOD-COMBINATION macro
src/clos-methcomb3.lisp
defines INITIALIZE-INSTANCE methods for METHOD-COMBINATION
src/clos-methcomb4.lisp
makes generic functions on METHOD-COMBINATION objects extensible
src/clos-genfun1.lisp
defines the GENERIC-FUNCTION class and its metaclass, superclass and subclasses
src/clos-genfun2a.lisp
implements part 1 of generic function dispatch and execution
src/clos-genfun2b.lisp
implements part 3 of generic function dispatch and execution
src/clos-genfun3.lisp
implements creation of generic function objects, DEFMETHOD, DEFGENERIC
src/clos-genfun4.lisp
defines INITIALIZE-INSTANCE methods for GENERIC-FUNCTION and its subclasses
src/clos-genfun5.lisp
makes generic functions on GENERIC-FUNCTION objects extensible
src/clos-slots1.lisp
implements low-level slot access, WITH-SLOTS, WITH-ACCESSORS
src/clos-slots2.lisp
defines the generic functions that deal with slot access
src/clos-dependent.lisp
implements notification from metaobjects to dependent objects
src/clos-print.lisp
implements the function PRINT-OBJECT
src/clos-custom.lisp
provides user customization of the CLOS
src/gray.lisp
implements STREAM-DEFINITION-BY-USER:GENERIC-FUNCTIONS
src/fill-out.lisp
implements EXT:FILL-STREAM
src/disassem.lisp
implements DISASSEMBLE
src/condition.lisp
implements the Common Lisp Condition System (CLCS)
src/gstream.lisp (optional)
generic stream default methods, see Section 31.6, “Generic streams”
src/foreign1.lisp
FFI implementation.
src/screen.lisp
the screen access package, see Section 32.1, “Random Screen Access”
src/edit.lisp (optional)
the screen editor (ED), EXT:UNCOMPILE
src/inspect.lisp
implements INSPECT (tty and HTTP frontends)
src/clhs.lisp
implements EXT:OPEN-HTTP, EXT:BROWSE-URL
src/exporting.lisp
Macros that export their definienda, see Section 32.2.7.3, “Exporting”.
src/threads.lisp
MT interface
src/german.lisp
src/french.lisp
src/spanish.lisp
src/russian.lisp
src/danish.lisp
src/dutch.lisp
i18n user messages

34.3.4. External Modules

modules/
individual external module sources

34.3.5. Documentation

src/NEWS
the list of the user-visible changes
src/_README

master for the distribution's README

doc/clisp.xml.in
DocBook/XML sources for the CLISP manual page
build-dir/clisp.1
the platform-specific man manual page, generated from doc/clisp.xml.in at build time
build-dir/clisp.html
the platform-specific HTML manual page, generated from doc/clisp.xml.in at build time
doc/impnotes.xml.in

the master DocBook/XML file for these implementation notes; includes the following files

doc/impnotes.html
these HTML implementation notes, generated from doc/impnotes.xml.in at release time

34.3.6. Internationalization

These files are usually updated a couple of weeks before a CLISP release using make -f Makefile.devel tp-mail, see also Section 34.3.8, “Externally maintained files”.

We use the Translation project and the above command sends the updated files to the translators.

src/po/*.pot
list of translatable messages (portable object template)
src/po/*.po
translated messages (portable objects)
src/po/*.gmo
translated messages (GNU format message objects)

34.3.7. Automatic configuration on UNIX and MinGW

configure
the main configuration script
version.sh
specifies the current CLISP version
src/configure.in
lists features to be checked
src/m4/

a repertoire of features. Use with GNU autoconf 2.62

src/m4/clisp.m4

This file defines the macro CL_CLISP which takes two optional parameters:

features-list
The list of CLISP features to check. E.g., passing [foo bar] results in cl_cv_clisp_FOO and cl_cv_clisp_BAR being defined to yes or no, depending on the value of *FEATURES*, i.e., on the return value of (READ-FROM-STRING "#+FOO \"yes\" #-FOO \"no\"").
required

Determines whether configure should fail if CLISP or one of the requested features is missing.

Should be true (the default) or false.

Calling this macro causes the generated configure to accept the option --with-clisp="clisp command line" which allows one to use a specific CLISP installation instead of clisp in PATH.

In addition to the aforementioned per-feature variables, this macro defines the follwing variables:

cl_cv_clisp_version
The return value of LISP-IMPLEMENTATION-VERSION.
cl_cv_clisp_libdir
The NAMESTRING of CUSTOM:*LIB-DIRECTORY*.
cl_cv_clisp_linkset
The directory of the current linking set.

It also substitues the following variables:

CLISP_LINKKIT
CLISP_FILES
CLISP_LIBS
CLISP_CFLAGS
CLISP_CPPFLAGS

(taken from $cl_cv_clisp_linkset/makevars) and CLISP (the CLISP command line).

This file is installed in /usr/share/aclocal by make install.

src/configure
configuration script, generated from src/configure.in
src/intparam.c
figures out some machine parameters (word size, endianness etc.)
src/floatparam.c
figures out some floating point arithmetics parameters (rounding, epsilons etc.)
src/config.h.in
header file master, generated from src/configure.in. build-dir/config.h contains the values of the features discovered by src/configure.
src/makemake.in
makefile construction script master
src/_clisp.c
master for the distribution's driver program
src/_distmakefile
master for the distribution's Makefile

34.3.8. Externally maintained files

The externally maintained files are usually updated a couple of weeks before a CLISP release using make -f Makefile.devel pre-release, see also Section 34.3.6, “Internationalization”.

src/gllib/
src/glm4/
C and GNU autoconf files from GNU Portability Library; updated using make -f Makefile.devel gnulib-imported at top level.
src/build-aux/
various shell scripts, updated using make -f Makefile.devel build-aux-update at top level.

These notes document CLISP version 2.49.93+Last modified: 2018-02-19