[asdf-devel] Make the CL syntax predictable

Faré fahree at gmail.com
Fri Mar 14 19:47:02 UTC 2014

On Fri, Mar 14, 2014 at 12:24 PM, Anton Vodonosov <avodonosov at yandex.ru> wrote:
> 14.03.2014, 20:20, "Anton Vodonosov" <avodonosov at yandex.ru>:
>> As systems depend on each other, a failing system breaks other systems.
>> To get sense of the situation the following report may help:
>> http://common-lisp.net/project/cl-test-grid/asdf/asdf-load-failures-
>> It includes only systems which fail with the syntax pach, while load OK without the patch.
>> The default sorting places more "important to fix" systems at top.
>> The term "root-blocker" means a system failing by itself, i.e. none of its dependencies fail.
>> For example atdoc has 1 root-blocker - clozure-common. If we fix clozure-common, atdoc will
>> hopefully work (unless atdoc it has its own problem, which will be revealed in this case).
>> The systems which have count of root-blockers = 0 fail by themselves.
>> You may change sorting by clicking columns (holding Shift to sort by multiple columns).
>> Let me know if you have questions about this report.
> Also "systems-blocked-exclusively" are systems which have no other failing dependencies
> except for the current system.
> For example, ironclad has 120 systems blocked exclusively. This means if we fix ironclad
> the 120 systems may be fixed (Unless they have their own problems, which will be revealed
> in this case; but all the dependencies for these systems will be fixed).

Thanks a lot for your testing, Anton.

This suggests that we can't transition to a cleaner syntax by "just"
fixing one or two systems. We need to provide some migration path
and/or some configuration magic so that old systems known to fail keep
using dirty syntax, but new systems use a clean syntax.

Completing the migration is clearly beyond the 3.1.1 release. Maybe
providing the cleaner alternative could be done before, but even that
is doubtful. An out-of-band system configuration scheme needs much
thought, and no one seems to have ideas how to do it.

Another useful test would be to determine how many of these failures
happen when just the asd has a forced clean syntax. Probably a few

Another solution might be one readtable per system and/or per set of
systems using the same .asd file, i.e. defsystem remembers the
readtable it was defined in, and load-asd binds the *readtable* and
*print-pprint-syntax* to a new table. On the one hand, this might
entrench bad syntax hygiene and make the loading of files noticeably
different when done from ASDF than when done from the REPL — unless
you use slime-asdf in a way that ensures files are compiled using
ASDF. On the other hand, we're already heading that way with all the
around compile hooks and manual around methods, etc.

Why this matters:

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Malthus was right. It's hard to see how the solar system could support much
more than 10^28 people or the universe more than 10^50.  — John McCarthy

More information about the asdf-devel mailing list