On Tue, Jul 1, 2014 at 12:54 PM, Robert P. Goldman rpgoldman@sift.info wrote:
When following up discussion about bug 1335323, I stumbled across the following paragraph in the manual:
When system definitions are loaded from @file{.asd} files, a new scratch package is created for them to load into, so that different systems do not overwrite each others operations. The user may also wish to (and is recommended to) include @code{defpackage} and @code{in-package} forms in his system definition files, however, so that they can be loaded manually if need be.
I believe that this is no longer accurate. Fare, you changed to loading everything into ASDF-USER, didn't you?
Indeed, I changed that behavior in 2.27 to always load in ASDF-USER. The previous package trick wasn't actually helping, only making things more complex. For the sake of hygiene, you might still want to use defpackage and in-package if you're going to define new classes, methods, variables that you want to protect from clash.
Also, LOCATE-SYSTEM isn't documented at all. I see that it's exposed by interface.lisp, but I'm not sure why it is. If exposed, I'd like to document it, but it looks like an outsider should always use FIND-SYSTEM.
Outsiders should always use FIND-SYSTEM. People writing s-d-s-f extensions (including Quicklisp) might conceivably use LOCATE-SYSTEM or have to understand how it works.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Pyramid schemes are illegal. Social Security is a pyramid scheme.