[armedbear-devel] Mixing Java/Lisp abstraction barrier in ABCL implementation

Mark Evenson evenson at panix.com
Sat Apr 16 05:42:06 UTC 2011

Alessio has nicely [committed an simple implementation of 
RUN-PROGRAM][1] to help out Faré's request for XCVB.

[1]: http://trac.common-lisp.net/armedbear/changeset/13270

As I think most of would rather do things in Lisp than Java were 
possible, his implementation uses the JAVA package FFI primtives (JCALL, 
JMETHOD, etc) to manipulate the underlying JVM ProcessBuilder 
abstraction.  When I was mucking around with the PATHNAME work, Ville 
objected to code that I had written in a similar manner, and I re-wrote 
my patch in Java.  As I understand it his objection stememd from the 
architectural principle that the core ABCL Lisp is to be written without 
direct calls to Java classes to maintain the Java/Lisp abstraction 
barrier.   So, theoretically, if all the ABCL primitives written in Java 
were running on a different JVM (say Dalvik or the CLR), the rest of 
ABCL would run as well, modulo the compiler.

But since getting features like RUN-PROGRAM implemented quickly helps 
everyone out, maybe we should relax this somehow?  Maybe placing such 
code in a different directory ("org/armedbear/lisp/jvm"?)  Or use the CL 
package system to have a SYSTEM-JVM from which SYSTEM can inherit symbols?

Does this architectural principle still make sense?

"A screaming comes across the sky.  It has happened before, but there
is nothing to compare to it now."

More information about the armedbear-devel mailing list