Wednesday, May 30, 2012

JFLI added to abcl-1.1.0

One basic tenet of current Armed Bear development is ANSI Common Lisp conformance first and foremost.  Sticking to a set of core principles often has unexpected benefits.  One such benefit by being as ANSI conformant as possible allows us to tool our implementation around the actual execution of the hoary descendents of programs such as Macsyma on the JVM as well as the contemporary multithreaded abstractions of Bordeaux-Threads.  

Despite the various lacunae, by and large the standard Common Lisp symbol dictionary defines a well thought out API.  Or at least it was a well argued API, being the attempted fusion of all existing Lisp dialects in the United States in commercial use by the government.  By using these well-defined semantics, Armed Bear development gains a solid platform for experimentation with better ways of "dealing with Java syntax".  The first experiment we incorporated was of course, Alan Ruttenberg's "Java Simple Syntax" (JSS).

JSS was always envisioned as the first of many such experimentations, and since adding extensions in the abcl-contrib section is now as easy as copying a ASDF tree,  and repackaging 'abcl-contrib.jar', we have experimentally snagged the most recent copy of Rich Hickey's pre-Clojure framework called JFLI.  The version of JFLI in abcl-1.1.0-dev is a pure Common Lisp version that does away with the need with either JNI or ASM runtime linkage.  We could, of course, directly use the JFLI code that links via JNI: perhaps should as a backup strategy.  The code in 'abcl/contrib/jfli' is a bit choppy right now, as tests indicate that we still need to patch a few things most recently in dealing with references to a single byte.

If you use JFLI with ABCL-CONTRIB drop us a line:  we aim to try to support all existing usages. 

But this should not be the last such experiment: the dot notation developed for jscheme is quite interesting, and of course we could return the favor to Rich by implementing a Clojure contrib so he could return to doing Lisp the right way…


  1. Hi.

    I did the last major maintentance on JFLI.

    I'm trying now to figure out how your copy of jfli.lisp compares with the Soureforge version

    Ideally there should only be one jfli.lisp in circulation! The way to go would be to modify the SF version so that JNI / LispWorks specifics lived in different files.

    Can someone email me ( so we can sort this out? Thanks,

    Nick Levine

  2. @nick

    Thanks for the interest in harmonizing the JFLI instances, this is indeed our goal as well.

    Looking at the discussion that occurred over the past couple weeks on the armedbear-devel@ mailing list can give a bit of context, including the [initial message from Alex][1], and the [announcement of the integration on ABCL trunk][2].


  3. I don't know if there are extra features in new versions of jfli, but I think the only thing jfli-abcl shares with JNI-based jfli is defpackage.

    Do we really need to restructure code just to have this defpackage shared?

    I think it would make more sense to call jfli a specification.