[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Re: issue COMPILER-DIAGNOSTICS, version 7

> The problem with DRIBBLE is that its definition is tied to *STANDARD-OUTPUT*
> rather than to *TERMINAL-IO*, which would make more sense.

Zetalisp had both a DRIBBLE-START function which bound STANDARD-OUTPUT
and a DRIBBLE-ALL function which bound TERMINAL-IO.  We still support
DRIBBLE-ALL as an extension to Common Lisp.  Sometimes you really want
to record everything and sometimes you don't want interactive debugging
to be included, so both options are really needed.

I can understand wanting to be able to separate error messages from the
normal output of a program, but in the case of the compiler, the error
and status messages are the only text output it produces, so there is
nothing to separate them from.

>   Seriously, it is a very bad idea to start saying that such-and-such a set of
> messages should go to *TRACE-OUTPUT* because it is sort of useful in the same
> way as actual TRACE output.  If we don't watch out, we'll be sending all kinds
> of messages to all kinds of streams and the CL user won't know what's coming
> or going.  Let's nip this one in the bud.

There is a broader question here though, that I have run into when
writing various utility programs.  When I want to display messages
telling what's happening now during a long process, it is not clear from
CLtL where they should be written.  Certainly writing to *TERMINAL-IO*
works, but there is an implication that that isn't quite proper since
there would be no way to redirect it.  Where then?  *ERROR-OUTPUT*,
*QUERY-IO*, *DEBUG-IO*, might all seem plausible, but these are status
messages, which are not errors, not queries, and don't have anything to
do with debugging.  So that leaves *TRACE-OUTPUT*, which seems most
likely since TRACE messages seems to be the only example of
what's-happening-now messages specified by CLtL.  So I think it would
actually make things _less_ confusing for users if we were to clarify that
*TRACE-OUTPUT* is the place for status messages.