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).