From: James M. L. <llm...@gm...> - 2015-03-13 05:10:35
|
On Thu, Mar 12, 2015 at 2:45 PM, David Lichteblau <da...@li...> wrote: > One could redefine QUIT to mean EXIT -- except with slightly different > argument names. It would be an incompatible change, but if I may take a > wild guess, I would not be suprised if this change could actually repair > more programs which misunderstood the semantics (or even predate > sb-thread) than it would break programs that took advantage of it. I suspect a non-trivial amount of broken (or at least suboptimal) code was written when a programmer called QUIT from a non-main thread, discovered that the SBCL process didn't quit, and then dangerously "fixed" this by adding :recklessly-p t. In this case (quit :recklessly-p t) should probably be replaced with (exit). Since (quit :recklessly-p t) could translate to either (exit) or (exit :abort t), it seems worthwhile bringing attention to this via warnings/errors. If QUIT is going to mean EXIT, then making the two identical -- arguments and all -- would trigger the desired warnings/errors. I would guess that there is very little code out there that depends upon the ABORT-THREAD behavior of QUIT for non-main threads. The question is whether SBCL should silently break that code in exchange for the benefits of keeping QUIT. A tangential reason to keep QUIT is peer pressure: all the Lisp implementations in popular use have QUIT except Allegro. |