Re: [asdf-devel] P.S. re patch...

2012-12-13 Thread Zach Beane
Faré fah...@gmail.com writes:

 The patch was applied. I should probably use the same emacs setting to
 avoid tabs (what do you use?).

 Also, I bumped the version for good measure.

 I intend to release 2.27 next week. Can people test on their systems
 and their implementations?

 Xach, are things all clear with Quicklisp now?

There is an unusual issue with the periods library that I can't quite
puzzle out. It does not have any trouble with ASDF 2.26, but it fails to
load from FASL, under some circumstances, with the latest commit to
master. It seems like something in my build environment is triggering
it, but I can't reproduce it reliably enough to figure it out.

I'll keep you posted.

Zach

___
asdf-devel mailing list
asdf-devel@common-lisp.net
http://lists.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel

Re: [asdf-devel] P.S. re patch...

2012-12-13 Thread Faré
 I intend to release 2.27 next week. Can people test on their systems
 and their implementations?

 Xach, are things all clear with Quicklisp now?

 There is an unusual issue with the periods library that I can't quite
 puzzle out. It does not have any trouble with ASDF 2.26, but it fails to
 load from FASL, under some circumstances, with the latest commit to
 master. It seems like something in my build environment is triggering
 it, but I can't reproduce it reliably enough to figure it out.

 I'll keep you posted.

Do you logs of some of these failures? Maybe I can reproduce at home,
or, looking at the .asd and knowing what I changed, figure a scenario
that explains the failure.

___
asdf-devel mailing list
asdf-devel@common-lisp.net
http://lists.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel


Re: [asdf-devel] P.S. re patch...

2012-12-13 Thread Zach Beane
Faré fah...@gmail.com writes:

 I intend to release 2.27 next week. Can people test on their systems
 and their implementations?

 Xach, are things all clear with Quicklisp now?

 There is an unusual issue with the periods library that I can't quite
 puzzle out. It does not have any trouble with ASDF 2.26, but it fails to
 load from FASL, under some circumstances, with the latest commit to
 master. It seems like something in my build environment is triggering
 it, but I can't reproduce it reliably enough to figure it out.

 I'll keep you posted.

 Do you logs of some of these failures? Maybe I can reproduce at home,
 or, looking at the .asd and knowing what I changed, figure a scenario
 that explains the failure.

http://report.quicklisp.org/periods/2012-12-12/failtail.txt is the
typical failure log. The use of the SERIES package is conditionalized on
the :PERIODS-USE-SERIES feature, and I can't find any place where that
is in effect.

Zach

___
asdf-devel mailing list
asdf-devel@common-lisp.net
http://lists.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel

Re: [asdf-devel] P.S. re patch...

2012-12-13 Thread Faré
Also, I'd like to know if any package in Quicklisp relies on some ASDF
internals I'd like to rename. This is especially harder when users
define methods on a generic function — you can't rename the function,
then.
Is there an easy way to download EVERYTHING (excluding old versions)
so I may grep the results?

—♯ƒ • François-René ÐVB Rideau •ReflectionCybernethics• http://fare.tunes.org
Democracy is a pathetic belief in the collective wisdom of
individual ignorance.  — H.L. Mencken


On Thu, Dec 13, 2012 at 9:27 AM, Zach Beane x...@xach.com wrote:
 Faré fah...@gmail.com writes:

 I intend to release 2.27 next week. Can people test on their systems
 and their implementations?

 Xach, are things all clear with Quicklisp now?

 There is an unusual issue with the periods library that I can't quite
 puzzle out. It does not have any trouble with ASDF 2.26, but it fails to
 load from FASL, under some circumstances, with the latest commit to
 master. It seems like something in my build environment is triggering
 it, but I can't reproduce it reliably enough to figure it out.

 I'll keep you posted.

 Do you logs of some of these failures? Maybe I can reproduce at home,
 or, looking at the .asd and knowing what I changed, figure a scenario
 that explains the failure.

 http://report.quicklisp.org/periods/2012-12-12/failtail.txt is the
 typical failure log. The use of the SERIES package is conditionalized on
 the :PERIODS-USE-SERIES feature, and I can't find any place where that
 is in effect.

 Zach

___
asdf-devel mailing list
asdf-devel@common-lisp.net
http://lists.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel

Re: [asdf-devel] P.S. re patch...

2012-12-13 Thread Zach Beane
Faré fah...@gmail.com writes:

 Also, I'd like to know if any package in Quicklisp relies on some ASDF
 internals I'd like to rename. This is especially harder when users
 define methods on a generic function — you can't rename the function,
 then.
 Is there an easy way to download EVERYTHING (excluding old versions)
 so I may grep the results?

Sure. The easiest way is this:

  (map nil 'ql-dist:ensure-installed (ql-dist:provided-releases t))

Then all sources currently in Quicklisp will be present in
~/quicklisp/dists/quicklisp/software/.

Someone(tm) should write a search engine that can answer questions like
yours instantly via offline indexing of all public CL code!

Zach

___
asdf-devel mailing list
asdf-devel@common-lisp.net
http://lists.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel

[asdf-devel] prepare-op

2012-12-13 Thread Faré
I have finally fixed an essential dependency problem of ASDF by
introducing a new operation parent-load-op which I'm going to rename
prepare-op. This in turns opens the way for many many improvements
to the internals, which will make ASDF easier to explain and extend,
so expect some work there — and I'm postponing any 2.27 release until
that's stable. However, any and all changes introduces potential
backwards-incompatibility, and I'll be searching through packages
available in quicklisp for any potential such incompatibility before I
go ahead with renaming internals.

Some details:

In 2.26.14, I introduced an operation called parent-load-op, which
ensures the dependencies of the parent are loaded before the child is
compiled. This ensures the graph produced by following
component-depends-on isn't missing crucial dependencies instead of
relying on the specifics of the TRAVERSE algorithm (and at long last I
really understand what rpgoldman was telling me while we were writing
the ASDF 2 paper). I had to tweak traverse, because parent-load-op
trickles upward, not downward, the component hierarchy: you depend-on
the parent-load-op of your parents, but not on that of your children
(that would create a circular dependency). So I had to add a check in
TRAVERSE (now — 2.26.20 — in its nice and short visit-children helper)
to not automatically propagate subclasses of parent-op dependencies
downward. I started thinking about a theory of parent-op and child-op
dependencies and how to rewrite the current hierarchy, and as I was
doing it found that actually, parent-load-op is not parent-specific:
it's actually a dependency-op or prepare-op, that ensures that the
image is prepared to compile or load the component, by having already
loaded all the dependencies, and it could do it for the normal case,
too: instead of having load-op or compile-op depend on the load-op of
all the dependencies, they could simply depend on prepare-op. Then, we
don't need to have traverse know anything about propagating
dependencies either downward or upward, it can all be done with two
methods on component-depends-on! [which is one of the many misnomers
in ASDF: components don't depend on anything, it's (operation .
component) pairs, which I'm calling actions, like in Kent Pitman's
article), that are nodes in the dependency graph]. It was all quite a
revelation. And so I'll be working on drastically cutting down ASDF,
and making the basic dependency graph cleaner, which will make ASDF
much simpler and more reliable to extend.

Some change I'd like to make if no one uses these internals (or only
use them without relying on the current setup to define methods, in
which case I can define an alias]:

module == make it a subclass of both child-component and parent-component
system == is a parent but not a child, and thus not a module.
component-depends-on == rename it to action-depends-on
if-component-fails == I'd like to remove it altogether, it's a crock
that doesn't go well with the reified graph model. I suppose I could
preserve it the hard way, but would be ugly.
mark-operation-done == maybe rename to stamp-action ? Or at least
mark-action-done.
operation-description == action-description
component-visited-p == action-visited-p
component-depends-on == component-dependencies - likely not possible
for backwards compatibility.
component-load-dependencies == component-depends-on - same. Then
component-sibling-dependencies.
circular-dependencies-components == circular-dependencies-actions,
it's a list of (operation . component) pairs
hash-tables of symbol, component == hash-tables of operations and
component, systematically using make-sub-operation
make-sub-operation == find-operation, to work like find-component,
and ignore the first contextual argument if the second is already an
object. Canonicalizes named operations while still allowing explicitly
different operations of the same class.
module-components == component-children
module-components-by-name == component-children-by-name
load-fasl-op == load-system-fasl-op
load-op == split between load-op and load-fasl-op (see below).
Alternatively, for backwards compatibility, call the latter
load-compiled-op


My current temporary names would also be renamed:
parent-load-op == prepare-op (or dependency-op?)
visit-children == done away with -- replaced entirely by one
component-depends-on method.
parent-op == upward-operation
child-op == downward-operation

Chasing horizontal dependencies to siblings under the same parent
would be done entirely by prepare-op, which is a subclass of
upward-operation. load-op would remain a downward-operation, but would
have a separate strategy for deciding whether to delegate to
load-source-op, load-fasl-op or load-system-fasl-op or whatever (e.g.
some load-instrumented-op extension), based on a generalization of the
force / force-not mechanism that would decide the compilation
strategy. These ones would NOT be downward-operations, unlike the main
load-op which