On Nov 12, 2020, at 08:02, Robert Munyer 2433647181@munyer.com wrote:
Thank you for working on these!
I haven't been able to compile or test your changes, nor to write up the latest bug I found ("compile-file not doing minimal compilation inside defconstant/defparameter/defvar"), because I've been preparing for a not-quite-hurricane.
But I do have time to answer your question...
It's conceivably possible that _all_ of the manipulation of *PACKAGE* that happens during COMPILE-FILE could be removed, because the user is already required to have *PACKAGE* set correctly when invoking LOAD.
I don't think this is true: COMPILE-FILE should actually capture the current package when COMPILE-FILE is invoked, arranging to have this package present when LOAD occurs. [An example of this][1] works on SBCL/CCL but fails on ABCL even with all of your suggestions. Please correct me if you believe this isn't the case.
This was discussed and voted on as issue COMPILE-FILE-SYMBOL-HANDLING: http://www.lispworks.com/documentation/HyperSpec/Issues/iss063_w.htm
To see the outcome of that vote in the spec, see the subsection labeled "symbol:" in section 3.2.4.4: http://www.lispworks.com/documentation/HyperSpec/Body/03_bdd.htm
I haven't looked at your test cases, but some of them may be trying to do things that 3.2.4.4 says that programs are not allowed to do, and compiler implementors are not expected to support.
Thanks for the reference which I will study.
Good luck with the hurricane, and I’ll see ya on the other side.
yours, Mark