Wednesday, February 8, 2012

JSS 3

Armed Bear Common Lisp 1.0 shipped with a mechanism that packages pure Common Lisp extensions in an JVM artifact ("abcl-contrib-1.0.1.jar") which can be loaded by the CL:REQUIRE mechanism operating on the symbol named ABCL-CONTRIB.


Among the abcl-contrib packages shipped is an updated version of Alan Ruttenberg's Java Simple Syntax ("JSS") which can be loaded after the"abcl-contrib.jar" artifact has been CL:REQURIRE'd via the JSS symbol.


JSS 1 pioneered a SHARPSIGN-DOUBLE-QUOTE macro which dynamically introspected JVM method lookup via a very Lisp-y mechanism.  
 
    CL-USER> (#"getProperties" 'lang.System)
    #<java.util.Properties {java.runtime.name=Java(TM) SE R.... {1297ABD9}>

JSS 1 extended ASDF 1's ability to specify pathnames relative to a definition file to name JVM artifacts for dynamic loading in the JVM which ABCL finds itself hosted upon.  


For all its merits, JSS 1 needed two additional jars on the ABCL classpath, one for the jscheme implementation of Per Bothner et. al. ("jscheme.jar") to handle argument arity and one for the BeanShell interpreter to modify the JVM classpath dynamically ("bsh-2.04b.jar").  Figuring out how to modify the classpath of the JVM process was never an entirely simple task.


JSS 3 no longer has the dependencies on these artifacts, having rewritten the necessary primitives in Common Lisp.  As part of this re-engineering, we have packaged all the JSS functionality in its own package.  If you wish to ensure compatibility with existing JSS 1 code then invoke JSS:ENSURE-COMPATIBILITY to import the expected JSS symbols into CL-USER.