<div dir="ltr">Yes, SBCL has a deprecation process that goes through several stages which span several years. QUIT signals a style-warning, not warning, and is unlikely to ever signal a warning and will never go away.<div><br></div><div>If you're willing to fix all the affected systems just go through quicklisp, it'll have plenty. But maybe that should be done before introducing new warnings.</div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Oct 12, 2017 at 2:05 PM Faré <<a href="mailto:fahree@gmail.com">fahree@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Thu, Oct 12, 2017 at 6:00 AM, Stas Boukarev <<a href="mailto:stassats@gmail.com" target="_blank">stassats@gmail.com</a>> wrote:<br>
> I get 12 warnings with "System definition file  contains definition for<br>
> system . Please only define and secondary systems with a name starting with<br>
> in that file." while loading a single project.<br>
><br>
These are valid warnings, and those systems must be fixed. Can you<br>
give me a list of the affected systems, so I may send patches<br>
upstream?<br>
<br>
Background: Secondary systems (systems loaded in a .asd file beside<br>
the "primary" system that the .asd file is named after) that do not<br>
follow the / convention can't be found by name by ASDF before the .asd<br>
file is loaded; they can clash with other systems and then cause<br>
"interesting" behavior. They were an abuse that kind of worked but not<br>
really from the bad old ASDF 1 days. ASDF 3 fully supports secondary<br>
systems, but requires them to start with a prefix of foo/ where foo is<br>
the primary system name (that the .asd file is named after). The old<br>
behavior is still supported at this time, but we started issuing<br>
warnings this year, together with other deprecation warnings.<br>
<br>
> How do I disable these warnings? If we are to update ASDF in SBCL I want to<br>
> make the asdf.lisp version bundled with SBCL to have them disabled by<br>
> default.<br>
><br>
The best way to disable to warnings is to fix the 12 affected libraries.<br>
<br>
If you modify ASDF to remove that message, please change all<br>
occurrences of "3.3.0" to "3.3.0.0.1" in the sources, too, to indicate<br>
one local change.<br>
<br>
> And if some future version of ASDF stops loading any of the 12 libraries,<br>
> then I just won't update SBCL to that ASDF version.<br>
><br>
ASDF won't stop supporting that feature for at least the next 2 years.<br>
Those 12 libraries will have that much time to be fixed. If the last<br>
maintainers have quit, the libraries will have to be taken over by<br>
e.g. sharplispers some time before then.<br>
<br>
Experience shows that 2 years is about the time it takes for some<br>
change to "fully" propagate through the Common Lisp community (e.g.<br>
for a new version of ASDF to be used by all implementations). It is<br>
not an unreasonable target for backward compatibility of ASDF. I see<br>
no good reason to keep 15 or 26 year old bugs around indefinitely.<br>
<br>
SBCL does introduce new warnings at times, that sometimes affect tens<br>
of existing systems (e.g. the quit / exit renaming). I see no<br>
principled reason for SBCL to shy away from legitimate warnings from<br>
ASDF. How long did SBCL maintain backward compatibility with the old<br>
calling convention?<br>
<br>
PS: I wrote a function<br>
ql-test:find-misnamed-secondary-asdf-systems-in-quicklisp in my system<br>
ql-test <a href="https://gitlab.common-lisp.net/frideau/ql-test" rel="noreferrer" target="_blank">https://gitlab.common-lisp.net/frideau/ql-test</a> and it finds<br>
330 suspect defsystem entries in quicklisp. Some are templates that<br>
can be ignored (and probably filtered out of this function), but most<br>
are legitimate issues that must be fixed in the next two years.<br>
<br>
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• <a href="http://fare.tunes.org" rel="noreferrer" target="_blank">http://fare.tunes.org</a><br>
If debugging is the process of removing bugs,<br>
then programming must be the process of putting them in.<br>
        — Dijkstra<br>
</blockquote></div>