Reorganize the Scheme loader to simplify it so that I can understand
what it's doing. In the process, the LOAD-NOISILY and LOAD-NEWEST
_features_ have been eliminated, although the procedures remain as
aliases for LOAD.
New procedures FILE-LOADABLE? and FILE-FASLOADABLE? test whether a
particular file is one that LOAD or FASLOAD (respectively) knows how
to handle. New procedures SYSTEM-URI, SYSTEM-LIBRARY-URI, and
WITH-LOADER-BASE-URI provide a standard mechanism to refer to files in
the system library directory.
Eliminate DECLARE-SHARED-LIBRARY; register every .so file that's
loaded, and reload it on disk-restore.
Change the dynamic-loader interface to support unloading object files.
Make sure that all loaded object files are unloaded on DISK-RESTORE.
Implement low-level interface to the dynamic loader in
"runtime/io.scm" and use that in "runtime/load.scm". Implement new
primitive LIARC-COMPILED-BLOCKS, to simplify examination of the
compiled_blocks table.
Change registration of .so files to use URIs rather than ad-hoc
abbreviations. Standard URIs refer to parts of the system, and are
independent of the file-system details; file URIs refer to .so files
stored in particular locations.
Add an 8-byte random nonce to each .c file generated by liarc, so that
the loader can tell if it's the same file as a previously loaded one.
Write new program gen-nonce for use by c-bundle.sh.
Move makefile creation from Setup.sh to configure, so that it can
depend on the architecture.
Rewrite parts of "Makefile.in" and "etc/compile.scm" to support
compiling a native-code system using liarc. Change
"etc/utilities.scm" to support liarc when it is installed as well as
when it is being built.
Write new program extract-liarc-decls for c-bundle.sh to use, in place
of of grep. This program rewrites each declaration to specialize it
for bundling.
48 files changed: