avodonosov / heroku-cl-example2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.