Comment 9 for bug 1084644

Revision history for this message
Anton Vodonosov (avodonosov) wrote :

Ah, right, we can't insist everyone use quicklisp.

Then different model:
1. Lisp implementation doesn't force me to use ASDF bundled with it.
    Unless I explicitly say (require :asdf), the ASFD bundled with lisp
    implementation is never loaded.

2. Quicklisp has an option to not perform (require 'asdf),
    but immediately load the ASDF provided with quicklisp.
    Maybe this should be the default behaviour rather than an option.

In this model I am free to use whatever ASDF I want. Workflow of
people like Rober is not affected. I can use the ASDF bundled with quicklisp.

A practical obstacle to (1) I am aware of is descirbe here:
https://github.com/quicklisp/quicklisp-client/issues/68#issuecomment-10847593
Lisp implementation (ECL) uses ASDF in it's internals - the sockets
module is an ASDF system. So, the lisp implementation depends
on particular version of ASDF and can't work if I load my version of ASDF.

If I understand correctly, solving this somehow (maybe using tradition
that lisp implementations do not use ASDF internally), will make it
possible for users to work single ASDF version.

----------------------------
I realize it's becoming a bit offtopic for this ticket, but even considering
that making ASDF upgradable is solved already, I am interested to consider
a solution to have single ASDF version.

The whole mechanizm that ASFD is upgradable, and Quicklisp first tests
if ASDF is loaded already, if not then tries (require 'asfd) to load the ASDF version
of the current lisp implementation, if it fails or the loaded ASDF version is too old,
then upgrades it loading it's own ASDF; the whole this mechanizm is
somewhat complex. I don't know a single place where all this is documented,
and it took some time and internet/source code to learn this and be able
to determine, what version of ASDF was used by my program.