4.4.1 Making the image smaller

You can specify that the image be made smaller in two complementary ways:

  1. By increasing the delivery level.
  2. This is the simplest way to make the image smaller. As you increase the delivery level, delivery employs different and increasingly severe strategies.

  3. By specifying what to remove and what to keep, using keyword arguments to deliver .
  4. This is a more complicated way to control image size, and should only be resorted to if there are problems or not enough savings can be achieved by simply increasing the delivery level. These keywords are documented in Keywords to the Delivery Function.

These two approaches are based upon the same mechanism: delivery levels are in fact nothing more than different combinations of keyword parameters. But when you specify a delivery level and at the same time pass keyword values, the values you pass override any settings forced by the delivery level.

As an example of how explicit directions to Delivery can be necessary for effective delivery, consider the general addition function, + . The internal representation of the function contains references to functions that carry out complex number arithmetic, since + has to use them if it is given complex arguments. If you know your application does not ever pass complex arguments to + , you should probably remove those functions from the delivered image.

Delivery cannot decide for itself that you do not pass + any complex arguments, and so does not delete the complex number functions. You can tell Delivery to do so explicitly, by passing :keep-complex-numbers nil to deliver . (See page :keep-complex-numbers for a discussion of this keyword.)

LispWorks Delivery User Guide - 12 Sep 2005