In many cases, the size of the image can be reduced if part of the user code or data is eliminated, for example, when this code/data is there for debugging purposes. The system, however, cannot tell which part of the code/data can be eliminated, so you have to do it yourself.
That can be done in either of two ways:
deliver
, by using fmakunbound
, makunbound
, remhash
etc. The adavantage of this approach is that it does not require you to know anything about delivery. The disadvantage of this is that it has to be explicitly put in the delivery script.. *my-hash-able*
contains entries that are not required in the delivered application, The you may write:(defun clear-my-hash-table()
(maphash #'(lambda (x y)
(unless (required-in-the-application-p x y)
(remhash x *my-hash-able*)))
*my-hash-able*))
(define-action "delivery actions" "Clear my hash table"
'clear-my-hash-table)
Using the action list has two advantages:
deliver
script, so it can be written near the rest of the code that is using *my-hash-able*
, which makes it easier to maintain the code. delivery-value
and (setf delivery-value)
.