                           Building SharedBLib
                           

In theory, BLib is just the concatenation of its component libraries.
However, to make it smaller and faster in use, it is compressed. This
creates problems: the callable procedures and global variables must not be
compressed. The compressor used, ccrunch (BasCrunch), allows a list of names
that should not be compressed to be specified. This is stored in !Names. The
only remaining problem is how to manufacture the list.

At the moment the list is made by hand. This is error-prone, but provided
the library does not alter frequently, not too cumbersome. It might well be
possible to do better: the names which should not be compressed are those
procedures and functions whose name does not begin with _, plus all those
variables which are not LOCAL. Determining which these are is a little
harder, but perhaps just this part of the list could be put together
manually.

The !Make script actually makes the library. BASIC files cannot simply be
concatenated, so BCat is used to concatenate them. The resultant file is then
compressed by ccrunch. The !Header file is added on to give a clue as to the
file's contents to anyone who looks at it, and to stop it being run as a
BASIC program.

BasCrunch and BCat can be found in the Utils directory.
