Hello,
I just felt like it was about time for an update as to what's been going
on with XCVB. If you haven't done so yet, I recommend that you read our
design document, which explains the basic goal of XCVB. The document
can be found at http://common-lisp.net/project/xcvb/docs/xcvb.text.
Tomorrow will mark the end of the 8th week of XCVB's development -
following is a list of the features that have currently been
implemented, as well as what's next on the agenda for development.
XCVB currently:
-Can build dependency graph based on xcvb:module forms put at the top of
all lisp source files
-Can distinguish between compile-time and load-time dependencies
-Can output a Makefile that can be used to build the XCVB system
-Has limited compatibility with ASDF by
a) being able to declare dependencies on ASDF systems
b) being able to generate an asd file that can be used to compile the
XCVB system with ASDF.
-Has a system in place for users to be able to define extensions to XCVB
that will allow new functions to be put into the xcvb:module forms at
the top of a lisp source file, and when that file's module is being
parsed to be put into the dependency graph, the new user-defined
function will be executed.
Up next:
-Support for depending on the compile-time effects of a file.
"A portable implementation of such a dependency might indeed
require re-compiling the dependencies each time. A faster non-portable
implementation will instead depend on the underlying Lisp's COMPILE-FILE
to dump a CFASL for the compile-time side-effects of the file as well as
FASL for the load-time side-effects. There exists a patch to SBCL that
provides such a feature, as written by Juho Snellman at the prompt of
James Knight:
http://repo.or.cz/w/sbcl/jsnell.git?a=treediff;h=refs/heads/cfasl;hp=refs/h…
"
(taken from the XCVB design document)
-The ability to directly load an XCVB system into the current lisp
image. This will be difficult since we want to maintain deterministic,
separate compilation. We will need to have separate threads to compile
each file, that will have all of that file's compile time dependencies
(and those file's load time dependencies) loaded and nothing else.
-Spencer
Spencer Brody
Software Intern
ITA Software