




Default value: 
(>= *delivery-level* 5)
Defines what to with symbol names. When it is 
nil
, or :packages-to-keep-symbol-names is 
:all
, all symbol names are kept. When it is 
t
, symbol names (except those which are kept by :keep-symbol-names, 
:keep-keyword-names 
or :packages-to-keep-symbol-names) are either changed to the same string Dummy Symbol Name (on UNIX), or shortened to a three characters unique code (on the PC).
Removing symbol names makes it very difficult to debug the application, and it is assumed that it is done after the application is essentially error free. However, some applications may make use of symbol names as strings, which may causes errors to appear only when the symbol names are removed. In some cases, the easiest solution is not to get rid of symbol names, but this has an effect on the size of the application. To aid debugging this situation, 
:symbol-names-action 
can have other values.
On the PC, 
:symbol-names-action
 can be 
:dump
, in which case it dumps a lookup table of the codes of the shortened names into a file with the same name as the delivered application but with type 
sym
. Note the gain in reduced size is still there, so the final release of the application may be done with 
:symbol-names-action :dump
, On UNIX, 
:dump
 is equivalent to 
t
.
 On UNIX, 
:symbol-names-action
 can be one of
 :spell-error
, 
:reverse
, 
:invert
 and 
:plist
. In the case of 
:spell-error
 (which is probably the most useful), the last alphabetic characters in the first 6 characters of the symbol name are rotated by one, that is, A becomes B, g becomes h, and Z becomes A. This leaves the symbol names quite readable, but any function that relies on symbol names fails. A more drastic effect is achieved by 
:reverse
, which reverses the symbol name. 
:invert 
just changes the case of every alphabetic character to the other case. This is more readable than 
:spell-error
, but if the application relies on symbol-names but does not care about case, the errors do not appear. 
:plist
 causes the symbol names to be set to the dummy name, but the old string is being put on the 
plist
 of the symbol 
(get symbol `sys::real-symbol-name)
. The simple backtracer uses the property when it exists to get the symbol name. 
Note that in the UNIX case, all the debugging keywords mean that there is no reduction in size, so the final release of the product should be done with 
:symbol-names-action t
 to reduce the size of the application. 
If the debugging shows that some symbols must retain their symbol name for the application to work,this must be flagged to 
deliver
 by either :keep-symbol-names or :packages-to-keep-symbol-names.