[slime] swank-loader could use ASDF (#65)

Helmut Eller eller.helmut at gmail.com
Mon Jan 6 22:43:36 UTC 2014


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



More information about the slime-devel mailing list