SBCL is a fork off of the main branch of CMUCL. SBCL is distinguished from CMUCL by a greater emphasis on maintainability. In particular, the SBCL system can be built directly from its source code, so that the output corresponds to the source code in a controlled, verifiable way, and arbitrary changes can be made to the system without causing bootstrapping problems. SBCL also places less emphasis than CMU CL does on new non-ANSI extensions, or on backward compatibility with old non-ANSI features.
More information at the project page at http://sbcl.sourceforge.net/, and on the SBCL Internals CLiki
Common-Lisp-Controller-compatible SBCL Debian (.deb) packages are part of Debian GNU/Linux 3.0/Woody and Debian GNU/Linux 3.1/Sarge for Alpha, x86, PPC, and SPARC. Later releases will include more architectures.
Local pages
- boinkmarks - Benchmarks of the current & of old versions of SBCL, as related in Somewhere between 8 and 11 years without boinkmarks
- CAPTURED-STREAM - captured-stream is a small Common Lisp library for viewing streams as sequences
- cl-competitive - A code collection maintained mainly for competitive programming, and partly for just understanding algorithms
- cl-textmagic - CL-TEXTMAGIC is a Common Lisp interface to the TextMagic
- CLORB - CLORB is a CORBA ORB that implements the OMG Lisp Language Mapping for CORBA
- CloserLookAtCharacters - Characters are not their codes -- Encodings and external format in Common Lisp
- CMUCL Hints - A collection of miscellaneous hints and tips for CMUCL users - some also apply to the CMUCL spin-off, SBCL
- Epsilon - This library provides SBCL with monolithic library support necessary to securely build, load and distribute binary packages
- lep - Provides a LEP server for SBCL as well as command line clients eval and listener
- lisp-network-server - lisp-network-server (also known as lns) is a simple framework for writing Common Lisp network applications with SBCL
- quickapp - A project for generating template projects that use SBCL and buildapp
- ROTATE-BYTE - Function ROTATE-BYTE
- sb-heapdump - sb-heapdump is a library for SBCL which writes graphs of Lisp objects to
- sb-sequence - An SBCL implementation of the protocol for user defined sequences
- sb-texinfo - sb-texinfo was originally written for processing the SBCL docstrings by Rudi Sclatte in 2004, and has been maintained as part of SBCL since then
- SB-X86-PORTIO - SB-X86-PORTIO is a module for doing raw port I/O on SBCL/x86/x86-64
- SBCL Internals - SBCL Internals was another CLiki installation for SBCL hackers to document bits of the internals of said CL implementation
- Steeldump - Steeldump is an unofficial APT repository for applications written in Common Lisp, providing binary packages based on SBCL
Building 0.8.4 on SPARC
The Sun's assembler doesn't like the GNU syntax used in the SBCL assembler sources, so something like the following is required:
$ ln -s `which gcc` ~/bin/gcc $ ln -s `which gas` ~/bin/as $ export COMPILER_PATH=~/bin
Also, when building from CMUCL you need to add the following stanza to src/cold/ansify.lisp:
#+(and cmu sparc) (ext:set-floating-point-modes :traps '(:overflow :invalid :divide-by-zero))
SBCL Advocacy Haiku
(unless (equalp (lisp-implementation-type) "SBCL") (quit))
#-sbcl(quit)
Scripts
As of SBCL 1.0.22, shebang-scripts are supported via the --script option (add #!/usr/bin/sbcl --script as the first line). However, --script option changes the way initialization is performed (no sysinit (/etc/sbclrc) and no userinit (~/.sbclrc)).Older versions of SBCL don't tolerate shebang lines (CLISP does). To create an SBCL script, manual/Shebang-Scripts.html suggests using an external trampoline or init hair. That's silly. An executable file without a shebang line defaults to sh. So an SBCL script is simply
$ cat foo #| exec sbcl --noinform --load $0 --end-toplevel-options "$@" |# (format t "hi~%") (quit) $ chmod a+x foo $ ./foo hi $To compile, simply
#| fasl=`dirname $0`/`basename $0 .lisp`.fasl [ $fasl -ot $0 ] && sbcl --noinform --eval "(compile-file \"$0\")" --eval "(quit)" > /dev/null exec sbcl --noinform --load $fasl --end-toplevel-options "$@" |#
Installing SBCL from source not in /usr/local
Unpack the source tarball.
Set INSTALL_ROOT to where you want it to go.
export INSTALL_ROOT=$HOME
Now use this hack so it will look for the core file in the right place
export CC="cc '-DSBCL_HOME=\"$INSTALL_ROOT/lib/sbcl/\"'" sh make.sh sh install.sh
Using Common Lisp Controller with a self installed SBCL
Put this in your .sbclrc
(require 'sb-bsd-sockets) ; needed now because it does not gel well with the path munging by the common-lisp-controller (load "/usr/share/common-lisp/source/common-lisp-controller/common-lisp-controller.lisp") (common-lisp-controller:init-common-lisp-controller-v4 "sbcl")
Adding GNU Readline support
Evgeniy Zhemchugov has written a GNU readline loader to get uparrow history and tab completion like in CLISP. Download or clone and load it from your ~/.sbclrchttp://jini-zh.org/sbcl-readline/sbcl-readline.html