[armedbear-devel] packaging external libs with abcl

Mark Evenson evenson at panix.com
Sun Sep 20 08:12:48 UTC 2009


On 9/20/09 7:32 AM, Matthew D. Swank wrote:
[…]
> I could just make the precompiled lisp files available on the file
> system, and let asdf load them in my app entry point.  Also, if I
> needed the files to be packaged as jars, or if I didn't want the
> overhead of asdf searching the system dependencies, I could capture the
> load order that asdf generates when it compiles the systems and load
> them in proper order directly.

Loading ASDF packaged code from the filesystem

> Of course this all gets a bit messy if library code depends on the asdf
> systems being available at runtime.  Also, can all this happen fast
> enough to serve a request?

Why not package the library code in ASDF itself, using ASDF's dependency 
mechanism to pull in the necessary code?  For packaging JARs with Java 
code as ASDF entries, [Alan Ruttenberg's JSS extension][1] allows the 
specification of JAR files in ADSF under ABCL.  The [following 
snippet][asdf-jar] from private unreleased work of my own, wraps the 
IRIS WSML reasoner jars necessary to work with in ABCL with a thin Lisp 
bridge.

As for "can all this happen fast enough to server a request", assuming 
your application is for user response time for HTTP applications (i.e. 
on the order of 100ms), the answer is probably no if every request is 
going to be a "cold start."  But this is more a limitation that any 
JVM-based application faces which is commonly architected around by 
having workers "warmed up" to the point of serving a request waiting for 
incoming requests.  Practically all modern HTTP applications use some 
sort of warm-up.

[asdf-jar]:

(defsystem :wsml2reasoner-jars
   :version "0.6.4"  ;; last sync with SVN
   :depends-on (:abcld) :components
   ((:module wsml2reasoner
	    :pathname "lib/" :components
	    ((:jar-file "wsml2reasoner")))
    (:module iris-libs
	    :pathname "lib/ext/iris-reasoner/iris/" :components
	    ((:jar-file "iris-0.58")))
    (:module jgrapht-libs
	    :pathname "lib/ext/iris-reasoner/jgrapht/" :components
	    ((:jar-file "jgrapht-jdk1.5-0.7.1")))
    (:module wsmo-libs
	    :pathname "lib/ext/wsmo/" :components
	    ((:jar-file "WSML-grammar-20081202")
	     (:jar-file "wsmo-api-0.6.2")
	     (:jar-file "wsmo4j-0.6.2")))
    (:module log4j-libs
	 :pathname "lib/ext/log4j/" :components
	      ((:jar-file "log4j-1.2.14")))))

[1]: http://mumble.net:8080/svn/lsw/trunk/

-- 
"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