Right now linking to liblliby is hardcoded in to the compiler and the native function definitions are all included in the compiler itself. One approach would be:
The runtime would be split in to libllcore and libllstd. libllcore would contain the GC, bindings, World support, helper procedures for quasiquotation etc. libllstd would contain the R7RS runtime functions.
libllcore would be unconditionally linked by the compiler as liblliby currently is
A directive would be added to (llambda nfi) to require linking against arbitrary libraries. this would be used by the stdlib Scheme library to pull in libllstd.
The stdlib Scheme library would be moved out of the compiler proper and live near its C++ implementation. However this is accomplished should become a generalized pattern for Llambda libraries. The only thing special about libllstd would be its default inclusion in the library search path.
Right now linking to liblliby is hardcoded in to the compiler and the native function definitions are all included in the compiler itself. One approach would be: