FAQ: ABCL - Common Lisp on the JVM

Index

  1. General
    1. What is ABCL?
    2. What license is used for ABCL?
    3. How/Where should I report bugs?
    4. Is ABCL faster or slower than implementation XYZ?
    5. What is the quality of the implementation? How can you tell?
    6. Where is ABCL's source code repository?
    7. Where is ABCL's documentation?

General

What is ABCL?

ABCL is an implementation of the full Common Lisp specification, with the exception of the implementation of the long form of DEFINE-METHOD-COMBINATION.

Unfortunately, the CLOS implementation is not accessible through a MOP (MetaObject Protocol). Any contributions in this area would be greatly appreciated, ofcourse.

One thing which is considered almost standard lisp - because all implementations deliver it - is "Gray streams". Unfortunately ABCLs version is broken [as per 05/2009]. It should be noted this is by no means the final state of affairs, though, merely a warning that one can't depend on this feature at the moment.

What license is used for ABCL?

ABCL is distributed under the GNU General Public License with Classpath exception. This is the same license as used for JAVA SE and GNU Classpath.

Basically this means you can use ABCL from your application without the need to make your own application open source.

In general, such usage means that whenever you keep ABCL as a separate jar file, you won't have licensing problems. The combining in the Classpath exception means that you can

  1. Extend ABCL java classes in your program
  2. Use ABCL java classes in your program
  3. Invoke ABCL lisp functions in your program
without having to worry about the licensing. You do have to distribute the source code of ABCL (including modifications) if you distribute ABCL, but otherwise the license of ABCL is not viral.

How/Where should I report bugs?

There is a list of currently known problems (bugs) in our bug tracker. Unfortunately, due to spamming problems, administration of bugs has been closed for anybody but common-lisp.net members.

If you found a bug which is not on the list, or you want to stress the importance of one that is, please mail our mailing list about it.

Is ABCL faster or slower than implementation XYZ?

General comparisons are hard to make, the relative speeds depend on a lot of factors. For example timing outcomes of specific bits of Java may have different timings depending on the settings of the HotSpot JIT compiler (if the tests are run on Sun).

Some statements can be made in general though. Due to the fact that ABCL has been implemented in Java, it inherits some of the aspects of Java itself as well as the fact that it can't directly manipulate CPU content. Implementations such as SBCL and Closure CL can do that and take that to their advantage: for example in SBCL a boxed fixnum is a direct register value, while in ABCL it's encapsulated in an object.

On the other hand, ABCL - like SBCL - supports unboxed fixnums. ABCL's fixnums support the full 32 bit range of integer values, while SBCL due to its boxing strategy can only use 29 bit integers (on 32bit platforms).

Given ABCL's age - a young project by Lisp standards - there is also plenty of room for improvement in the area of execution speed and optimization. The project welcomes initiatives to improve performance.

What is the quality of the implementation? How can you tell?

The project recognises there are several dimensions to quality:

  1. The level of compliance to the standard
  2. The level of 'useability': whether (or not) the application is able to run existing Lisp code

The plan is to add to the list above software from Edi Weitz, who wrote some great libraries.

The first item is being measured by running the ANSI test suite compliance tests. The second item is measured by compiling and running the test suite in the Maxima application. Additionally, compilation of AP5 is used to improve this measure too.

ABCL 0.23.0 fails 31 out of 21702 tests in the ANSI test suite in interpreted and compiled modes, a constant number over the past releases. Most failures relate to pretty printing.

As a measure of 'improvement achieved', the development team refers to the number of failing tests in the Maxima test suite too. ABCL 0.23.0 is able to run the test suite without failures, coming from 'only' ca 75 failing tests at the time of 0.15.0, and even 1400 failures around October 2008.

Where is ABCL's source code repository?

If you want to build the latest (unstable) ABCL code, you can check out through svn://common-lisp.net/project/armedbear/svn/trunk/abcl.

Where is ABCL's documentation?

Documentation on ABCL can be found in several places, depending on the kind of documentation you're looking for.

  1. Our wiki
  2. The source code (JavaDoc and general comments)
  3. Specific examples

Back to Common-lisp.net.

$Id: faq.shtml 13004 2010-11-04 23:08:35Z ehuelsmann $