Cleanup Issue COMPILER-WARNING-STREAM

Status
passed, June 87
Category
CLARIFICATION/CHANGE
References
COMPILE (p438), COMPILE-FILE (p439)

Problem Description

The description of the COMPILE and COMPILE-FILE functions does not explicitly permit them to print warnings. If this is to be allowed, it should be an explicitly expressed part of the contract.

Proposal (ERROR-OUTPUT)

COMPILE and COMPILE-FILE are permitted to output warnings; warnings should go to the stream that is the value of *ERROR-OUTPUT*.

Rationale

Compiler warning output is a widely accepted extension to the compilation. Warnings that come via the WARN function will go to the stream that is the value of *ERROR-OUTPUT*.

Current Practice

Some implementations send compiler warning output to *ERROR-OUTPUT*. Other implementations send it to *STANDARD-OUTPUT*.

Adoption Cost

In most cases, the change to the compiler to redirect output is expected to be very slight.

Benefits

Currently, it is difficult to redirect the output of COMPILE and COMPILE-FILE because it isn't clear where it's directed.

Conversion Cost

Most user programs that care are probably already tolerant of both situations or naively expect that output will go to *ERROR-OUTPUT*. As such, most users will probably perceive this as a clarification.

Aesthetics

Most users will probably perceive this change as a simplification because it will allow the kind of warning that comes from WARN and the kind of warning that comes from compilation to be conceptually grouped.

Discussion

This was a problem in adapting MACSYMA to Common Lisp because Macsyma provides alternate user interfaces to the compiler which it needs to be able to control.

The committee considered extending the proposal to describe the interaction with DRIBBLE on the warning output, but found that DRIBBLE was so underspecified as to make the task impossible. DRIBBLE should be considered in a separate proposal.

The cleanup committee supports this change as stated.

Edit History