27.03.2014, 18:44, "Robert P. Goldman" rpgoldman@sift.info:
While I am very grateful to cl-test-grid, we need to be conscious of its limitations.
If anything, I personally do not insist on any changes to be done in ASDF. But if developers want to test whether the libraries built OK on my system previously remain OK after some change, I don't mind to test.
Robert asked to postpone the discussion, so I didn't speak. But Robert, how about we continue the discusstion, and you can ignore it? When you finish current tasks and are ready to consider this you can ask for summary and then decide, Maybe right solution will evolve by that time, so you won't need to spend your energy on analysis.
I think maybe some useful services are possible in regard to isolation from readtable and other global state modification. But not sure what exactly.
BTW, I haven't experienced problems like that, so it's not a critical feature for me.
If I am a library author I write code from assumption that standard CL syntax is used when the library is built. If my user changes readtable and breaks the library - it's his problem, he created this problem and he is able to fix it.
If my dependency breaks readtable for me, it is an inconvenient dependency, I will try to find a better one.
If my dependency breaks readtable for my user - that's unfortunate. The user need somehow to restore standard environment after loading me. (Or consider me a bad dependency and try to find another one). The user may somehow instruct ASDF: "when the application is built, use standard CL syntax and isolate the application from any readtable, etc, modifications done in REPL or by the app dependencies." Another possible request: "Isolate the application, and every app dependency from each other" - this allows the application to use dependencies otherwise interfering via readtable.
As a library author I would try to not alter global readtable from my library, but provide user with a function to enable my reader macros.
If ASDF wants to prevent the undesirable interferences, maybe it's enough/most important to develop and recommend an easy way to keep your readtable modifications scoped to your system? What would be the recommended way to do so? ASDF around-compile hooks?
In CL we don't want to totally isolate systems from each other's global modifications - each system creates some packages, defines functions used by other systems. So the systems interact via global modifications... Another question is when global modifications are done because there is no easy way to keep them local.
It's a complex area. I think it will help if we step back and formulate clearly what problem we are solving.
Best regards, - Anton