On Fri, Jun 6, 2014 at 5:04 PM, Robert P. Goldman rpgoldman@sift.info wrote:
My large system is broken, but I have not been able to diagnose the problem. It is turning up *way* downstream. I get a type error where a class is not getting the right METACLASS.
Is it possible to look at that system? With an NDA?
I suspect it has to do with the fact that we have an ASDF extension that binds *READTABLE* in a PERFORM :AROUND method, but I have not been able to determine whether this is, in fact, the problem.
This kind of method should actually work cleanly.
I can't imagine how anyone would guess that this error is a readtable fail, much less that it was caused by a modification to ASDF. This problem will be even worse if the modification to ASDF is quietly given to the poor programmer through an update to his or her CL implementation.
I pretty much *know* this is a readtable fail and I'm not having an easy time figuring out what went wrong.
This is why I'm not enthusiastic about the syntax-control branch. It's fail-obscure, and we can't count on programmers inferring that their code has suddenly gone pear-shaped because of a modification to ASDF, especially if it wasn't a modification to ASDF that they installed themselves.
I understand that this is important and requires investigation.
Let's say one day I get a new SBCL or ACL, and all of a sudden I get an error like this. I'm not an ASDF hacker. I don't even know that the new CL version has updated the bundled ASDF. How would I begin to figure out what went wrong?
Until I have an answer to that question, I cannot merge the syntax-control code.
On the other hand, we have made many changes that were backward-incompatible in corner cases (e.g. the way component pathnames are handled, introducing output-translations, making utf-8 the default, removing the crazy :if-component-dep-fails, etc.) for the sake of sensible semantics and more robust behavior. Some of these changes were otherwise silent indeed, and we fixed them by a combination of proactively looking for misbehaving code, making announcements, and documenting the new behavior.
Being able to support most code that change the readtable is worth it.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Please leave the State in the toilets where you found it.