Thursday, May 27, 2010

ABCL 0.20.0 released, including first funded feature

On behalf of the developers of ABCL (Armed Bear Common Lisp) I'm glad to be able to announce the 0.20.0 release.

ABCL is a Common Lisp implementation implemented in Java and running on the JVM, featuring both an interpreter and a compiler. The compiler targets the JVM directly meaning that its output is runnable JVM bytecode. The fact that ABCL is written in Java allows for relatively easy embedding in larger applications. For integration with existing applications ABCL implements Java Specification Request (JSR) 223: Java scripting API.

This release is the first to include a funded feature: funds were provided to implement the CLOS METACLASS feature and tests. Next to that, this release contains a large number of fixes and improvements, such
as the ability to use JARs and URLs as pathnames and the a new ASDF version (ASDF2). You can find the full release notes at:

and the list of changes at:

Latest and older binary and source distributions can be downloaded from


  1. Any work being done on getting it running on Android, or does it already?

  2. The interpreter should run, but Dalvik is not a JVM for which details seem to be unpublished so the compiler won't work. If someone can point to documentation of Dalvik equivalent to Sun's _Java Virtual Machine_, this would give writing such a compiler a bit more to work on.

  3. The [Dalvik VM is indeed Open Source][1] in a manner that it wasn't when the first Android SDK was released. The VM is seemingly documented in the 'docs' directory. There is no comprehensive equivalent to the JVM specification, but there is more than enough to go on. Working on this would probably clean up a lot of interfaces between interpreter/compiler, and the compiler abstractions. But to answer the original question: there is no currently known effort to get ABCL working on Android. Porters welcome!


  4. Erik is currently re-working the classfile representation in [the generic-class-file branch][1]. The current format supported is contained in ['jvm-class-file'][2]. It would be good to have a 'dalvik-class-file' as a starting point to change the target of the compiler to the register based VM.