Implement debugging output of the bootstrap Step graph into a DOT file by Kobzol · Pull Request #144779 · rust-lang/rust

jieyouxu

@bors bors added S-waiting-on-bors

Status: Waiting on bors to run and complete tests. Bors will change the label on completion.

and removed S-waiting-on-review

Status: Awaiting review from the assignee but also interested parties.

labels

Aug 2, 2025

Zalathar added a commit to Zalathar/rust that referenced this pull request

Aug 3, 2025
Implement debugging output of the bootstrap Step graph into a DOT file

There are already a bunch of ways how we can debug bootstrap, so why not add one more =D (ideally I'd like to consolidate these approaches somewhat, `@Shourya742` is looking into that, but I think that this specific debugging tool is orthogonal to the rest of them, and is quite useful).

This PR adds the option to render the bootstrap step graph into the DOT format, in order to understand what steps were executed, along with their fields (`Debug` output).

Here you can see an example of the generated DOT files for the `BOOTSTRAP_TRACING=1 ./x build compiler --stage 2 --dry-run` command on x64 Linux. One is with cached deps (what this PR does), the other one without.

[bootstrap-dot.zip](https://github.com/user-attachments/files/21548679/bootstrap-dot.zip)

Visual example:
<img width="1899" height="445" alt="image" src="https://github.com/user-attachments/assets/ae40e6d2-0ea8-48bb-b77e-6b21700b95ee" />

r? `@jieyouxu`

bors added a commit that referenced this pull request

Aug 3, 2025
Rollup of 14 pull requests

Successful merges:

 - #143857 (Port #[macro_export] to the new attribute parsing infrastructure)
 - #143900 ([rustdoc] Correctly handle `should_panic` doctest attribute and fix `--no-run` test flag on the 2024 edition)
 - #144070 (Implement `hash_map` macro )
 - #144322 (Add lint against dangling pointers from local variables)
 - #144443 (Make target pointer width in target json an integer)
 - #144667 (`AlignmentEnum` should just be `repr(usize)` now)
 - #144779 (Implement debugging output of the bootstrap Step graph into a DOT file)
 - #144790 (Multiple bounds checking elision failures)
 - #144794 (Port `#[coroutine]` to the new attribute system)
 - #144808 (`Interner` arg to `EarlyBinder` does not affect auto traits)
 - #144816 (Update E0562 to account for the new impl trait positions)
 - #144822 (Return a struct with named fields from `hash_owner_nodes`)
 - #144824 (Updated test links in compiler)
 - #144829 (Use full flag name in strip command for Darwin)

r? `@ghost`
`@rustbot` modify labels: rollup

@bors bors added S-waiting-on-author

Status: This is awaiting some action (such as code changes or more information) from the author.

and removed S-waiting-on-bors

Status: Waiting on bors to run and complete tests. Bors will change the label on completion.

labels

Aug 3, 2025

rust-bors bot added a commit that referenced this pull request

Aug 3, 2025
Implement debugging output of the bootstrap Step graph into a DOT file

try-job: aarch64-gnu-llvm-19-2

@Kobzol

@Kobzol

@bors bors removed the S-waiting-on-author

Status: This is awaiting some action (such as code changes or more information) from the author.

label

Aug 4, 2025

@bors bors added the S-waiting-on-bors

Status: Waiting on bors to run and complete tests. Bors will change the label on completion.

label

Aug 4, 2025

Zalathar added a commit to Zalathar/rust that referenced this pull request

Aug 4, 2025
Implement debugging output of the bootstrap Step graph into a DOT file

There are already a bunch of ways how we can debug bootstrap, so why not add one more =D (ideally I'd like to consolidate these approaches somewhat, `@Shourya742` is looking into that, but I think that this specific debugging tool is orthogonal to the rest of them, and is quite useful).

This PR adds the option to render the bootstrap step graph into the DOT format, in order to understand what steps were executed, along with their fields (`Debug` output).

Here you can see an example of the generated DOT files for the `BOOTSTRAP_TRACING=1 ./x build compiler --stage 2 --dry-run` command on x64 Linux. One is with cached deps (what this PR does), the other one without.

[bootstrap-dot.zip](https://github.com/user-attachments/files/21548679/bootstrap-dot.zip)

Visual example:
<img width="1899" height="445" alt="image" src="https://github.com/user-attachments/assets/ae40e6d2-0ea8-48bb-b77e-6b21700b95ee" />

r? `@jieyouxu`

bors added a commit that referenced this pull request

Aug 4, 2025
Rollup of 5 pull requests

Successful merges:

 - #144741 (fix: Error on illegal `[const]`s inside blocks within legal positions)
 - #144779 (Implement debugging output of the bootstrap Step graph into a DOT file)
 - #144813 (Add a tidy check to prevent adding UI tests directly under `tests/ui/`)
 - #144866 (Remove `SHOULD_EMIT_LINTS` in favor of `should_emit`)
 - #144887 (`rust-analyzer` subtree update)

r? `@ghost`
`@rustbot` modify labels: rollup

samueltardieu added a commit to samueltardieu/rust that referenced this pull request

Aug 4, 2025
Implement debugging output of the bootstrap Step graph into a DOT file

There are already a bunch of ways how we can debug bootstrap, so why not add one more =D (ideally I'd like to consolidate these approaches somewhat, ``@Shourya742`` is looking into that, but I think that this specific debugging tool is orthogonal to the rest of them, and is quite useful).

This PR adds the option to render the bootstrap step graph into the DOT format, in order to understand what steps were executed, along with their fields (`Debug` output).

Here you can see an example of the generated DOT files for the `BOOTSTRAP_TRACING=1 ./x build compiler --stage 2 --dry-run` command on x64 Linux. One is with cached deps (what this PR does), the other one without.

[bootstrap-dot.zip](https://github.com/user-attachments/files/21548679/bootstrap-dot.zip)

Visual example:
<img width="1899" height="445" alt="image" src="https://github.com/user-attachments/assets/ae40e6d2-0ea8-48bb-b77e-6b21700b95ee" />

r? ``@jieyouxu``

bors added a commit that referenced this pull request

Aug 4, 2025
Rollup of 18 pull requests

Successful merges:

 - #144467 (rustdoc template font links only emit `crossorigin` when needed)
 - #144548 (Rehome 21 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`)
 - #144596 (libtest: print the type of test being run)
 - #144741 (fix: Error on illegal `[const]`s inside blocks within legal positions)
 - #144776 (`Printer` cleanups)
 - #144779 (Implement debugging output of the bootstrap Step graph into a DOT file)
 - #144813 (Add a tidy check to prevent adding UI tests directly under `tests/ui/`)
 - #144817 (Properly reject tail calls to `&FnPtr` or `&FnDef`)
 - #144852 (Rename `rust_panic_without_hook` to `resume_unwind` )
 - #144866 (Remove `SHOULD_EMIT_LINTS` in favor of `should_emit`)
 - #144867 (Use `as_array` in PartialEq for arrays)
 - #144872 (Document Poisoning in `LazyCell` and `LazyLock`)
 - #144877 (coverage: Various small cleanups)
 - #144887 (`rust-analyzer` subtree update)
 - #144890 (Add `InterpCx::project_fields`)
 - #144894 (Delete `tests/ui/threads-sendsync/tcp-stress.rs`)
 - #144905 (rustc-dev-guide subtree update)
 - #144920 (Dont print arg span in MIR dump for tail call)

r? `@ghost`
`@rustbot` modify labels: rollup

bors added a commit that referenced this pull request

Aug 5, 2025
Rollup of 17 pull requests

Successful merges:

 - #144467 (rustdoc template font links only emit `crossorigin` when needed)
 - #144548 (Rehome 21 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`)
 - #144741 (fix: Error on illegal `[const]`s inside blocks within legal positions)
 - #144776 (`Printer` cleanups)
 - #144779 (Implement debugging output of the bootstrap Step graph into a DOT file)
 - #144813 (Add a tidy check to prevent adding UI tests directly under `tests/ui/`)
 - #144817 (Properly reject tail calls to `&FnPtr` or `&FnDef`)
 - #144852 (Rename `rust_panic_without_hook` to `resume_unwind` )
 - #144866 (Remove `SHOULD_EMIT_LINTS` in favor of `should_emit`)
 - #144867 (Use `as_array` in PartialEq for arrays)
 - #144872 (Document Poisoning in `LazyCell` and `LazyLock`)
 - #144877 (coverage: Various small cleanups)
 - #144887 (`rust-analyzer` subtree update)
 - #144890 (Add `InterpCx::project_fields`)
 - #144894 (Delete `tests/ui/threads-sendsync/tcp-stress.rs`)
 - #144905 (rustc-dev-guide subtree update)
 - #144920 (Dont print arg span in MIR dump for tail call)

r? `@ghost`
`@rustbot` modify labels: rollup

rust-timer added a commit that referenced this pull request

Aug 5, 2025
Rollup merge of #144779 - Kobzol:bootstrap-dot, r=jieyouxu

Implement debugging output of the bootstrap Step graph into a DOT file

There are already a bunch of ways how we can debug bootstrap, so why not add one more =D (ideally I'd like to consolidate these approaches somewhat, ```@Shourya742``` is looking into that, but I think that this specific debugging tool is orthogonal to the rest of them, and is quite useful).

This PR adds the option to render the bootstrap step graph into the DOT format, in order to understand what steps were executed, along with their fields (`Debug` output).

Here you can see an example of the generated DOT files for the `BOOTSTRAP_TRACING=1 ./x build compiler --stage 2 --dry-run` command on x64 Linux. One is with cached deps (what this PR does), the other one without.

[bootstrap-dot.zip](https://github.com/user-attachments/files/21548679/bootstrap-dot.zip)

Visual example:
<img width="1899" height="445" alt="image" src="https://github.com/user-attachments/assets/ae40e6d2-0ea8-48bb-b77e-6b21700b95ee" />

r? ```@jieyouxu```

@Kobzol Kobzol deleted the bootstrap-dot branch

August 5, 2025 05:52

github-actions bot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request

Aug 7, 2025

github-actions bot pushed a commit to rust-lang/rust-analyzer that referenced this pull request

Aug 11, 2025