The right of the people to keep and arm bears shall not be infringed!
Armed Bear Common Lisp
ABCL is now maintained by Erik Huelsmann and other contributors. For more information, please see the official ABCL web site.
XCL is a new native-code implementation of Common Lisp. It features a kernel written in C++ and an optimizing compiler written in Lisp with backends for x86 and x86-64.
XCL runs on Linux, FreeBSD (tested only on x86, but it might work on x86-64 too), and 32-bit Windows.
The latest development snapshot is xcl-0.0.0.291.tar.gz (Oct 12 2010 5:32 am PST).
On Linux and FreeBSD, you should be able to build XCL by simply running make in the top-level source directory. If all goes well, you'll end up with an executable called xcl in the top-level source directory. Run this executable and do (REBUILD-LISP) at the REPL prompt to compile the .lisp source files, then restart.
Building on Windows should be equally straightforward if you have the right toolchain setup, which is basically MinGW and MSYS (I'm currently using g++ 4.4.0 and make 3.81).
The latest snapshot fails 113 out of 21609 tests in the XCL fork of pfdietz's ANSI tests, included in the tarball (use RUN-ANSI-TESTS to run the tests).
The latest snapshot builds SBCL 220.127.116.11 successfully and completes the test suites of CL-PPCRE 1.3.0, Ironclad 0.22 and Alexandria with no unexpected failures.
XCL is now on GitHub:
git clone git://github.com/gnooth/xcl.git
License is GPL.
0.0.0.291 (Oct 12 2010 5:32 am PST)
0.0.0.290 (Nov 23 2009 9:18 am PST)
- XCL now includes ASDF 2 (version 2.134, which I believe is the same as
2.009, depending on your numbering system).
- On Linux, XCL can now run all the benchmarks in the autobench fork of
cl-bench. The stack exhaustion issue with WALK-LIST/MESS on Ubuntu can be
avoided by adding "ulimit -s unlimited" to ~/.bashrc.
- Compiler work in progress (minor bug fixes and performance
0.0.0.289 (Nov 3 2009 11:45 am PST)
- The long form of DEFINE-METHOD-COMBINATION is now supported.
- XCL now includes the latest version (1.369) of asdf.lisp. (REQUIRE
"ASDF") works as expected.
- Added EXT:CURRENT-DIRECTORY and EXT:CHDIR. These functions report and
change, respectively, the operating system's idea of the current working
directory (which may or may not be in agreement with *DEFAULT-PATHNAME-DEFAULTS*).
The :cd top-level command changes both *DEFAULT-PATHNAME-DEFAULTS*
and the current working directory, and the :pwd top-level command
reports the details of the situation.
- EXT:RUN-PROGRAM has been dropped in favor of EXT:RUN-SHELL-COMMAND,
which is a minimal wrapper around system(3) that works on Windows as well
as Unix. EXT:RUN-SHELL-COMMAND changes the operating system's current
working directory to the directory specified by *DEFAULT-PROGRAM-DEFAULTS*
for the duration of the command.
- Added the top-level commands :sh, which invokes EXT:RUN-SHELL-COMMAND
on its arguments, and :ls (:dir on Windows), which is equivalent to ":sh
ls" (":sh dir" on Windows). You can do things like ":sh git status" or ":ls
-l `which xcl`" at the REPL prompt.
0.0.0.288 (Oct 28 2009 8:11 am PDT)
- Fixes for gcc 4.4.1 on x86-64.
- XCL can now run all the CLOS-related benchmarks in the autobench fork
of cl-bench. WALK-LIST/MESS is the only remaining unresolved issue.
0.0.0.287 (Oct 19 2009 10:53 am PDT)
- In (eval-when :compile-toplevel ...) situations, COMPILE-FILE is now
careful to dump the form being compiled before evaluating it (thanks to T.
Rittweiler for bringing this issue to my attention and providing a test
- Debugging output (which is mostly emitted by the compiler) is
controlled by the variable SYS:*MUMBLE*. Starting with this snapshot, the
initial value of SYS:*MUMBLE* is false, so by default the compiler is
considerably less chatty. (*COMPILE-VERBOSE* and *COMPILE-PRINT* are still
true by default, however; ~/.xclrc is your friend.)
- More shameless benchmark-driven optimization, again suggested by the
Spartns benchmarks. The fixnum
case of TRUNCATE, FLOOR, and CEILING is now handled in the XCL runtime
without calling out to gmp; this is about three times faster than the old
code. In addition, the compiler now inlines FLOOR for positive fixnum
arguments when the divisor is a small power of 2.
- TRUNCATE, FLOOR, CEILING, MOD, and REM no longer crash XCL when the
divisor is zero. In addition, division-by-zero conditions are now properly
initialized with the operation and arguments slots filled in.
0.0.0.286 (Oct 9 2009 9:45 am PDT)
- Changed the fasl format to store binary data more efficiently. Fasls
are now about 40% smaller, and fasl load time is reduced proportionately.
- Added compiler support for fixed-arity local functions with five or
fewer arguments (previously the limit was four). With this addition, XCL
can run the Spartns benchmarks
with fully compiled code, which should make its column in the table less of
- Added compiler support for MULTIPLE-VALUE-CALL.
- Killed a few bugs flushed out of hiding by the Alexandria test suite.
XCL now completes the Alexandria test suite without any failures.
0.0.0.285 (Oct 4 2009 7:33 am PDT)
- The source tree has been reorganized. The XCL executable is now called xcl (or xcl.exe) and is placed by the build process in the top-level source directory.
0.0.0.284 (Oct 1 2009 11:55 am PDT)
- XCL now loads the user initialization file ~/.xclrc on startup.
- *FEATURES* should now contain the keywords suggested by the trivial-features draft specification on all supported platforms.
- The compiler bug that prevented XCL from building SBCL 18.104.22.168 (and later versions) has been fixed.
- NetBSD support has been added (thanks to Aleksej Saushev for providing a patch).