On 11 Mar 2015, at 21:25, Svante v. Erichsen <Svante.v.Erichsen@web.de> wrote:

This begs the question: how do I get a speed optimized library then?  Do I need
to make a local fork just to insert declarations?  Is there a way to tell

This is not up to the library writer to decde on this.  This is up to the library final user.

Declarations are global.  When you are developping/debugging, you will set them to
(optimize (speed 0) (space 0) (debug 3) (safety 3)).

When generating the end-user executable, you will set them to
(optimize (speed 3) (space 3) (debug 0) (safety 3)), 
if you follow Bertrand Meyer's advice.


e. g. ASDF to use certain declamations?  Is making the declarations in the
library dependent on documented entries to *features* the way to go?  Where
would I push the desired settings into *features*?

Even if you set them in ASDF, you will have to have a way to tell it when you are debugging code (always), and when you are generating a end-user application (once in a blue moon, and in a different, explicitely controlled process).

And yes, since asdf doesn't cache the compiled files in separate directories for the various optimization settings (or the various *features* list), since that would be very unwiedly, you have to clear the cache when you switch between generating the end-user application, and normal developping work.  rm -rf ~/.cache/common-lisp/ is found in all application generation makefiles.

Optimize declaimations and declarations in libraries is the curse of the CL application developper.

-- 
__Pascal J. Bourguignon__