Skip to content

rustc error ANSI colour output was recently changed on nightly #399

@narpfel

Description

@narpfel

rustc recently (between nightly-2025-10-11 and nightly-2025-11-11; I didn’t bisect further) changed the specific ANSI escape sequence that it uses for bold red error outputs: It was \x1b[1m\x1b[38;5;9m (

pub const CSI_BOLD_RED: &str = "\u{1b}[1m\u{1b}[38;5;9m";
) but now it is \x1b[1m\x1b[91m. I suspect this was done in rust-lang/rust#147207 (see https://github.com/rust-lang/rust/pull/147207/files#diff-a7e8b42398835197f8219643e5cda042a0d9bd07f6ee6ff31b96cbe69035d6a9 for a rustc ui test with the same change) and that other output (e. g. warnings) was also changed.

This breaks bacon, especially when using --all-targets (as the cargo warning causes bacon to suppress all the output except for what it recognises as errors and warnings).

Reproducer:
src/main.rs

fn main() {
    name;
}

bacon.toml:

default_job = "check"

[jobs.check]
command = ["cargo", "check", "--all-targets", "--color", "always"]
need_stdout = false

bacon output on nightly-2025-10-11:

 t   check    1 error     1 warning

 1  error[E0425]: cannot find value `name` in this scope
  --> src/main.rs:2:5
   |
 2 |     name;
   |     ^^^^ not found in this scope

 For more information about this error, try `rustc --explain E0425`.
 error: could not compile `t` (bin "t") due to 1 previous error
 2  warning: build failed, waiting for other jobs to finish...
 error: could not compile `t` (bin "t" test) due to 1 previous error

Output on nightly-2025-11-11:

 t   check    1 warning

 1  warning: build failed, waiting for other jobs to finish...
 error: could not compile `t` (bin "t") due to 1 previous error

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions