3 ms·
Does it say somewhere why in Rust one is buffered and the other is not?
by weinzierl 3y ago
Does it say somewhere why in Rust one is buffered and the other is not?
- loeg 3y agoBoth (line-buffered stdout, raw stderr) date to the initial implementation 10 years ago: https://github.com/rust-lang/rust/commit/94d71f8836b3bfac3370e4d324ca1987d843552f https://github.com/rust-lang/rust/commit/94d71f8836b3bfac337... . The commit message mentions that stderr is no longer buffered (probably as a result of the RFC 899 discussion, which I cannot seem to locate).
- weinzierl 3y agoThanks for digging this up! It is good and interesting info, but unfortunately still doesn't satisfactorily answer why they are treated differently.
- loeg 3y agoI did some more digging. By RFC 899, I believe Alex Crichton meant PR 899 in this repo: https://github.com/rust-lang/rfcs/pull/899 https://github.com/rust-lang/rfcs/pull/899 Still, no real discussion of why unbuffered stderr.
- masklinn 3y agoBecause stderr being conventionally used for error reporting it's important to immediately output that information to avoid losing it in case the program then crashes or ends without flushing. Stdout is generally the "normal output" so loss of information on crash tends to be less relevant, and throughput more so as programs commonly send huge amounts of data to stdout.