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…