It is under development, still has a long way to go and its top-level API is still a moving target but what exists is well-documented and mostly covered by an extensive Stefil-based test suite. Other libraries currently in use are CL-FAD, external-program, Alexandria, CL-PPCRE, unix-options, Bordeaux-Threads and patron. Right now, only SBCL is supported though.
One interesting thing you can already do with evol is:
sh$ cat >> Evolution <<EOF
(default "my-lisp-program")
(devolution "my-lisp-program" ()
:type 'cl-exe :rule (list ':mlp)
:init-package :mlp
:toplevel (quote #'repl) :purify t)
EOF
sh$ evol
(sbcl --noinform --disable-debugger --eval (REQUIRE 'ASDF) --eval
(ASDF:OOS 'ASDF:LOAD-OP :MLP) --eval (IN-PACKAGE :MLP) --eval
(SB-EXT:SAVE-LISP-AND-DIE "my-lisp-program" :EXECUTABLE T :TOPLEVEL #'REPL
:PURIFY T))
(...)
[undoing binding stack and other enclosing state... done]
[saving current Lisp image into evol:
writing 3432 bytes from the read-only space at 0x01000000
writing 2256 bytes from the static space at 0x01100000
writing 32178176 bytes from the dynamic space at 0x09000000
done]
(chmod +x my-lisp-program)
-rwxr-xr-x. 1 foo users 32391196 2009-11-15 20:48 my-lisp-program
And basic stuff not requiring autoconf-like functionality does also work:
cat >> Evolution <<EOF
(defenv cc "cc")
(default "main")
(devolution "main" ("objects") :type 'program :rule "%cc %< -o %@"
:sourcefn #'(lambda (target modifier)
(declare (ignore target modifier))
(getenv "objects")))
(devolution "objects" () :type 'hive :of 'generic :spawn '("main.o" "program.o")
:rule "%cc ${CFLAGS} -c -o %@ %<"
:sourcefn #'(lambda (target modifier)
(declare (ignore modifier))
(pathname-change-suffix "c" target)))
(devolution "clean" () :type 'generic :rule "rm -f %objects %main")
EOF
sh$ evol -j 3
(cc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -c -o main.o main.c)
(cc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -c -o program.o program.c)
(cc main.o program.o -o main)
(chmod +x main)
sh$ evol clean
(rm -f main.o program.o main)
Appealing enough? :) The author, Alexander Kahl, hopes this could also pull in more people to the wonderful world of Lisp(s).