- * (funcall (lambda (x y) (list x y y)) :toy :choo)
-
- (:TOY :CHOO :CHOO)
- * "Hello World"
-
- "Hello World"
- *
-
-Many people like to run SBCL, like other Lisp systems, as a subprocess
-under Emacs. The Emacs "ilisp" mode provides many convenient features,
-like command line editing, tab completion, and various kinds of
-coupling between Common Lisp source files and the interactive SBCL
-subprocess, but can be somewhat fragile because it tries to be so
-clever and intimate in its interactions with the Lisp subprocess. In
-case of ilisp problems, running SBCL in the Emacs "shell" mode can a
-useful substitute.
-
-.SH OVERVIEW
-
-SBCL compiles Common Lisp to native code. (Even today, some 30 years
-after the MacLisp compiler, people will tell you that Lisp is an
-interpreted language. Ignore them.)
-
-SBCL aims for but has not completely achieved compliance with the ANSI
-standard for Common Lisp. More information about this is available in
-the BUGS section below.
-
-SBCL also includes various non-ANSI extensions, described more fully
-in the User Manual. Some of these are in the base system and others
-are "contrib" modules loaded on request using REQUIRE. For example,
-to load the SB-BSD-SOCKETS module that providces TCP/IP connectivity,
-
- * (require 'asdf)
- * (require 'sb-bsd-sockets)
-
-Many Lispy extensions have been retained from CMU CL:
-.TP 3
-\--
-CMU-CL-style safe implementation of type declarations:
-"Declarations are assertions."
-.TP 3
-\--
-the source level debugger (very similar to CMU CL's)
-.TP 3
-\--
-the profiler (now somewhat different from CMU CL's)
-.TP 3
-\--
-saving the state of the running SBCL process, producing a
-"core" file which can be restarted later
-.TP 3
-\--
-Gray streams (a de-facto standard system of overloadable CLOS classes
-whose instances can be used wherever ordinary ANSI streams can be used)
-.TP 3
-\--
-weak pointers and finalization (which have unfortunately
-suffered from at least some code rot, so that e.g. weak hash
-tables don't work)
-.PP
-
-Fundamental system interface extensions are also provided:
-.TP 3
-\--
-calling out to C code (a.k.a. FFI, foreign function interface,
-with very nearly the same interface as CMU CL)
-.TP 3
-\--
-some simple support for operations with a "scripting language"
-flavor, e.g. reading POSIX argc and argv, or executing a
-subprogram
-.PP
-
-.SH DIFFERENCES FROM CMU CL
-
-SBCL can be built from scratch using a plain vanilla ANSI Common Lisp
-system and a C compiler, and all of its properties are specified by
-the version of the source code that it was created from. This clean
-bootstrappability was the immediate motivation for forking off of the
-CMU CL development tree. A variety of implementation differences are
-motivated by this design goal.
-
-Maintenance work in SBCL since the fork has diverged somewhat from the
-maintenance work in CMU CL. Many but not all bug fixes and
-improvements have been shared between the two projects, and sometimes
-the two projects disagree about what would be an improvement.
-
-Most extensions supported by CMU CL have been unbundled from SBCL,
-including Motif support, the Hemlock editor, search paths, the
-low-level Unix interface, the WIRE protocol, various user-level macros
-and functions (e.g. LETF, ITERATE, MEMQ, REQUIRED-ARGUMENT), and many
-others.
-
-SBCL inplements multithreading, but in a completely different fashion
-from CMU CL: see the User Manual for details. As of 0.8.5 this is
-considered beta-quality and must be explicitly enabled at build time.
-
-SBCL has retained some extensions from its parent CMU CL. Many of the
-retained extensions are in these categories:
-.TP 3
-\--
-things which might be in the new ANSI spec, e.g. safe type
-declarations, weak pointers, finalization, foreign function
-interface to C, and Gray streams
-.TP 3
-\--
-things which are universally available in Unix scripting languages,
-e.g. RUN-PROGRAM and POSIX argv and getenv
-.TP 3
-\--
-hooks into the low level workings of the system which can be useful
-for debugging, e.g. requesting that a particular function be executed
-whenever GC occurs, or tuning compiler diagnostic output
-.TP 3
-\--
-unportable performance hacks, e.g. FREEZE-TYPE and PURIFY. For more
-information about these, look at the online documentation for symbols
-in the SB-EXT package, and look at the user manual.
-.PP
-
-There are also a few retained extensions which don't fall into any
-particular category, e.g. the ability to save running Lisp images as
-executable files.
-
-Some of the retained extensions have new names and/or different
-options than their CMU CL counterparts. For example, the SBCL function
-which saves a Lisp image to disk and kills the running process is
-called SAVE-LISP-AND-DIE instead of SAVE-LISP, and SBCL's
-SAVE-LISP-AND-DIE supports fewer keyword options than CMU CL's
-SAVE-LISP does.
-
-(Why doesn't SBCL support more extensions natively? Why drop all
-those nice extensions from CMU CL when the code already exists? This
-is a frequently asked question on the mailing list. There are two
-principal reasons. First, it's a design philosophy issue: arguably
-SBCL has done its job by supplying a stable FFI, and the right design
-decision is to move functionality derived from that, like socket
-support, into separate libraries. Some of these are distributed with
-SBCL as "contrib" modules, others are distributed as separate software
-packages by separate maintainers. Second, it's a practical decision -
-focusing on a smaller number of things will, we hope, let us do a
-better job on them.)