ABCL's file compiler and loader sometimes involve the printer & reader (e.g., for the __loader__._ piece of the compiled file), which turns out to make the combination of the compiler & loader subject to package consistency rules around interned symbols. This file hits a couple types of READER-ERROR during LOAD when a symbol referenced in the compiled file has a different status at load-time. (I don't know exactly which parts of which forms ABCL externalizes & reloads this way; it's clearly not all.)
I don't think signaling the errors ABCL does is correct. Although I wish ANSI 3.2.4 were more straightforward, I think it implies that however the file compiler externalizes an interned symbol, provided there's a package with the same primary name at load time, the loader is supposed to find an existing symbol with the same name or else intern a new one.
So it seems to me that wherever the file compiler externalizes an interned symbol as text for the loader to parse, it should use a notation for which the loader's parser will not error during a subsequent load when a package of the appropriate name exists at load-time.
ABCL's file compiler and loader sometimes involve the printer & reader (e.g., for the
__loader__._piece of the compiled file), which turns out to make the combination of the compiler & loader subject to package consistency rules around interned symbols. This file hits a couple types of READER-ERROR during LOAD when a symbol referenced in the compiled file has a different status at load-time. (I don't know exactly which parts of which forms ABCL externalizes & reloads this way; it's clearly not all.)I don't think signaling the errors ABCL does is correct. Although I wish ANSI 3.2.4 were more straightforward, I think it implies that however the file compiler externalizes an interned symbol, provided there's a package with the same primary name at load time, the loader is supposed to find an existing symbol with the same name or else intern a new one.
So it seems to me that wherever the file compiler externalizes an interned symbol as text for the loader to parse, it should use a notation for which the loader's parser will not error during a subsequent load when a package of the appropriate name exists at load-time.