[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Re: issue COMPILER-DIAGNOSTICS, version 7
- To: "Steve Bacher (Batchman)" <SEB1525@draper.com>
- Subject: RE: Re: issue COMPILER-DIAGNOSTICS, version 7
- From: David N Gray <Gray@DSG.csc.ti.com>
- Date: Wed, 21 Dec 88 12:03:57 CST
- Cc: cl-compiler@SAIL.STANFORD.EDU
- In-reply-to: Msg of Wed, 21 Dec 88 07:31 EST from "Steve Bacher (Batchman)" <SEB1525@draper.com>
- Sender: GRAY@Kelvin.csc.ti.com
> 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.