asdf.lisp is recompiled during startup
avodonosov opened this issue · comments
We recommend to prebuild all .fasl files of your application by asdf:loading it.
Disabling asdf output translations ensures that the .fasl files produced during the "compile" step are found by ASDF when the application is deployed.
This works, except for asdf.lisp itself, because it is loaded by different mechanism - by Quicklisp.
When your application load quicklisp/setup.lisp, Quicklisp loads asdf.lisp.
This happens both during "compile" and "run" steps. But quicklisp caches
asdf.fasl in a directory named by a hash computed form the lisp implementation name and the current machine type,
for example quicklisp/cache/asdf-fasls/00r6ue/asdf.fasl.
The problem is that machine type if often different when the application is deployed, therefore quicklisp computes new hash name for fasl cache directory, and cant find previously produced fals, therefore recompiles asdf.lisp again.
This slows down startup somewhat.
See ql-setup:asdf-fasl-pathname
in the quicklisp/setup.lisp for details how Quicklisp caches ASDF fasl.