Implementation Notes for GNU CLISP

These notes document CLISP version 2.49.60+

Bruno Haible

The original author and long-time maintainer. 

Michael Stoll

The original author. 

Sam Steingold

Co-maintainer since 1998. 

Others

See COPYRIGHT for the list of other contributors and the license.  
Legal Status of the CLISP Implementation Notes
CLISP Release History

Abstract

This document describes the GNU CLISP - an implementation of the [ANSI CL standard].

See the section called “Bugs” for instructions on how to report bugs (both in the software and the documentaion).

See Q: A.1.1.5 for information on CLISP support.


Table of Contents

Overview
Conventions
I. Chapters or the Common Lisp HyperSpec
1. Introduction chap-1
1.1. Special Symbols sec_1-4-1-3
1.2. Error Terminology sec_1-4-2
1.3. Symbols in the Package COMMON-LISP sec_1-9
2. Syntax chap-2
2.1. Standard Characters sec_2-1-3
2.2. Reader Algorithm sec_2-2
2.3. Symbols as Tokens sec_2-3-4
2.4. Valid Patterns for Tokens sec_2-3-5
2.5. Backquote sec_2-4-6
2.6. Sharpsign sec_2-4-8
3. Evaluation and Compilation chap-3
3.1. Evaluation sec_3-1
3.2. Compilation sec_3-2
3.3. Declarations sec_3-3
3.4. Lambda Lists sec_3-4
4. Types and Classes chap-4
4.1. Types sec_4-2
4.2. Classes sec_4-3
4.3. Deviations from ANSI CL standard
4.4. Standard Metaclasses sec_4-3-1-1
4.5. Defining Classes sec_4-3-2
4.6. Redefining Classes sec_4-3-6
5. Data and Control Flow chap-5
5.1. Generalized Reference sec_5-1
5.2. Setf Expansions sec_5-1-1-2
5.3. Kinds of Places sec_5-1-2
5.4. Miscellaneous
5.5. Macro DEFCONSTANT
5.6. Macro EXT:FCASE
5.7. Function EXT:XOR
5.8. Function EQ
5.9. Special Operator FUNCTION
6. Iteration chap-6
6.1. The LOOP Facility sec_6-1
6.2. Miscellaneous
7. Objects chap-7
7.1. Standard Method Combination sec_7-6-6-2
8. Structures chap-8
8.1. The options for DEFSTRUCT
8.2. The structure Meta-Object Protocol
9. Conditions chap-9
9.1. Embedded Newlines in Condition Reports sec_9-1-3-1-3
9.2. Mentioning Containing Function in Condition Reports sec_9-1-3-1-5
9.3. Interfaces to Restarts sec_9-1-4-2-2
9.4. Assertions sec_9-1-5
10. Symbols chap-10
11. Packages chap-11
11.1. Introduction to Packages sec_11-1-1
11.2. Constraints on the COMMON-LISP Package for Conforming Programs - package locking sec_11-1-2-1-2
11.3. The COMMON-LISP-USER Package sec_11-1-2-2
11.4. Implementation-Defined Packages sec_11-1-2-4
11.5. Package Case-Sensitivity
12. Numbers chap-12
12.1. Numeric Types
12.2. Number Concepts sec_12-1
13. Characters chap-13
13.1. Introduction to Characters sec_13-1
13.2. Character sets
13.3. Character Scripts sec_13-1-2-1
13.4. Character Attributes sec_13-1-3
13.5. Graphic Characters sec_13-1-4-1
13.6. Alphabetic Characters sec_13-1-4-2
13.7. Characters With Case sec_13-1-4-3
13.8. Numeric Characters sec_13-1-4-4
13.9. Ordering of Characters sec_13-1-6
13.10. Character Names sec_13-1-7
13.11. Treatment of Newline during Input and Output sec_13-1-8
13.12. Character Encodings sec_13-1-9
13.13. Documentation of Implementation-Defined Scripts sec_13-1-10
13.14. Platform-Dependent Characters
13.15. Obsolete Constants
14. Conses chap-14
14.1. Conses as Lists sec_14-1-2
15. Arrays chap-15
15.1. Array Elements sec_15-1-1
16. Strings chap-16
16.1. Miscellaneous
17. Sequences chap-17
17.1. Additional Functions
17.2. Additional Macros
17.3. Functions NREVERSE & NRECONC
17.4. Functions REMOVE & DELETE
17.5. Functions SORT & STABLE-SORT
18. Hash Tables chap-18
18.1. Modifying Hash Table Keys sec_18-1-2
18.2. Function MAKE-HASH-TABLE
18.3. Macro EXT:DEFINE-HASH-TABLE-TEST
18.4. Function HASH-TABLE-TEST
18.5. Macro EXT:DOHASH
19. Filenames chap-19
19.1. Pathname Components sec_19-2-1
19.2. :UNSPECIFIC as a Component Value sec_19-2-2-2-3
19.3. External notation
19.4. Logical Pathnames sec_19-3
19.5. Miscellaneous
20. Files chap-20
20.1. Directory is not a file
20.2. File functions
20.3. Directory functions
21. Streams chap-21
21.1. Interactive Streams sec_21-1-1-1-3
21.2. Terminal interaction
21.3. Binary Input and Output
21.4. Bulk Input and Output
21.5. Non-Blocking Input and Output
21.6. Newline Convention
21.7. Function STREAM-EXTERNAL-FORMAT
21.8. Function STREAM-ELEMENT-TYPE
21.9. Function EXT:MAKE-STREAM
21.10. Function FILE-POSITION
21.11. Function EXT:ELASTIC-NEWLINE
21.12. Function OPEN
21.13. Function CLEAR-INPUT
21.14. Function CLOSE
21.15. Function OPEN-STREAM-P
21.16. Class BROADCAST-STREAM
21.17. Functions EXT:MAKE-BUFFERED-INPUT-STREAM and EXT:MAKE-BUFFERED-OUTPUT-STREAM
21.18. Function EXT:STREAM-HANDLES
22. Printer chap-22
22.1. Multiple Possible Textual Representations sec_22-1-1-1
22.2. Printing Floats sec_22-1-3-1-3
22.3. Printing Characters sec_22-1-3-2
22.4. Package Prefixes for Symbols sec_22-1-3-3-1
22.5. Printing Other Vectors sec_22-1-3-7
22.6. Printing Other Arrays sec_22-1-3-8
22.7. The Lisp Pretty Printer sec_22-2
22.8. Formatted Output sec_22-3
22.9. Functions WRITE & WRITE-TO-STRING
22.10. Macro PRINT-UNREADABLE-OBJECT
22.11. Miscellaneous Issues
23. Reader chap-23
23.1. Effect of Readtable Case on the Lisp Reader sec_23-1-2
23.2. The recursive-p argument sec_23-1-3-2
24. System Construction chap-24
24.1. Function COMPILE-FILE
24.2. Function COMPILE-FILE-PATHNAME
24.3. Function REQUIRE
24.4. Function LOAD
24.5. Variable *FEATURES*
24.6. Function EXT:FEATUREP [CLRFI-1]
24.7. Function EXT:COMPILED-FILE-P [CLRFI-2]
25. Environment chap-25
25.1. Top Level Loop sec_25-1-1
25.2. Debugging Utilities sec_25-1-2
25.3. Environment Inquiry sec_25-1-3
25.4. Time sec_25-1-4
26. Glossary chap-26
27. Appendix chap-a
28. X3J13 Issue Index [CLHS-ic]
II. Common Portable Extensions
29. Meta-Object Protocol
29.1. Introduction
29.2. Overview
29.3. Classes
29.4. Slot Definitions
29.5. Generic Functions
29.6. Methods
29.7. Accessor Methods
29.8. Specializers
29.9. Method Combinations
29.10. Slot Access
29.11. Dependent Maintenance
29.12. Deviations from AMOP
30. Gray streams
30.1. Overview
30.2. Defined classes
30.3. General generic functions
30.4. Generic functions for character input
30.5. Generic functions for character output
30.6. Generic functions for binary input
30.7. Generic functions for binary output
30.8. Class EXT:FILL-STREAM
III. Extensions Specific to CLISP
31. Platform Independent Extensions
31.1. Customizing CLISP Process Initialization and Termination
31.2. Saving an Image
31.3. Quitting CLISP
31.4. Internationalization of CLISP
31.5. Encodings
31.6. Generic streams
31.7. Weak Objects
31.8. Finalization
31.9. The Prompt
31.10. Maximum ANSI CL compliance
31.11. Additional Fancy Macros and Functions
31.12. Customizing CLISP behavior
31.13. Code Walker
32. Platform Specific Extensions
32.1. Random Screen Access
32.2. External Modules
32.3. The Foreign Function Call Facility
32.4. Socket Streams
32.5. Multiple Threads of Execution
32.6. Quickstarting delivery with CLISP
32.7. Shell, Pipes and Printing
32.8. Operating System Environment
33. Extensions Implemented as Modules
33.1. A System Definition Facility
33.2. System Calls
33.3. Internationalization of User Programs
33.4. POSIX Regular Expressions
33.5. Advanced Readline and History Functionality
33.6. GDBM - The GNU database manager
33.7. Berkeley DB access
33.8. Directory Access
33.9. PostgreSQL Database Access
33.10. Oracle Interface
33.11. LibSVM Interface
33.12. Computer Algebra System PARI
33.13. Matlab Interface
33.14. Netica Interface
33.15. Perl Compatible Regular Expressions
33.16. Interface to zlib
33.17. Raw Socket Access
33.18. The FastCGI Interface
33.19. Interface to D-Bus
33.20. GTK Interface
IV. Internals of the CLISP Implementation
34. The source files of CLISP
34.1. File Types
34.2. Source Pre-Processing
34.3. Files
35. Overview of CLISP's Garbage Collection
35.1. Introduction
35.2. Lisp objects in CLISP
35.3. Object Pointer Representations
35.4. Memory Models
35.5. The burden of garbage-collection upon the rest of CLISP
35.6. Foreign Pointers
35.7. Forcing or inhibiting Garbage Collections
35.8. Garbage Collection and Multithreading
36. Extending CLISP Core
36.1. Adding a built-in function
36.2. Adding a built-in variable
36.3. Recompilation
37. The CLISP bytecode specification
37.1. Introduction
37.2. The virtual machine
37.3. The structure of compiled functions
37.4. The general structure of the instructions
37.5. The instruction set
37.6. Examining compiled closures
37.7. Bytecode Design
V. Appendices
A. Frequently Asked Questions (With Answers) about CLISP
B. GNU Free Documentation License
C. GNU General Public License
C.1. Preamble
C.2. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
C.3. How to Apply These Terms to Your New Programs
Index
References

List of Figures

29.1. Inheritance structure of metaobject classes
29.2. Inheritance structure of class metaobject classes
29.3. Inheritance structure of slot definition metaobject classes
29.4. Inheritance structure of generic function metaobject classes
29.5. Inheritance structure of method metaobject classes
29.6. Inheritance structure of specializer metaobject classes
29.7. Inheritance structure of method combination metaobject classes

List of Tables

1. Mark-up conventions
3.1. Function call limits
12.1. Boolean operations
12.2. Fixnum limits
13.1. Number of characters
13.2. Standard characters
13.3. Semi-standard characters
13.4. Additional Named Characters
13.5. Additional syntax for characters with code from #x00 to #x1F:
13.6. Additional characters (Win32 platform only.)
13.7. Additional characters (UNIX platform only.)
13.8. Character bit constants (obsolete)
15.1. Array limits
19.1. The minimum filename syntax that may be used portably
25.1. Commands common to the main loop, the debugger and the stepper
25.2. Commands common to the debugger and the stepper
25.3. Commands common to the debugger and the stepper
25.4. Commands specific to EVAL/APPLY
25.5. Commands specific to the debugger
25.6. Commands specific to the stepper
25.7. Time granularity
29.1. Direct Superclass Relationships Among The Specified Metaobject Classes
29.2. Initialization arguments and accessors for class metaobjects
29.3. Initialization arguments and accessors for slot definition metaobjects
29.4. Initialization arguments and accessors for generic function metaobjects
29.5. Initialization arguments and accessors for method metaobjects
29.6. The correspondence between slot access function and underlying slot access generic function
35.1. Memory models with TYPECODES
35.2. Memory models with HEAPCODES

List of Examples

25.1. Identifying Individual Calls in TRACE
30.1. Example of EXT:FILL-STREAM usage
32.1. Create a module set with GNU libc bindings
32.2. Simple declarations and access
32.3. External C variable and some accesses
32.4. Calling an external function
32.5. Another example for calling an external function
32.6. Accessing cpp macros
32.7. Calling Lisp from C
32.8. Calling Lisp from C dynamically
32.9. Variable size arguments: calling gethostname from CLISP
32.10. Accessing variables in shared libraries
32.11. Controlling validity of resources
32.12. Floating point arrays
32.13. Lisp read-eval-print loop server
32.14. Lisp HTTP client
33.1. REGEXP:MATCH
33.2. REGEXP:REGEXP-QUOTE
33.3. Count unix shell users

These notes document CLISP version 2.49.60+Last modified: 2017-08-24