[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Exes and Re: MCL size/distribution

 From the standpoint of a developer of a large software system for
use under a variety of common lisps on various hardware platforms:

The tree-shaker approach falls a little short for programs that
compute a function to be APPLY'ed or FUNCALL'ed unless you supply
a mechanism for a training run or can specify a list of functions
to include.

As far as reducing the amount of CL that must be present
in an executable image, I personally favor the approach taken in
DEC's VAX-Lisp 2.2 (modified to be less favorable in later releases.)
There you select a set of relatively orthogonal extensions beyond
basic functionality and can eliminate those desired, such as the
compiler, debugger, editor interface, read-eval-print loop, window
system graphics, and etc. [a certain subset is mandatorily excluded
for execute-only systems that you can distribute without a license,
and the amount that must be excluded was increased in subsequent
releases, which is less favorable to developers.] If this could be
extended further to enable me to exclude certain CL functions that
I never call (as long as they aren't called in functions that I
retain) I would be able to reduce the size of an executable further.

Can the building of an executable image be made more intelligent?
So that functions that call each other get on the same set of
pages to reduce paging/swapping? Can the garbage collector place
lists more contiguously in memory for the same purpose?

I am very impressed with MACL in general, since it executes very
favorably and in a very modest amount of space compared with
other CL implementations on other machines, though it does not
carry out much of the open-coding that is characteristic of
other lisps on other hardware.

Leo Harten
Paradigm Associates, Inc.
29 Putnam Avenue, Suite 6
Cambridge, MA 02139/USA