stassats remarks that my if-component-dep-fails compatibility code might be enough to compile sb-rotate-byte, but nibbles not so.
Indeed, it so appears that the semantics of the (feature ...) pseudo-operation (note: note a pseudo-component) is that a component depends on not just on its local feature, but on all the recursive features of all the components and subcomponents it depends-on. This means that you really can't untangle that from the entire traverse protocol. Moreover, since the visit protocol does not cache dependency on a missing feature, the previous implementation had cost O(n^2) on the size of a module, instead of O(n).
I really don't want to tuck that horror back into the traversal algorithm. I implemented the "compatibility mode" with an eye on all people with old versions of SBCL, who may have a hard time upgrading it. On the other hand, I believe that people who upgrade asdf can easily upgrade nibbles, too.
Nathan, can you use #+sbcl and similar other conditionals in your nibbles.asd instead of :if-component-dep-fails? That would really help with compatibility, without requiring ASDF to support something I really want out of the implementation.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Vision is the art of seeing what is invisible to others. — Jonathan Swift