On Mon, Jan 06 2014, João Távora wrote:
I'm only worried about slow startup time. E.g. (require :asdf) takes about 3 seconds in CCL. if you have ever used ABCL you know that slow startups are no fun.
My ultimate use case for this feature is this one in particular.
emacs -Q (require 'package) ;;; unnecessary since emacs 24.1 M-x install-package slime-foo RET
[...]
My use case is more like:
git clone .../slime.git make install
According to Francois, startup times are seem OK. M-x slime on sbcl takes well more than two seconds for me. But
One could see more numbers across more versions:
It's true that for a first time M-x slime on a new lisp implementation, compiling asdf.lisp into a fasl is going to take some time. In those cases I think M-x should show "Compiling ASDF, this only happens once".
I'm not worried about the one time cost of compiling lisp files. I'm talking about the cost of loading additional fasl files every time.
The advantage for swank-loader seems marginal to me.
I think with well crafted ASDF systems (and who better than François) this file could well dissapear.
So you say that's a clear advantage? Well, I still clear out ASDF's fasl cache regularly because I don't trust ASDF. And I rather debug the code in swank-loader.lisp than in asdf.lisp.
A slightly different idea: assume we have a Makefile and a required "make install" step. During that install step we assume that quicklisp exists or simply download it. If we have quicklisp we have everything we could wish for.
I don't understand, Quicklisp takes at least as long to load as ASDF, since it bundles it. I must be missing something. Also, in the ELPA use-case, the user never "make"s anything. We could package quicklisp, but I think that's going well beyond the scope of slime.
I would say ELPA packages must be installed and the user "makes" .elc files.
Assume we know how to load quicklisp. Let's say the user needs to create a config file, ~/.slime/config, that looks like so:
(:load-quicklisp-form (cl-user:load-quicklisp) :load-asdf-form (require :asdf) :slime-contribs (slime-repl slime-foo))
With that we know how to load quicklisp, but that doesn't mean we load it all the time. We would read the config file every time, but load quicklisp, and possibly ASDF, only when we need to install/compile our stuff.
Helmut