Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove duplicate dependencies for rustc itself #75704

Open
jyn514 opened this issue Aug 19, 2020 · 11 comments
Open

Remove duplicate dependencies for rustc itself #75704

jyn514 opened this issue Aug 19, 2020 · 11 comments
Assignees
Labels
C-cleanup Category: PRs that clean code up or issues documenting cleanup. E-help-wanted Call for participation: Help is requested to fix this issue. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)

Comments

@jyn514
Copy link
Member

jyn514 commented Aug 19, 2020

Some things that immediately look promising to remove:

  • smallvec 0.6.13, from rustc_workspace_hack (can be upgraded)
  • semver 0.9, used for the rustc_ crates where cargo uses 0.10
  • env_logger 0.6, used in rustfmt (can be upgraded)

These duplicates were collected with cargo tree -d in the top-level directory of the rust code base.

Duplicates
annotate-snippets v0.6.1
└── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt)
    └── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)

annotate-snippets v0.8.0
├── rustc-ap-rustc_errors v671.0.0
│   ├── racer v2.1.37
│   │   └── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
│   ├── rustc-ap-rustc_ast_passes v671.0.0
│   │   └── rustc-ap-rustc_expand v671.0.0
│   │       └── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)
│   ├── rustc-ap-rustc_attr v671.0.0
│   │   ├── rustc-ap-rustc_ast_passes v671.0.0 (*)
│   │   ├── rustc-ap-rustc_expand v671.0.0 (*)
│   │   └── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)
│   ├── rustc-ap-rustc_expand v671.0.0 (*)
│   ├── rustc-ap-rustc_parse v671.0.0
│   │   ├── racer v2.1.37 (*)
│   │   ├── rustc-ap-rustc_ast_passes v671.0.0 (*)
│   │   ├── rustc-ap-rustc_expand v671.0.0 (*)
│   │   └── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)
│   ├── rustc-ap-rustc_session v671.0.0
│   │   ├── racer v2.1.37 (*)
│   │   ├── rustc-ap-rustc_ast_passes v671.0.0 (*)
│   │   ├── rustc-ap-rustc_attr v671.0.0 (*)
│   │   ├── rustc-ap-rustc_expand v671.0.0 (*)
│   │   ├── rustc-ap-rustc_parse v671.0.0 (*)
│   │   └── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)
│   └── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)
└── rustc_errors v0.0.0 (/home/joshua/rustc/src/librustc_errors)
    ├── rustc_ast_lowering v0.0.0 (/home/joshua/rustc/src/librustc_ast_lowering)
    │   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface)
    │   │   └── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver)
    │   │       └── rustc-main v0.0.0 (/home/joshua/rustc/src/rustc)
    │   └── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve)
    │       └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    ├── rustc_ast_passes v0.0.0 (/home/joshua/rustc/src/librustc_ast_passes)
    │   ├── rustc_expand v0.0.0 (/home/joshua/rustc/src/librustc_expand)
    │   │   ├── rustc_builtin_macros v0.0.0 (/home/joshua/rustc/src/librustc_builtin_macros)
    │   │   │   └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   ├── rustc_metadata v0.0.0 (/home/joshua/rustc/src/librustc_metadata)
    │   │   │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
    │   │   │   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   │   ├── rustc_plugin_impl v0.0.0 (/home/joshua/rustc/src/librustc_plugin_impl)
    │   │   │   │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
    │   │   │   │   └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   │   └── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
    │   │   └── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
    │   └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    ├── rustc_attr v0.0.0 (/home/joshua/rustc/src/librustc_attr)
    │   ├── rustc_ast_passes v0.0.0 (/home/joshua/rustc/src/librustc_ast_passes) (*)
    │   ├── rustc_builtin_macros v0.0.0 (/home/joshua/rustc/src/librustc_builtin_macros) (*)
    │   ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
    │   ├── rustc_codegen_ssa v0.0.0 (/home/joshua/rustc/src/librustc_codegen_ssa)
    │   │   ├── rustc-main v0.0.0 (/home/joshua/rustc/src/rustc)
    │   │   ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
    │   │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
    │   │   └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   ├── rustc_expand v0.0.0 (/home/joshua/rustc/src/librustc_expand) (*)
    │   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   ├── rustc_lint v0.0.0 (/home/joshua/rustc/src/librustc_lint)
    │   │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
    │   │   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   └── rustc_plugin_impl v0.0.0 (/home/joshua/rustc/src/librustc_plugin_impl) (*)
    │   ├── rustc_metadata v0.0.0 (/home/joshua/rustc/src/librustc_metadata) (*)
    │   ├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle)
    │   │   ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
    │   │   ├── rustc_codegen_ssa v0.0.0 (/home/joshua/rustc/src/librustc_codegen_ssa) (*)
    │   │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
    │   │   ├── rustc_incremental v0.0.0 (/home/joshua/rustc/src/librustc_incremental)
    │   │   │   ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
    │   │   │   ├── rustc_codegen_ssa v0.0.0 (/home/joshua/rustc/src/librustc_codegen_ssa) (*)
    │   │   │   └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   ├── rustc_infer v0.0.0 (/home/joshua/rustc/src/librustc_infer)
    │   │   │   ├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir)
    │   │   │   │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
    │   │   │   │   └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   │   ├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build)
    │   │   │   │   └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   │   ├── rustc_trait_selection v0.0.0 (/home/joshua/rustc/src/librustc_trait_selection)
    │   │   │   │   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   │   │   ├── rustc_lint v0.0.0 (/home/joshua/rustc/src/librustc_lint) (*)
    │   │   │   │   ├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
    │   │   │   │   ├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
    │   │   │   │   ├── rustc_passes v0.0.0 (/home/joshua/rustc/src/librustc_passes)
    │   │   │   │   │   └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   │   │   ├── rustc_traits v0.0.0 (/home/joshua/rustc/src/librustc_traits)
    │   │   │   │   │   └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   │   │   ├── rustc_ty v0.0.0 (/home/joshua/rustc/src/librustc_ty)
    │   │   │   │   │   └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   │   │   └── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck)
    │   │   │   │       ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   │   │       └── rustc_privacy v0.0.0 (/home/joshua/rustc/src/librustc_privacy)
    │   │   │   │           └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   │   ├── rustc_traits v0.0.0 (/home/joshua/rustc/src/librustc_traits) (*)
    │   │   │   ├── rustc_ty v0.0.0 (/home/joshua/rustc/src/librustc_ty) (*)
    │   │   │   └── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck) (*)
    │   │   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   ├── rustc_lint v0.0.0 (/home/joshua/rustc/src/librustc_lint) (*)
    │   │   ├── rustc_metadata v0.0.0 (/home/joshua/rustc/src/librustc_metadata) (*)
    │   │   ├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
    │   │   ├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
    │   │   ├── rustc_passes v0.0.0 (/home/joshua/rustc/src/librustc_passes) (*)
    │   │   ├── rustc_plugin_impl v0.0.0 (/home/joshua/rustc/src/librustc_plugin_impl) (*)
    │   │   ├── rustc_privacy v0.0.0 (/home/joshua/rustc/src/librustc_privacy) (*)
    │   │   ├── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
    │   │   ├── rustc_save_analysis v0.0.0 (/home/joshua/rustc/src/librustc_save_analysis)
    │   │   │   └── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
    │   │   ├── rustc_symbol_mangling v0.0.0 (/home/joshua/rustc/src/librustc_symbol_mangling)
    │   │   │   ├── rustc_codegen_ssa v0.0.0 (/home/joshua/rustc/src/librustc_codegen_ssa) (*)
    │   │   │   └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   │   ├── rustc_trait_selection v0.0.0 (/home/joshua/rustc/src/librustc_trait_selection) (*)
    │   │   ├── rustc_traits v0.0.0 (/home/joshua/rustc/src/librustc_traits) (*)
    │   │   ├── rustc_ty v0.0.0 (/home/joshua/rustc/src/librustc_ty) (*)
    │   │   └── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck) (*)
    │   ├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
    │   ├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
    │   ├── rustc_passes v0.0.0 (/home/joshua/rustc/src/librustc_passes) (*)
    │   ├── rustc_privacy v0.0.0 (/home/joshua/rustc/src/librustc_privacy) (*)
    │   ├── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
    │   ├── rustc_trait_selection v0.0.0 (/home/joshua/rustc/src/librustc_trait_selection) (*)
    │   └── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck) (*)
    ├── rustc_builtin_macros v0.0.0 (/home/joshua/rustc/src/librustc_builtin_macros) (*)
    ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
    ├── rustc_codegen_ssa v0.0.0 (/home/joshua/rustc/src/librustc_codegen_ssa) (*)
    ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
    ├── rustc_expand v0.0.0 (/home/joshua/rustc/src/librustc_expand) (*)
    ├── rustc_infer v0.0.0 (/home/joshua/rustc/src/librustc_infer) (*)
    ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    ├── rustc_lint v0.0.0 (/home/joshua/rustc/src/librustc_lint) (*)
    ├── rustc_metadata v0.0.0 (/home/joshua/rustc/src/librustc_metadata) (*)
    ├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
    ├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
    ├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
    ├── rustc_parse v0.0.0 (/home/joshua/rustc/src/librustc_parse)
    │   ├── rustc_ast_passes v0.0.0 (/home/joshua/rustc/src/librustc_ast_passes) (*)
    │   ├── rustc_builtin_macros v0.0.0 (/home/joshua/rustc/src/librustc_builtin_macros) (*)
    │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
    │   ├── rustc_expand v0.0.0 (/home/joshua/rustc/src/librustc_expand) (*)
    │   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   └── rustc_save_analysis v0.0.0 (/home/joshua/rustc/src/librustc_save_analysis) (*)
    ├── rustc_passes v0.0.0 (/home/joshua/rustc/src/librustc_passes) (*)
    ├── rustc_plugin_impl v0.0.0 (/home/joshua/rustc/src/librustc_plugin_impl) (*)
    ├── rustc_privacy v0.0.0 (/home/joshua/rustc/src/librustc_privacy) (*)
    ├── rustc_query_system v0.0.0 (/home/joshua/rustc/src/librustc_query_system)
    │   └── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
    ├── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
    ├── rustc_session v0.0.0 (/home/joshua/rustc/src/librustc_session)
    │   ├── rustc_ast_lowering v0.0.0 (/home/joshua/rustc/src/librustc_ast_lowering) (*)
    │   ├── rustc_ast_passes v0.0.0 (/home/joshua/rustc/src/librustc_ast_passes) (*)
    │   ├── rustc_attr v0.0.0 (/home/joshua/rustc/src/librustc_attr) (*)
    │   ├── rustc_builtin_macros v0.0.0 (/home/joshua/rustc/src/librustc_builtin_macros) (*)
    │   ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
    │   ├── rustc_codegen_ssa v0.0.0 (/home/joshua/rustc/src/librustc_codegen_ssa) (*)
    │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
    │   ├── rustc_expand v0.0.0 (/home/joshua/rustc/src/librustc_expand) (*)
    │   ├── rustc_incremental v0.0.0 (/home/joshua/rustc/src/librustc_incremental) (*)
    │   ├── rustc_infer v0.0.0 (/home/joshua/rustc/src/librustc_infer) (*)
    │   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    │   ├── rustc_lint v0.0.0 (/home/joshua/rustc/src/librustc_lint) (*)
    │   ├── rustc_metadata v0.0.0 (/home/joshua/rustc/src/librustc_metadata) (*)
    │   ├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
    │   ├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
    │   ├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
    │   ├── rustc_parse v0.0.0 (/home/joshua/rustc/src/librustc_parse) (*)
    │   ├── rustc_passes v0.0.0 (/home/joshua/rustc/src/librustc_passes) (*)
    │   ├── rustc_plugin_impl v0.0.0 (/home/joshua/rustc/src/librustc_plugin_impl) (*)
    │   ├── rustc_privacy v0.0.0 (/home/joshua/rustc/src/librustc_privacy) (*)
    │   ├── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
    │   ├── rustc_save_analysis v0.0.0 (/home/joshua/rustc/src/librustc_save_analysis) (*)
    │   ├── rustc_symbol_mangling v0.0.0 (/home/joshua/rustc/src/librustc_symbol_mangling) (*)
    │   ├── rustc_trait_selection v0.0.0 (/home/joshua/rustc/src/librustc_trait_selection) (*)
    │   ├── rustc_ty v0.0.0 (/home/joshua/rustc/src/librustc_ty) (*)
    │   └── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck) (*)
    ├── rustc_trait_selection v0.0.0 (/home/joshua/rustc/src/librustc_trait_selection) (*)
    ├── rustc_ty v0.0.0 (/home/joshua/rustc/src/librustc_ty) (*)
    └── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck) (*)

ansi_term v0.11.0
├── annotate-snippets v0.6.1 (*)
├── clap v2.33.3
│   ├── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo)
│   │   ├── cargo-test-support v0.1.0 (/home/joshua/rustc/src/tools/cargo/crates/cargo-test-support)
│   │   │   [dev-dependencies]
│   │   │   └── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo) (*)
│   │   └── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
│   ├── installer v0.0.0 (/home/joshua/rustc/src/tools/rust-installer)
│   ├── mdbook v0.4.2
│   │   └── rustbook v0.1.0 (/home/joshua/rustc/src/tools/rustbook)
│   ├── racer v2.1.37 (*)
│   ├── rustbook v0.1.0 (/home/joshua/rustc/src/tools/rustbook)
│   └── structopt v0.3.16
│       └── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)
└── pretty_assertions v0.6.1
    [dev-dependencies]
    └── bootstrap v0.0.0 (/home/joshua/rustc/src/bootstrap)

ansi_term v0.12.1
└── tracing-subscriber v0.2.11
    └── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)

cargo_metadata v0.8.2
├── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
└── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)

cargo_metadata v0.9.1
├── cargo-miri v0.1.0 (/home/joshua/rustc/src/tools/miri/cargo-miri)
├── clippy_lints v0.0.212 (/home/joshua/rustc/src/tools/clippy/clippy_lints)
│   └── clippy v0.0.212 (/home/joshua/rustc/src/tools/clippy)
└── tidy v0.1.0 (/home/joshua/rustc/src/tools/tidy)
    └── unstable-book-gen v0.1.0 (/home/joshua/rustc/src/tools/unstable-book-gen)
[dev-dependencies]
└── clippy v0.0.212 (/home/joshua/rustc/src/tools/clippy)

crossbeam-queue v0.1.2
├── rustc-rayon-core v0.3.0
│   ├── rustc-ap-rustc_data_structures v671.0.0
│   │   ├── racer v2.1.37 (*)
│   │   ├── rustc-ap-rustc_arena v671.0.0
│   │   │   └── rustc-ap-rustc_span v671.0.0
│   │   │       ├── racer v2.1.37 (*)
│   │   │       ├── rustc-ap-rustc_ast v671.0.0
│   │   │       │   ├── racer v2.1.37 (*)
│   │   │       │   ├── rustc-ap-rustc_ast_passes v671.0.0 (*)
│   │   │       │   ├── rustc-ap-rustc_ast_pretty v671.0.0
│   │   │       │   │   ├── racer v2.1.37 (*)
│   │   │       │   │   ├── rustc-ap-rustc_ast_passes v671.0.0 (*)
│   │   │       │   │   ├── rustc-ap-rustc_attr v671.0.0 (*)
│   │   │       │   │   ├── rustc-ap-rustc_expand v671.0.0 (*)
│   │   │       │   │   ├── rustc-ap-rustc_parse v671.0.0 (*)
│   │   │       │   │   └── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)
│   │   │       │   ├── rustc-ap-rustc_attr v671.0.0 (*)
│   │   │       │   ├── rustc-ap-rustc_expand v671.0.0 (*)
│   │   │       │   ├── rustc-ap-rustc_parse v671.0.0 (*)
│   │   │       │   ├── rustc-ap-rustc_session v671.0.0 (*)
│   │   │       │   └── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)
│   │   │       ├── rustc-ap-rustc_ast_passes v671.0.0 (*)
│   │   │       ├── rustc-ap-rustc_ast_pretty v671.0.0 (*)
│   │   │       ├── rustc-ap-rustc_attr v671.0.0 (*)
│   │   │       ├── rustc-ap-rustc_errors v671.0.0 (*)
│   │   │       ├── rustc-ap-rustc_expand v671.0.0 (*)
│   │   │       ├── rustc-ap-rustc_feature v671.0.0
│   │   │       │   ├── rustc-ap-rustc_ast_passes v671.0.0 (*)
│   │   │       │   ├── rustc-ap-rustc_attr v671.0.0 (*)
│   │   │       │   ├── rustc-ap-rustc_expand v671.0.0 (*)
│   │   │       │   ├── rustc-ap-rustc_parse v671.0.0 (*)
│   │   │       │   └── rustc-ap-rustc_session v671.0.0 (*)
│   │   │       ├── rustc-ap-rustc_parse v671.0.0 (*)
│   │   │       ├── rustc-ap-rustc_session v671.0.0 (*)
│   │   │       ├── rustc-ap-rustc_target v671.0.0
│   │   │       │   ├── rustc-ap-rustc_ast_pretty v671.0.0 (*)
│   │   │       │   └── rustc-ap-rustc_session v671.0.0 (*)
│   │   │       └── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)
│   │   ├── rustc-ap-rustc_ast v671.0.0 (*)
│   │   ├── rustc-ap-rustc_ast_passes v671.0.0 (*)
│   │   ├── rustc-ap-rustc_attr v671.0.0 (*)
│   │   ├── rustc-ap-rustc_errors v671.0.0 (*)
│   │   ├── rustc-ap-rustc_expand v671.0.0 (*)
│   │   ├── rustc-ap-rustc_feature v671.0.0 (*)
│   │   ├── rustc-ap-rustc_parse v671.0.0 (*)
│   │   ├── rustc-ap-rustc_session v671.0.0 (*)
│   │   ├── rustc-ap-rustc_span v671.0.0 (*)
│   │   ├── rustc-ap-rustc_target v671.0.0 (*)
│   │   └── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)
│   ├── rustc-rayon v0.3.0
│   │   ├── rustc-ap-rustc_data_structures v671.0.0 (*)
│   │   ├── rustc_data_structures v0.0.0 (/home/joshua/rustc/src/librustc_data_structures)
│   │   │   ├── rustc_arena v0.0.0 (/home/joshua/rustc/src/librustc_arena)
│   │   │   │   ├── rustc_ast_lowering v0.0.0 (/home/joshua/rustc/src/librustc_ast_lowering) (*)
│   │   │   │   ├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
│   │   │   │   ├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
│   │   │   │   ├── rustc_query_system v0.0.0 (/home/joshua/rustc/src/librustc_query_system) (*)
│   │   │   │   ├── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
│   │   │   │   ├── rustc_span v0.0.0 (/home/joshua/rustc/src/librustc_span)
│   │   │   │   │   ├── rustc_ast v0.0.0 (/home/joshua/rustc/src/librustc_ast)
│   │   │   │   │   │   ├── rustc_ast_lowering v0.0.0 (/home/joshua/rustc/src/librustc_ast_lowering) (*)
│   │   │   │   │   │   ├── rustc_ast_passes v0.0.0 (/home/joshua/rustc/src/librustc_ast_passes) (*)
│   │   │   │   │   │   ├── rustc_ast_pretty v0.0.0 (/home/joshua/rustc/src/librustc_ast_pretty)
│   │   │   │   │   │   │   ├── rustc_ast_lowering v0.0.0 (/home/joshua/rustc/src/librustc_ast_lowering) (*)
│   │   │   │   │   │   │   ├── rustc_ast_passes v0.0.0 (/home/joshua/rustc/src/librustc_ast_passes) (*)
│   │   │   │   │   │   │   ├── rustc_attr v0.0.0 (/home/joshua/rustc/src/librustc_attr) (*)
│   │   │   │   │   │   │   ├── rustc_builtin_macros v0.0.0 (/home/joshua/rustc/src/librustc_builtin_macros) (*)
│   │   │   │   │   │   │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
│   │   │   │   │   │   │   ├── rustc_expand v0.0.0 (/home/joshua/rustc/src/librustc_expand) (*)
│   │   │   │   │   │   │   ├── rustc_hir_pretty v0.0.0 (/home/joshua/rustc/src/librustc_hir_pretty)
│   │   │   │   │   │   │   │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
│   │   │   │   │   │   │   │   ├── rustc_metadata v0.0.0 (/home/joshua/rustc/src/librustc_metadata) (*)
│   │   │   │   │   │   │   │   ├── rustc_save_analysis v0.0.0 (/home/joshua/rustc/src/librustc_save_analysis) (*)
│   │   │   │   │   │   │   │   └── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck) (*)
│   │   │   │   │   │   │   ├── rustc_lint v0.0.0 (/home/joshua/rustc/src/librustc_lint) (*)
│   │   │   │   │   │   │   ├── rustc_parse v0.0.0 (/home/joshua/rustc/src/librustc_parse) (*)
│   │   │   │   │   │   │   ├── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
│   │   │   │   │   │   │   └── rustc_save_analysis v0.0.0 (/home/joshua/rustc/src/librustc_save_analysis) (*)
│   │   │   │   │   │   ├── rustc_attr v0.0.0 (/home/joshua/rustc/src/librustc_attr) (*)
│   │   │   │   │   │   ├── rustc_builtin_macros v0.0.0 (/home/joshua/rustc/src/librustc_builtin_macros) (*)
│   │   │   │   │   │   ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
│   │   │   │   │   │   ├── rustc_codegen_ssa v0.0.0 (/home/joshua/rustc/src/librustc_codegen_ssa) (*)
│   │   │   │   │   │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
│   │   │   │   │   │   ├── rustc_expand v0.0.0 (/home/joshua/rustc/src/librustc_expand) (*)
│   │   │   │   │   │   ├── rustc_hir v0.0.0 (/home/joshua/rustc/src/librustc_hir)
│   │   │   │   │   │   │   ├── rustc_ast_lowering v0.0.0 (/home/joshua/rustc/src/librustc_ast_lowering) (*)
│   │   │   │   │   │   │   ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
│   │   │   │   │   │   │   ├── rustc_codegen_ssa v0.0.0 (/home/joshua/rustc/src/librustc_codegen_ssa) (*)
│   │   │   │   │   │   │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
│   │   │   │   │   │   │   ├── rustc_hir_pretty v0.0.0 (/home/joshua/rustc/src/librustc_hir_pretty) (*)
│   │   │   │   │   │   │   ├── rustc_incremental v0.0.0 (/home/joshua/rustc/src/librustc_incremental) (*)
│   │   │   │   │   │   │   ├── rustc_infer v0.0.0 (/home/joshua/rustc/src/librustc_infer) (*)
│   │   │   │   │   │   │   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
│   │   │   │   │   │   │   ├── rustc_lint v0.0.0 (/home/joshua/rustc/src/librustc_lint) (*)
│   │   │   │   │   │   │   ├── rustc_metadata v0.0.0 (/home/joshua/rustc/src/librustc_metadata) (*)
│   │   │   │   │   │   │   ├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
│   │   │   │   │   │   │   ├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
│   │   │   │   │   │   │   ├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
│   │   │   │   │   │   │   ├── rustc_passes v0.0.0 (/home/joshua/rustc/src/librustc_passes) (*)
│   │   │   │   │   │   │   ├── rustc_plugin_impl v0.0.0 (/home/joshua/rustc/src/librustc_plugin_impl) (*)
│   │   │   │   │   │   │   ├── rustc_privacy v0.0.0 (/home/joshua/rustc/src/librustc_privacy) (*)
│   │   │   │   │   │   │   ├── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
│   │   │   │   │   │   │   ├── rustc_save_analysis v0.0.0 (/home/joshua/rustc/src/librustc_save_analysis) (*)
│   │   │   │   │   │   │   ├── rustc_symbol_mangling v0.0.0 (/home/joshua/rustc/src/librustc_symbol_mangling) (*)
│   │   │   │   │   │   │   ├── rustc_trait_selection v0.0.0 (/home/joshua/rustc/src/librustc_trait_selection) (*)
│   │   │   │   │   │   │   ├── rustc_traits v0.0.0 (/home/joshua/rustc/src/librustc_traits) (*)
│   │   │   │   │   │   │   ├── rustc_ty v0.0.0 (/home/joshua/rustc/src/librustc_ty) (*)
│   │   │   │   │   │   │   └── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck) (*)
│   │   │   │   │   │   ├── rustc_hir_pretty v0.0.0 (/home/joshua/rustc/src/librustc_hir_pretty) (*)
│   │   │   │   │   │   ├── rustc_incremental v0.0.0 (/home/joshua/rustc/src/librustc_incremental) (*)
│   │   │   │   │   │   ├── rustc_infer v0.0.0 (/home/joshua/rustc/src/librustc_infer) (*)
│   │   │   │   │   │   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
│   │   │   │   │   │   ├── rustc_lint v0.0.0 (/home/joshua/rustc/src/librustc_lint) (*)
│   │   │   │   │   │   ├── rustc_metadata v0.0.0 (/home/joshua/rustc/src/librustc_metadata) (*)
│   │   │   │   │   │   ├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
│   │   │   │   │   │   ├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
│   │   │   │   │   │   ├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
│   │   │   │   │   │   ├── rustc_parse v0.0.0 (/home/joshua/rustc/src/librustc_parse) (*)
│   │   │   │   │   │   ├── rustc_passes v0.0.0 (/home/joshua/rustc/src/librustc_passes) (*)
│   │   │   │   │   │   ├── rustc_plugin_impl v0.0.0 (/home/joshua/rustc/src/librustc_plugin_impl) (*)
│   │   │   │   │   │   ├── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
│   │   │   │   │   │   ├── rustc_save_analysis v0.0.0 (/home/joshua/rustc/src/librustc_save_analysis) (*)
│   │   │   │   │   │   ├── rustc_session v0.0.0 (/home/joshua/rustc/src/librustc_session) (*)
│   │   │   │   │   │   ├── rustc_symbol_mangling v0.0.0 (/home/joshua/rustc/src/librustc_symbol_mangling) (*)
│   │   │   │   │   │   ├── rustc_trait_selection v0.0.0 (/home/joshua/rustc/src/librustc_trait_selection) (*)
│   │   │   │   │   │   ├── rustc_traits v0.0.0 (/home/joshua/rustc/src/librustc_traits) (*)
│   │   │   │   │   │   └── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck) (*)
│   │   │   │   │   ├── rustc_ast_lowering v0.0.0 (/home/joshua/rustc/src/librustc_ast_lowering) (*)
│   │   │   │   │   ├── rustc_ast_passes v0.0.0 (/home/joshua/rustc/src/librustc_ast_passes) (*)
│   │   │   │   │   ├── rustc_ast_pretty v0.0.0 (/home/joshua/rustc/src/librustc_ast_pretty) (*)
│   │   │   │   │   ├── rustc_attr v0.0.0 (/home/joshua/rustc/src/librustc_attr) (*)
│   │   │   │   │   ├── rustc_builtin_macros v0.0.0 (/home/joshua/rustc/src/librustc_builtin_macros) (*)
│   │   │   │   │   ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
│   │   │   │   │   ├── rustc_codegen_ssa v0.0.0 (/home/joshua/rustc/src/librustc_codegen_ssa) (*)
│   │   │   │   │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
│   │   │   │   │   ├── rustc_errors v0.0.0 (/home/joshua/rustc/src/librustc_errors) (*)
│   │   │   │   │   ├── rustc_expand v0.0.0 (/home/joshua/rustc/src/librustc_expand) (*)
│   │   │   │   │   ├── rustc_feature v0.0.0 (/home/joshua/rustc/src/librustc_feature)
│   │   │   │   │   │   ├── rustc_ast_passes v0.0.0 (/home/joshua/rustc/src/librustc_ast_passes) (*)
│   │   │   │   │   │   ├── rustc_attr v0.0.0 (/home/joshua/rustc/src/librustc_attr) (*)
│   │   │   │   │   │   ├── rustc_builtin_macros v0.0.0 (/home/joshua/rustc/src/librustc_builtin_macros) (*)
│   │   │   │   │   │   ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
│   │   │   │   │   │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
│   │   │   │   │   │   ├── rustc_expand v0.0.0 (/home/joshua/rustc/src/librustc_expand) (*)
│   │   │   │   │   │   ├── rustc_lint v0.0.0 (/home/joshua/rustc/src/librustc_lint) (*)
│   │   │   │   │   │   ├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
│   │   │   │   │   │   ├── rustc_parse v0.0.0 (/home/joshua/rustc/src/librustc_parse) (*)
│   │   │   │   │   │   ├── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
│   │   │   │   │   │   └── rustc_session v0.0.0 (/home/joshua/rustc/src/librustc_session) (*)
│   │   │   │   │   ├── rustc_hir v0.0.0 (/home/joshua/rustc/src/librustc_hir) (*)
│   │   │   │   │   ├── rustc_hir_pretty v0.0.0 (/home/joshua/rustc/src/librustc_hir_pretty) (*)
│   │   │   │   │   ├── rustc_incremental v0.0.0 (/home/joshua/rustc/src/librustc_incremental) (*)
│   │   │   │   │   ├── rustc_infer v0.0.0 (/home/joshua/rustc/src/librustc_infer) (*)
│   │   │   │   │   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
│   │   │   │   │   ├── rustc_lint v0.0.0 (/home/joshua/rustc/src/librustc_lint) (*)
│   │   │   │   │   ├── rustc_metadata v0.0.0 (/home/joshua/rustc/src/librustc_metadata) (*)
│   │   │   │   │   ├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
│   │   │   │   │   ├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
│   │   │   │   │   ├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
│   │   │   │   │   ├── rustc_parse v0.0.0 (/home/joshua/rustc/src/librustc_parse) (*)
│   │   │   │   │   ├── rustc_parse_format v0.0.0 (/home/joshua/rustc/src/librustc_parse_format)
│   │   │   │   │   │   ├── rustc_builtin_macros v0.0.0 (/home/joshua/rustc/src/librustc_builtin_macros) (*)
│   │   │   │   │   │   └── rustc_trait_selection v0.0.0 (/home/joshua/rustc/src/librustc_trait_selection) (*)
│   │   │   │   │   ├── rustc_passes v0.0.0 (/home/joshua/rustc/src/librustc_passes) (*)
│   │   │   │   │   ├── rustc_plugin_impl v0.0.0 (/home/joshua/rustc/src/librustc_plugin_impl) (*)
│   │   │   │   │   ├── rustc_privacy v0.0.0 (/home/joshua/rustc/src/librustc_privacy) (*)
│   │   │   │   │   ├── rustc_query_system v0.0.0 (/home/joshua/rustc/src/librustc_query_system) (*)
│   │   │   │   │   ├── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
│   │   │   │   │   ├── rustc_save_analysis v0.0.0 (/home/joshua/rustc/src/librustc_save_analysis) (*)
│   │   │   │   │   ├── rustc_session v0.0.0 (/home/joshua/rustc/src/librustc_session) (*)
│   │   │   │   │   ├── rustc_symbol_mangling v0.0.0 (/home/joshua/rustc/src/librustc_symbol_mangling) (*)
│   │   │   │   │   ├── rustc_target v0.0.0 (/home/joshua/rustc/src/librustc_target)
│   │   │   │   │   │   ├── rustc_ast_lowering v0.0.0 (/home/joshua/rustc/src/librustc_ast_lowering) (*)
│   │   │   │   │   │   ├── rustc_ast_pretty v0.0.0 (/home/joshua/rustc/src/librustc_ast_pretty) (*)
│   │   │   │   │   │   ├── rustc_builtin_macros v0.0.0 (/home/joshua/rustc/src/librustc_builtin_macros) (*)
│   │   │   │   │   │   ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
│   │   │   │   │   │   ├── rustc_codegen_ssa v0.0.0 (/home/joshua/rustc/src/librustc_codegen_ssa) (*)
│   │   │   │   │   │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
│   │   │   │   │   │   ├── rustc_hir v0.0.0 (/home/joshua/rustc/src/librustc_hir) (*)
│   │   │   │   │   │   ├── rustc_hir_pretty v0.0.0 (/home/joshua/rustc/src/librustc_hir_pretty) (*)
│   │   │   │   │   │   ├── rustc_infer v0.0.0 (/home/joshua/rustc/src/librustc_infer) (*)
│   │   │   │   │   │   ├── rustc_lint v0.0.0 (/home/joshua/rustc/src/librustc_lint) (*)
│   │   │   │   │   │   ├── rustc_metadata v0.0.0 (/home/joshua/rustc/src/librustc_metadata) (*)
│   │   │   │   │   │   ├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
│   │   │   │   │   │   ├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
│   │   │   │   │   │   ├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
│   │   │   │   │   │   ├── rustc_passes v0.0.0 (/home/joshua/rustc/src/librustc_passes) (*)
│   │   │   │   │   │   ├── rustc_session v0.0.0 (/home/joshua/rustc/src/librustc_session) (*)
│   │   │   │   │   │   ├── rustc_symbol_mangling v0.0.0 (/home/joshua/rustc/src/librustc_symbol_mangling) (*)
│   │   │   │   │   │   ├── rustc_trait_selection v0.0.0 (/home/joshua/rustc/src/librustc_trait_selection) (*)
│   │   │   │   │   │   ├── rustc_ty v0.0.0 (/home/joshua/rustc/src/librustc_ty) (*)
│   │   │   │   │   │   └── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck) (*)
│   │   │   │   │   │   [dev-dependencies]
│   │   │   │   │   │   └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
│   │   │   │   │   ├── rustc_trait_selection v0.0.0 (/home/joshua/rustc/src/librustc_trait_selection) (*)
│   │   │   │   │   ├── rustc_traits v0.0.0 (/home/joshua/rustc/src/librustc_traits) (*)
│   │   │   │   │   ├── rustc_ty v0.0.0 (/home/joshua/rustc/src/librustc_ty) (*)
│   │   │   │   │   └── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck) (*)
│   │   │   │   └── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck) (*)
│   │   │   ├── rustc_ast v0.0.0 (/home/joshua/rustc/src/librustc_ast) (*)
│   │   │   ├── rustc_ast_lowering v0.0.0 (/home/joshua/rustc/src/librustc_ast_lowering) (*)
│   │   │   ├── rustc_ast_passes v0.0.0 (/home/joshua/rustc/src/librustc_ast_passes) (*)
│   │   │   ├── rustc_attr v0.0.0 (/home/joshua/rustc/src/librustc_attr) (*)
│   │   │   ├── rustc_builtin_macros v0.0.0 (/home/joshua/rustc/src/librustc_builtin_macros) (*)
│   │   │   ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
│   │   │   ├── rustc_codegen_ssa v0.0.0 (/home/joshua/rustc/src/librustc_codegen_ssa) (*)
│   │   │   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
│   │   │   ├── rustc_errors v0.0.0 (/home/joshua/rustc/src/librustc_errors) (*)
│   │   │   ├── rustc_expand v0.0.0 (/home/joshua/rustc/src/librustc_expand) (*)
│   │   │   ├── rustc_feature v0.0.0 (/home/joshua/rustc/src/librustc_feature) (*)
│   │   │   ├── rustc_hir v0.0.0 (/home/joshua/rustc/src/librustc_hir) (*)
│   │   │   ├── rustc_incremental v0.0.0 (/home/joshua/rustc/src/librustc_incremental) (*)
│   │   │   ├── rustc_infer v0.0.0 (/home/joshua/rustc/src/librustc_infer) (*)
│   │   │   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
│   │   │   ├── rustc_lint v0.0.0 (/home/joshua/rustc/src/librustc_lint) (*)
│   │   │   ├── rustc_metadata v0.0.0 (/home/joshua/rustc/src/librustc_metadata) (*)
│   │   │   ├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
│   │   │   ├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
│   │   │   ├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
│   │   │   ├── rustc_parse v0.0.0 (/home/joshua/rustc/src/librustc_parse) (*)
│   │   │   ├── rustc_passes v0.0.0 (/home/joshua/rustc/src/librustc_passes) (*)
│   │   │   ├── rustc_privacy v0.0.0 (/home/joshua/rustc/src/librustc_privacy) (*)
│   │   │   ├── rustc_query_system v0.0.0 (/home/joshua/rustc/src/librustc_query_system) (*)
│   │   │   ├── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
│   │   │   ├── rustc_save_analysis v0.0.0 (/home/joshua/rustc/src/librustc_save_analysis) (*)
│   │   │   ├── rustc_session v0.0.0 (/home/joshua/rustc/src/librustc_session) (*)
│   │   │   ├── rustc_span v0.0.0 (/home/joshua/rustc/src/librustc_span) (*)
│   │   │   ├── rustc_symbol_mangling v0.0.0 (/home/joshua/rustc/src/librustc_symbol_mangling) (*)
│   │   │   ├── rustc_target v0.0.0 (/home/joshua/rustc/src/librustc_target) (*)
│   │   │   ├── rustc_trait_selection v0.0.0 (/home/joshua/rustc/src/librustc_trait_selection) (*)
│   │   │   ├── rustc_traits v0.0.0 (/home/joshua/rustc/src/librustc_traits) (*)
│   │   │   ├── rustc_ty v0.0.0 (/home/joshua/rustc/src/librustc_ty) (*)
│   │   │   └── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck) (*)
│   │   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
│   │   └── rustdoc v0.0.0 (/home/joshua/rustc/src/librustdoc)
│   │       ├── error_index_generator v0.0.0 (/home/joshua/rustc/src/tools/error_index_generator)
│   │       └── rustdoc-tool v0.0.0 (/home/joshua/rustc/src/tools/rustdoc)
│   ├── rustc_data_structures v0.0.0 (/home/joshua/rustc/src/librustc_data_structures) (*)
│   ├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
│   └── rustc_query_system v0.0.0 (/home/joshua/rustc/src/librustc_query_system) (*)
└── tokio-process v0.2.5
    [dev-dependencies]
    └── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)

crossbeam-queue v0.2.3
├── rayon-core v1.7.1
│   └── rayon v1.3.1
│       ├── installer v0.0.0 (/home/joshua/rustc/src/tools/rust-installer)
│       └── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
└── tokio-threadpool v0.1.18
    ├── tokio v0.1.22
    │   ├── jsonrpc-client-transports v14.2.1
    │   │   └── jsonrpc-core-client v14.2.0
    │   │       └── rls-ipc v0.1.0 (/home/joshua/rustc/src/tools/rls/rls-ipc)
    │   │           ├── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
    │   │           └── rls-rustc v0.6.0 (/home/joshua/rustc/src/tools/rls/rls-rustc)
    │   │               └── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
    │   ├── jsonrpc-server-utils v14.2.0
    │   │   ├── jsonrpc-client-transports v14.2.1 (*)
    │   │   └── jsonrpc-ipc-server v14.0.3
    │   │       └── rls-ipc v0.1.0 (/home/joshua/rustc/src/tools/rls/rls-ipc) (*)
    │   ├── parity-tokio-ipc v0.2.0
    │   │   ├── jsonrpc-client-transports v14.2.1 (*)
    │   │   └── jsonrpc-ipc-server v14.0.3 (*)
    │   ├── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
    │   ├── rls-rustc v0.6.0 (/home/joshua/rustc/src/tools/rls/rls-rustc) (*)
    │   └── tokio-named-pipes v0.1.0
    │       └── parity-tokio-ipc v0.2.0 (*)
    │   [dev-dependencies]
    │   └── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
    └── tokio-fs v0.1.7
        └── tokio v0.1.22 (*)

crossbeam-utils v0.6.6
├── crossbeam-queue v0.1.2 (*)
└── rustc-rayon-core v0.3.0 (*)

crossbeam-utils v0.7.2
├── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo) (*)
├── crossbeam-channel v0.4.3
│   └── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
├── crossbeam-deque v0.7.3
│   ├── rayon v1.3.1 (*)
│   ├── rayon-core v1.7.1 (*)
│   ├── rustc-rayon v0.3.0 (*)
│   ├── rustc-rayon-core v0.3.0 (*)
│   └── tokio-threadpool v0.1.18 (*)
├── crossbeam-epoch v0.8.2
│   └── crossbeam-deque v0.7.3 (*)
├── crossbeam-queue v0.2.3 (*)
├── ignore v0.4.16
│   ├── bootstrap v0.0.0 (/home/joshua/rustc/src/bootstrap)
│   ├── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo) (*)
│   └── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)
├── rayon-core v1.7.1 (*)
├── rustc-ap-rustc_data_structures v671.0.0 (*)
├── rustc-workspace-hack v1.0.0 (/home/joshua/rustc/src/tools/rustc-workspace-hack)
│   ├── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo) (*)
│   ├── cargo-miri v0.1.0 (/home/joshua/rustc/src/tools/miri/cargo-miri)
│   ├── miri v0.1.0 (/home/joshua/rustc/src/tools/miri)
│   ├── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
│   └── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)
│   [dev-dependencies]
│   └── clippy v0.0.212 (/home/joshua/rustc/src/tools/clippy)
├── rustc_data_structures v0.0.0 (/home/joshua/rustc/src/librustc_data_structures) (*)
├── tokio-executor v0.1.10
│   ├── tokio v0.1.22 (*)
│   ├── tokio-current-thread v0.1.7
│   │   └── tokio v0.1.22 (*)
│   ├── tokio-reactor v0.1.12
│   │   ├── tokio v0.1.22 (*)
│   │   ├── tokio-process v0.2.5 (*)
│   │   ├── tokio-signal v0.2.9
│   │   │   └── tokio-process v0.2.5 (*)
│   │   ├── tokio-tcp v0.1.4
│   │   │   └── tokio v0.1.22 (*)
│   │   ├── tokio-udp v0.1.6
│   │   │   └── tokio v0.1.22 (*)
│   │   └── tokio-uds v0.2.7
│   │       ├── parity-tokio-ipc v0.2.0 (*)
│   │       └── tokio v0.1.22 (*)
│   ├── tokio-signal v0.2.9 (*)
│   ├── tokio-threadpool v0.1.18 (*)
│   └── tokio-timer v0.2.13
│       └── tokio v0.1.22 (*)
│       [dev-dependencies]
│       └── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
├── tokio-reactor v0.1.12 (*)
├── tokio-threadpool v0.1.18 (*)
└── tokio-timer v0.2.13 (*)

env_logger v0.6.2
└── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)

env_logger v0.7.1
├── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo) (*)
├── compiletest v0.0.0 (/home/joshua/rustc/src/tools/compiletest)
├── mdbook v0.4.2 (*)
├── miri v0.1.0 (/home/joshua/rustc/src/tools/miri)
├── racer v2.1.37 (*)
├── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
└── rls-rustc v0.6.0 (/home/joshua/rustc/src/tools/rls/rls-rustc) (*)

hex v0.3.2
└── crypto-hash v0.3.4
    └── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo) (*)

hex v0.4.2
├── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo) (*)
└── miri v0.1.0 (/home/joshua/rustc/src/tools/miri)

humantime v1.3.0
├── env_logger v0.6.2 (*)
└── env_logger v0.7.1 (*)

humantime v2.0.1
├── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo) (*)
└── racer v2.1.37 (*)

idna v0.1.5
└── url v1.7.2
    └── jsonrpc-client-transports v14.2.1 (*)

idna v0.2.0
└── url v2.1.1
    ├── ammonia v3.1.0
    │   └── mdbook v0.4.2 (*)
    ├── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo) (*)
    ├── cargo-test-support v0.1.0 (/home/joshua/rustc/src/tools/cargo/crates/cargo-test-support) (*)
    ├── clippy_lints v0.0.212 (/home/joshua/rustc/src/tools/clippy/clippy_lints) (*)
    ├── crates-io v0.31.1 (/home/joshua/rustc/src/tools/cargo/crates/crates-io)
    │   └── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo) (*)
    ├── git2 v0.13.8
    │   ├── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo) (*)
    │   ├── cargo-test-support v0.1.0 (/home/joshua/rustc/src/tools/cargo/crates/cargo-test-support) (*)
    │   └── git2-curl v0.14.0
    │       └── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo) (*)
    ├── git2-curl v0.14.0 (*)
    ├── lsp-types v0.60.0
    │   └── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
    ├── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
    └── rustc-workspace-hack v1.0.0 (/home/joshua/rustc/src/tools/rustc-workspace-hack) (*)

itertools v0.8.2
├── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
├── rls-analysis v0.18.1
│   └── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
├── rustc-ap-rustc_ast_passes v671.0.0 (*)
├── rustc_ast_passes v0.0.0 (/home/joshua/rustc/src/librustc_ast_passes) (*)
├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
├── rustdoc v0.0.0 (/home/joshua/rustc/src/librustdoc) (*)
└── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)

itertools v0.9.0
├── chalk-solve v0.14.0
│   └── rustc_traits v0.0.0 (/home/joshua/rustc/src/librustc_traits) (*)
└── clippy_lints v0.0.212 (/home/joshua/rustc/src/tools/clippy/clippy_lints) (*)

lock_api v0.3.4
├── parking_lot v0.9.0
│   ├── jsonrpc-ipc-server v14.0.3 (*)
│   ├── measureme v0.7.1
│   │   ├── rustc-ap-rustc_data_structures v671.0.0 (*)
│   │   ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
│   │   ├── rustc_data_structures v0.0.0 (/home/joshua/rustc/src/librustc_data_structures) (*)
│   │   └── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
│   └── tokio-reactor v0.1.12 (*)
└── parking_lot v0.10.2
    ├── jsonrpc-pubsub v14.2.0
    │   └── jsonrpc-client-transports v14.2.1 (*)
    ├── rustc-ap-rustc_data_structures v671.0.0 (*)
    ├── rustc_data_structures v0.0.0 (/home/joshua/rustc/src/librustc_data_structures) (*)
    └── rustc_query_system v0.0.0 (/home/joshua/rustc/src/librustc_query_system) (*)

lock_api v0.4.1
└── parking_lot v0.11.0
    ├── once_cell v1.4.1
    │   ├── rustc-ap-rustc_data_structures v671.0.0 (*)
    │   ├── rustc_data_structures v0.0.0 (/home/joshua/rustc/src/librustc_data_structures) (*)
    │   └── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
    └── tracing-subscriber v0.2.11 (*)

parking_lot v0.9.0 (*)

parking_lot v0.10.2 (*)

parking_lot v0.11.0 (*)

parking_lot_core v0.6.2
└── parking_lot v0.9.0 (*)

parking_lot_core v0.7.2
└── parking_lot v0.10.2 (*)

parking_lot_core v0.8.0
└── parking_lot v0.11.0 (*)

percent-encoding v1.0.1
└── url v1.7.2 (*)

percent-encoding v2.1.0
├── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo) (*)
├── crates-io v0.31.1 (/home/joshua/rustc/src/tools/cargo/crates/crates-io) (*)
└── url v2.1.1 (*)

quick-error v1.2.3
└── humantime v1.3.0 (*)

quick-error v2.0.0
└── handlebars v3.4.0
    └── mdbook v0.4.2 (*)

rustc_tools_util v0.2.0 (/home/joshua/rustc/src/tools/clippy/rustc_tools_util)
└── clippy v0.0.212 (/home/joshua/rustc/src/tools/clippy)
[build-dependencies]
└── clippy v0.0.212 (/home/joshua/rustc/src/tools/clippy)

rustc_tools_util v0.2.0
└── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)
[build-dependencies]
└── rls v1.41.0 (/home/joshua/rustc/src/tools/rls)

semver v0.9.0
├── cargo_metadata v0.8.2 (*)
├── cargo_metadata v0.9.1 (*)
├── clippy v0.0.212 (/home/joshua/rustc/src/tools/clippy)
├── clippy_lints v0.0.212 (/home/joshua/rustc/src/tools/clippy/clippy_lints) (*)
└── rustc_version v0.2.3
    └── cargo-miri v0.1.0 (/home/joshua/rustc/src/tools/miri/cargo-miri)
    [build-dependencies]
    ├── parking_lot v0.9.0 (*)
    └── parking_lot_core v0.6.2 (*)
    [dev-dependencies]
    └── miri v0.1.0 (/home/joshua/rustc/src/tools/miri)

semver v0.10.0
└── cargo v0.48.0 (/home/joshua/rustc/src/tools/cargo) (*)

smallvec v0.6.13
├── parking_lot_core v0.6.2 (*)
└── rustc-workspace-hack v1.0.0 (/home/joshua/rustc/src/tools/rustc-workspace-hack) (*)

smallvec v1.4.2
├── clippy_lints v0.0.212 (/home/joshua/rustc/src/tools/clippy/clippy_lints) (*)
├── parking_lot_core v0.7.2 (*)
├── parking_lot_core v0.8.0 (*)
├── rustc-ap-rustc_arena v671.0.0 (*)
├── rustc-ap-rustc_ast v671.0.0 (*)
├── rustc-ap-rustc_data_structures v671.0.0 (*)
├── rustc-ap-rustc_expand v671.0.0 (*)
├── rustc-ap-rustc_serialize v671.0.0
│   ├── rustc-ap-rustc_ast v671.0.0 (*)
│   ├── rustc-ap-rustc_attr v671.0.0 (*)
│   ├── rustc-ap-rustc_data_structures v671.0.0 (*)
│   ├── rustc-ap-rustc_errors v671.0.0 (*)
│   ├── rustc-ap-rustc_expand v671.0.0 (*)
│   ├── rustc-ap-rustc_index v671.0.0
│   │   ├── rustc-ap-rustc_ast v671.0.0 (*)
│   │   ├── rustc-ap-rustc_data_structures v671.0.0 (*)
│   │   ├── rustc-ap-rustc_span v671.0.0 (*)
│   │   └── rustc-ap-rustc_target v671.0.0 (*)
│   ├── rustc-ap-rustc_session v671.0.0 (*)
│   ├── rustc-ap-rustc_span v671.0.0 (*)
│   └── rustc-ap-rustc_target v671.0.0 (*)
├── rustc-workspace-hack v1.0.0 (/home/joshua/rustc/src/tools/rustc-workspace-hack) (*)
├── rustc_apfloat v0.0.0 (/home/joshua/rustc/src/librustc_apfloat)
│   ├── rustc_codegen_ssa v0.0.0 (/home/joshua/rustc/src/librustc_codegen_ssa) (*)
│   ├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
│   ├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
│   └── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
├── rustc_arena v0.0.0 (/home/joshua/rustc/src/librustc_arena) (*)
├── rustc_ast v0.0.0 (/home/joshua/rustc/src/librustc_ast) (*)
├── rustc_ast_lowering v0.0.0 (/home/joshua/rustc/src/librustc_ast_lowering) (*)
├── rustc_builtin_macros v0.0.0 (/home/joshua/rustc/src/librustc_builtin_macros) (*)
├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
├── rustc_data_structures v0.0.0 (/home/joshua/rustc/src/librustc_data_structures) (*)
├── rustc_expand v0.0.0 (/home/joshua/rustc/src/librustc_expand) (*)
├── rustc_hir v0.0.0 (/home/joshua/rustc/src/librustc_hir) (*)
├── rustc_infer v0.0.0 (/home/joshua/rustc/src/librustc_infer) (*)
├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
├── rustc_metadata v0.0.0 (/home/joshua/rustc/src/librustc_metadata) (*)
├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
├── rustc_parse v0.0.0 (/home/joshua/rustc/src/librustc_parse) (*)
├── rustc_query_system v0.0.0 (/home/joshua/rustc/src/librustc_query_system) (*)
├── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
├── rustc_serialize v0.0.0 (/home/joshua/rustc/src/librustc_serialize)
│   ├── rustc_ast v0.0.0 (/home/joshua/rustc/src/librustc_ast) (*)
│   ├── rustc_attr v0.0.0 (/home/joshua/rustc/src/librustc_attr) (*)
│   ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
│   ├── rustc_codegen_ssa v0.0.0 (/home/joshua/rustc/src/librustc_codegen_ssa) (*)
│   ├── rustc_data_structures v0.0.0 (/home/joshua/rustc/src/librustc_data_structures) (*)
│   ├── rustc_driver v0.0.0 (/home/joshua/rustc/src/librustc_driver) (*)
│   ├── rustc_errors v0.0.0 (/home/joshua/rustc/src/librustc_errors) (*)
│   ├── rustc_expand v0.0.0 (/home/joshua/rustc/src/librustc_expand) (*)
│   ├── rustc_hir v0.0.0 (/home/joshua/rustc/src/librustc_hir) (*)
│   ├── rustc_incremental v0.0.0 (/home/joshua/rustc/src/librustc_incremental) (*)
│   ├── rustc_index v0.0.0 (/home/joshua/rustc/src/librustc_index)
│   │   ├── rustc_ast v0.0.0 (/home/joshua/rustc/src/librustc_ast) (*)
│   │   ├── rustc_ast_lowering v0.0.0 (/home/joshua/rustc/src/librustc_ast_lowering) (*)
│   │   ├── rustc_codegen_llvm v0.0.0 (/home/joshua/rustc/src/librustc_codegen_llvm)
│   │   ├── rustc_codegen_ssa v0.0.0 (/home/joshua/rustc/src/librustc_codegen_ssa) (*)
│   │   ├── rustc_data_structures v0.0.0 (/home/joshua/rustc/src/librustc_data_structures) (*)
│   │   ├── rustc_hir v0.0.0 (/home/joshua/rustc/src/librustc_hir) (*)
│   │   ├── rustc_infer v0.0.0 (/home/joshua/rustc/src/librustc_infer) (*)
│   │   ├── rustc_lint v0.0.0 (/home/joshua/rustc/src/librustc_lint) (*)
│   │   ├── rustc_metadata v0.0.0 (/home/joshua/rustc/src/librustc_metadata) (*)
│   │   ├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
│   │   ├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
│   │   ├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
│   │   ├── rustc_passes v0.0.0 (/home/joshua/rustc/src/librustc_passes) (*)
│   │   ├── rustc_query_system v0.0.0 (/home/joshua/rustc/src/librustc_query_system) (*)
│   │   ├── rustc_resolve v0.0.0 (/home/joshua/rustc/src/librustc_resolve) (*)
│   │   ├── rustc_span v0.0.0 (/home/joshua/rustc/src/librustc_span) (*)
│   │   ├── rustc_target v0.0.0 (/home/joshua/rustc/src/librustc_target) (*)
│   │   ├── rustc_trait_selection v0.0.0 (/home/joshua/rustc/src/librustc_trait_selection) (*)
│   │   ├── rustc_traits v0.0.0 (/home/joshua/rustc/src/librustc_traits) (*)
│   │   └── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck) (*)
│   ├── rustc_infer v0.0.0 (/home/joshua/rustc/src/librustc_infer) (*)
│   ├── rustc_interface v0.0.0 (/home/joshua/rustc/src/librustc_interface) (*)
│   ├── rustc_metadata v0.0.0 (/home/joshua/rustc/src/librustc_metadata) (*)
│   ├── rustc_middle v0.0.0 (/home/joshua/rustc/src/librustc_middle) (*)
│   ├── rustc_mir v0.0.0 (/home/joshua/rustc/src/librustc_mir) (*)
│   ├── rustc_mir_build v0.0.0 (/home/joshua/rustc/src/librustc_mir_build) (*)
│   ├── rustc_query_system v0.0.0 (/home/joshua/rustc/src/librustc_query_system) (*)
│   ├── rustc_session v0.0.0 (/home/joshua/rustc/src/librustc_session) (*)
│   ├── rustc_span v0.0.0 (/home/joshua/rustc/src/librustc_span) (*)
│   └── rustc_target v0.0.0 (/home/joshua/rustc/src/librustc_target) (*)
├── rustc_trait_selection v0.0.0 (/home/joshua/rustc/src/librustc_trait_selection) (*)
├── rustc_traits v0.0.0 (/home/joshua/rustc/src/librustc_traits) (*)
├── rustc_typeck v0.0.0 (/home/joshua/rustc/src/librustc_typeck) (*)
└── tracing-subscriber v0.2.11 (*)

term v0.0.0 (/home/joshua/rustc/library/term)
└── test v0.0.0 (/home/joshua/rustc/library/test)

term v0.6.1
├── rustfmt-nightly v1.4.20 (/home/joshua/rustc/src/tools/rustfmt) (*)
└── tester v0.7.0
    └── compiletest_rs v0.5.0
        [dev-dependencies]
        ├── clippy v0.0.212 (/home/joshua/rustc/src/tools/clippy)
        └── miri v0.1.0 (/home/joshua/rustc/src/tools/miri)
    [dev-dependencies]
    └── clippy v0.0.212 (/home/joshua/rustc/src/tools/clippy)

url v1.7.2 (*)

url v2.1.1 (*)

yaml-rust v0.3.5
└── clap v2.33.3 (*)

yaml-rust v0.4.4
├── expand-yaml-anchors v0.1.0 (/home/joshua/rustc/src/tools/expand-yaml-anchors)
└── yaml-merge-keys v0.4.1
    └── expand-yaml-anchors v0.1.0 (/home/joshua/rustc/src/tools/expand-yaml-anchors)
@jyn514 jyn514 added C-cleanup Category: PRs that clean code up or issues documenting cleanup. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) labels Aug 19, 2020
@workingjubilee
Copy link
Contributor

workingjubilee commented Aug 20, 2020

Cargo.lock can appear deceptive because many of these dependencies ultimately are rooted in e.g. RLS. It's not quite a duplicate per se, but I recently audited all the instances of depending on the byteorder crate, for example, and

  1. Most dependents are somewhere in the RLS dependency graph and actually have already moved on, but RLS has not been updated in a while (it is still on tokio v0.1) and so neither has its dependency graph
  2. Of those who are not, they are usually depending on it for 1~3 lines
  3. Of the two who weren't, one was measureme and it wasn't a huge refactoring job to get rid of it, and I PR'd such in Remove byteorder dependency measureme#125
  4. The last instance of it is in regex-automata which is pulled in as part of tracing, and both regex-automata and tracing are looking at 0.2 releases Soon™, so!

smallvec 0.6.13 is actually a similar story as this but actually much more snarled. Its dependency chain looks like

smallvec 0.6.13 <- parking_lot_core 0.6.2 <- parking_lot 0.9.0 <- {
    measureme,
    { jsonrpc-*, tokio-* } <- rls
}

After my PR there, measureme should actually be ready to cut a release which will simplify its position in the dependency graph substantially, but much of the work is going to be in basically reviewing and refactoring RLS. I predict it will actually be easier to remove some non-duplicates.

@matklad
Copy link
Member

matklad commented Sep 2, 2020

Note that tokio is in theory removable from RLS. RLS has relatively modest IPC requirements and should be fine with blocking JSON over stdio. However, this might require writing somewhat more code, as IIRC there are no ready-made libraries for blocking IPC.

@workingjubilee
Copy link
Contributor

workingjubilee commented Sep 3, 2020

I think that could still be easier than recursively updating the community dependencies of jsonrpc-* in RLS. RLS is being moved off-of, and I wouldn't want to break it while it is still technically the main RLS, but the dependency on old versions of futures and tokio means that writing a few extra lines for doing the IPC in a direct blocking fashion and simplifying RLS's overall dep state could be much better. This is because RLS is currently in a position where it's not a simple update for tokio either, since jsonrpc-* hasn't fully moved into newer async / futures code yet.

That said, it's possible paritytech/jsonrpc#485 will resolve fully soon and tokio 0.2 will become usable, and moving to blocking JSON IPC would be less of a win then.

@workingjubilee workingjubilee added the E-help-wanted Call for participation: Help is requested to fix this issue. label Apr 24, 2021
@workingjubilee
Copy link
Contributor

workingjubilee commented Apr 24, 2021

jsonrpc was updated to use a more recent tokio and so now rls pulls in tokio 0.2!
...just in time for tokio 1.0!
...whatever!
We now only have one tokio copy. It doesn't matter that it's not the latest because it's one. 🎉

some losses have happened though, e.g.

[[package]]
name = "cargo_metadata"
version = "0.8.2"

[[package]]
name = "cargo_metadata"
version = "0.11.1"

[[package]]
name = "cargo_metadata"
version = "0.12.0"

#84498 also will pull a few deps out of the tree more-or-less permanently.
#84420 pulled smallvec 0.6 out, and should resolve all instances of arrayvec to 0.7 when the next rustc-ap set gets published.
RLS and rustfmt have accepted PRs to bump itertools to 0.9, so those will be up to date when that propagates.

Getting sha-1's duplicates settled seems challenging if attempted, it works like
mdbook -> handlebars -> pest_derive -> pest_generator -> pest_meta -> sha-1 0.8.2
but that would reduce duplication of block-buffer, digest, and opaque-debug.

@workingjubilee
Copy link
Contributor

Also relevant is that, as far as achieving actual goals like "reducing build/test times for rustc" goes, not all deps are in the root Cargo.lock anymore, as other deps can wind up being built/tested. e.g. Cranelift pulled in its own version of byteorder which I factored out in bytecodealliance/wasmtime#2857, but there's probably others. So "just whatever is duplicated in Cargo.lock" is not our only concern, though it might be more relevant to pursue that in depth in a separate issue.

@bjorn3
Copy link
Member

bjorn3 commented Apr 25, 2021

The rustc_codegen_cranelift Cargo.lock doesn't contain a lot of dependencies (44 of which 7 are only for some targets), some will be removed by bytecodealliance/wasmtime#2730 once it gets merged (6 I believe. basically all proc macros) and the heaviest dependencies are those specific to Cranelift. Disabling support for the jit mode removes a couple more dependencies.

@workingjubilee
Copy link
Contributor

Yeah, I don't think Cranelift is particularly heavy, and once that's rebased and the update propagates, it will be even lighter. Just more of a general note that there's wins (and dependencies) to be found deeper in the tree.

@crlf0710
Copy link
Member

Current status with cargo tree -d --depth 1:

Duplicates block-buffer v0.7.3 └── sha-1 v0.8.2 [build-dependencies] └── pest_meta v2.1.3

block-buffer v0.10.2
└── digest v0.10.2
├── md-5 v0.10.0
├── sha-1 v0.10.0
└── sha2 v0.10.1

cargo-platform v0.1.2 (L:\ThirdParty\rust\src\tools\cargo\crates\cargo-platform)
└── cargo v0.61.0 (L:\ThirdParty\rust\src\tools\cargo)
└── rls v1.41.0 (L:\ThirdParty\rust\src\tools\rls)

cargo-platform v0.1.2
└── cargo_metadata v0.14.0
├── clippy_dev v0.0.1 (L:\ThirdParty\rust\src\tools\clippy\clippy_dev)
├── clippy_lints v0.1.60 (L:\ThirdParty\rust\src\tools\clippy\clippy_lints)
├── rls v1.41.0 (L:\ThirdParty\rust\src\tools\rls)
├── rustfmt-nightly v1.4.38 (L:\ThirdParty\rust\src\tools\rustfmt)
└── tidy v0.1.0 (L:\ThirdParty\rust\src\tools\tidy)
[dev-dependencies]
└── clippy v0.1.60 (L:\ThirdParty\rust\src\tools\clippy)

cfg-if v0.1.10
├── crc32fast v1.2.0
│ ├── flate2 v1.0.16
│ │ [build-dependencies]
│ └── object v0.28.1
├── dirs v2.0.2
│ ├── rustfmt-nightly v1.4.38 (L:\ThirdParty\rust\src\tools\rustfmt) ()
│ └── term v0.6.1
├── flate2 v1.0.16 (
)
├── getrandom v0.1.14
│ ├── rand v0.7.3
│ │ [dev-dependencies]
│ └── rand_core v0.5.1
├── getrandom v0.2.0
│ ├── ahash v0.7.4
│ ├── miri v0.1.0 (L:\ThirdParty\rust\src\tools\miri)
│ └── rand_core v0.6.2
├── panic_abort v0.0.0 (L:\ThirdParty\rust\library\panic_abort)
│ ├── std v0.0.0 (L:\ThirdParty\rust\library\std)
│ └── test v0.0.0 (L:\ThirdParty\rust\library\test)
├── panic_unwind v0.0.0 (L:\ThirdParty\rust\library\panic_unwind)
│ ├── std v0.0.0 (L:\ThirdParty\rust\library\std) ()
│ └── test v0.0.0 (L:\ThirdParty\rust\library\test)
├── rustc_data_structures v0.0.0 (L:\ThirdParty\rust\compiler\rustc_data_structures)
│ ├── rustc_ast v0.0.0 (L:\ThirdParty\rust\compiler\rustc_ast)
│ ├── rustc_ast_lowering v0.0.0 (L:\ThirdParty\rust\compiler\rustc_ast_lowering)
│ ├── rustc_ast_passes v0.0.0 (L:\ThirdParty\rust\compiler\rustc_ast_passes)
│ ├── rustc_attr v0.0.0 (L:\ThirdParty\rust\compiler\rustc_attr)
│ ├── rustc_borrowck v0.0.0 (L:\ThirdParty\rust\compiler\rustc_borrowck)
│ ├── rustc_builtin_macros v0.0.0 (L:\ThirdParty\rust\compiler\rustc_builtin_macros)
│ ├── rustc_codegen_llvm v0.0.0 (L:\ThirdParty\rust\compiler\rustc_codegen_llvm)
│ ├── rustc_codegen_ssa v0.0.0 (L:\ThirdParty\rust\compiler\rustc_codegen_ssa)
│ ├── rustc_const_eval v0.0.0 (L:\ThirdParty\rust\compiler\rustc_const_eval)
│ ├── rustc_driver v0.0.0 (L:\ThirdParty\rust\compiler\rustc_driver)
│ ├── rustc_errors v0.0.0 (L:\ThirdParty\rust\compiler\rustc_errors)
│ ├── rustc_expand v0.0.0 (L:\ThirdParty\rust\compiler\rustc_expand)
│ ├── rustc_feature v0.0.0 (L:\ThirdParty\rust\compiler\rustc_feature)
│ ├── rustc_hir v0.0.0 (L:\ThirdParty\rust\compiler\rustc_hir)
│ ├── rustc_incremental v0.0.0 (L:\ThirdParty\rust\compiler\rustc_incremental)
│ ├── rustc_infer v0.0.0 (L:\ThirdParty\rust\compiler\rustc_infer)
│ ├── rustc_interface v0.0.0 (L:\ThirdParty\rust\compiler\rustc_interface)
│ ├── rustc_lint v0.0.0 (L:\ThirdParty\rust\compiler\rustc_lint)
│ ├── rustc_lint_defs v0.0.0 (L:\ThirdParty\rust\compiler\rustc_lint_defs)
│ ├── rustc_metadata v0.0.0 (L:\ThirdParty\rust\compiler\rustc_metadata)
│ ├── rustc_middle v0.0.0 (L:\ThirdParty\rust\compiler\rustc_middle)
│ ├── rustc_mir_build v0.0.0 (L:\ThirdParty\rust\compiler\rustc_mir_build)
│ ├── rustc_mir_dataflow v0.0.0 (L:\ThirdParty\rust\compiler\rustc_mir_dataflow)
│ ├── rustc_mir_transform v0.0.0 (L:\ThirdParty\rust\compiler\rustc_mir_transform)
│ ├── rustc_monomorphize v0.0.0 (L:\ThirdParty\rust\compiler\rustc_monomorphize)
│ ├── rustc_parse v0.0.0 (L:\ThirdParty\rust\compiler\rustc_parse)
│ ├── rustc_passes v0.0.0 (L:\ThirdParty\rust\compiler\rustc_passes)
│ ├── rustc_privacy v0.0.0 (L:\ThirdParty\rust\compiler\rustc_privacy)
│ ├── rustc_query_impl v0.0.0 (L:\ThirdParty\rust\compiler\rustc_query_impl)
│ ├── rustc_query_system v0.0.0 (L:\ThirdParty\rust\compiler\rustc_query_system)
│ ├── rustc_resolve v0.0.0 (L:\ThirdParty\rust\compiler\rustc_resolve)
│ ├── rustc_save_analysis v0.0.0 (L:\ThirdParty\rust\compiler\rustc_save_analysis)
│ ├── rustc_session v0.0.0 (L:\ThirdParty\rust\compiler\rustc_session)
│ ├── rustc_span v0.0.0 (L:\ThirdParty\rust\compiler\rustc_span)
│ │ [dev-dependencies]
│ ├── rustc_symbol_mangling v0.0.0 (L:\ThirdParty\rust\compiler\rustc_symbol_mangling)
│ ├── rustc_target v0.0.0 (L:\ThirdParty\rust\compiler\rustc_target)
│ │ [dev-dependencies]
│ ├── rustc_trait_selection v0.0.0 (L:\ThirdParty\rust\compiler\rustc_trait_selection)
│ ├── rustc_traits v0.0.0 (L:\ThirdParty\rust\compiler\rustc_traits)
│ ├── rustc_ty_utils v0.0.0 (L:\ThirdParty\rust\compiler\rustc_ty_utils)
│ ├── rustc_type_ir v0.0.0 (L:\ThirdParty\rust\compiler\rustc_type_ir)
│ └── rustc_typeck v0.0.0 (L:\ThirdParty\rust\compiler\rustc_typeck)
├── rustc_span v0.0.0 (L:\ThirdParty\rust\compiler\rustc_span) (
)
├── std v0.0.0 (L:\ThirdParty\rust\library\std) ()
├── std_detect v0.1.5 (L:\ThirdParty\rust\library\stdarch\crates\std_detect)
│ └── std v0.0.0 (L:\ThirdParty\rust\library\std) (
)
├── test v0.0.0 (L:\ThirdParty\rust\library\test)
└── unwind v0.0.0 (L:\ThirdParty\rust\library\unwind)
├── panic_unwind v0.0.0 (L:\ThirdParty\rust\library\panic_unwind) ()
└── std v0.0.0 (L:\ThirdParty\rust\library\std) (
)

cfg-if v1.0.0
├── crossbeam-channel v0.5.2
│ ├── rayon-core v1.9.1
│ └── rls v1.41.0 (L:\ThirdParty\rust\src\tools\rls)
├── crossbeam-deque v0.8.1
│ ├── rayon v1.5.1
│ ├── rayon-core v1.9.1 ()
│ ├── rustc-rayon v0.3.2
│ └── rustc-rayon-core v0.3.2
├── crossbeam-epoch v0.9.6
│ └── crossbeam-deque v0.8.1 (
)
├── crossbeam-utils v0.8.6
│ ├── cargo v0.61.0 (L:\ThirdParty\rust\src\tools\cargo) ()
│ ├── crossbeam-channel v0.5.2 (
)
│ ├── crossbeam-deque v0.8.1 ()
│ ├── crossbeam-epoch v0.9.6 (
)
│ ├── ignore v0.4.17
│ ├── rayon-core v1.9.1 ()
│ ├── rustc-rayon-core v0.3.2 (
)
│ ├── rustc-workspace-hack v1.0.0 (L:\ThirdParty\rust\src\tools\rustc-workspace-hack)
│ │ [dev-dependencies]
│ └── tidy v0.1.0 (L:\ThirdParty\rust\src\tools\tidy) ()
├── dirs-next v2.0.0
│ └── term v0.7.0
├── filetime v0.2.14
│ ├── bootstrap v0.0.0 (L:\ThirdParty\rust\src\bootstrap)
│ ├── cargo v0.61.0 (L:\ThirdParty\rust\src\tools\cargo) (
)
│ ├── cargo-test-support v0.1.0 (L:\ThirdParty\rust\src\tools\cargo\crates\cargo-test-support)
│ │ [dev-dependencies]
│ ├── cargo-util v0.1.2 (L:\ThirdParty\rust\src\tools\cargo\crates\cargo-util)
│ ├── compiletest_rs v0.7.1
│ │ [dev-dependencies]
│ └── tar v0.4.37
│ [build-dependencies]
│ [dev-dependencies]
│ └── clippy v0.1.60 (L:\ThirdParty\rust\src\tools\clippy)
├── instant v0.1.12
│ ├── parking_lot v0.11.2
│ │ [dev-dependencies]
│ └── parking_lot_core v0.8.5
├── log v0.4.14
│ ├── cargo v0.61.0 (L:\ThirdParty\rust\src\tools\cargo) ()
│ ├── cargo-util v0.1.2 (L:\ThirdParty\rust\src\tools\cargo\crates\cargo-util) (
)
│ ├── compiletest_rs v0.7.1 ()
│ ├── ena v0.14.0
│ ├── env_logger v0.7.1
│ ├── env_logger v0.8.4
│ ├── env_logger v0.9.0
│ │ [dev-dependencies]
│ ├── git2 v0.13.23
│ ├── git2-curl v0.14.1
│ ├── globset v0.4.5
│ ├── handlebars v4.1.0
│ ├── html5ever v0.25.1
│ ├── ignore v0.4.17 (
)
│ ├── jsonpath_lib v0.2.6
│ ├── jsonrpc-client-transports v18.0.0
│ ├── jsonrpc-core v18.0.0
│ ├── jsonrpc-ipc-server v18.0.0
│ ├── jsonrpc-pubsub v18.0.0
│ ├── jsonrpc-server-utils v18.0.0
│ ├── markup5ever v0.10.1
│ ├── mdbook v0.4.15
│ ├── measureme v9.1.2
│ ├── measureme v10.0.0
│ ├── mio v0.7.14
│ ├── miri v0.1.0 (L:\ThirdParty\rust\src\tools\miri)
│ ├── os_info v3.0.7
│ ├── parity-tokio-ipc v0.9.0
│ ├── polonius-engine v0.13.0
│ ├── racer v2.2.0
│ ├── rls v1.41.0 (L:\ThirdParty\rust\src\tools\rls)
│ ├── rls-analysis v0.18.2 (L:\ThirdParty\rust\src\tools\rls\rls-analysis)
│ ├── rls-rustc v0.6.0 (L:\ThirdParty\rust\src\tools\rls\rls-rustc)
│ ├── rls-vfs v0.8.0
│ ├── rustfix v0.5.1
│ ├── rustfix v0.6.0
│ ├── rustfmt-nightly v1.4.38 (L:\ThirdParty\rust\src\tools\rustfmt) ()
│ ├── tokio-util v0.6.7
│ │ [dev-dependencies]
│ ├── tracing-log v0.1.2
│ └── xml5ever v0.16.1
├── odht v0.3.1
│ ├── rustc_hir v0.0.0 (L:\ThirdParty\rust\compiler\rustc_hir) (
)
│ └── rustc_metadata v0.0.0 (L:\ThirdParty\rust\compiler\rustc_metadata) ()
├── parking_lot_core v0.8.5 (
)
├── sha-1 v0.10.0 ()
├── sha2 v0.10.1 (
)
├── stacker v0.1.14
│ └── rustc_data_structures v0.0.0 (L:\ThirdParty\rust\compiler\rustc_data_structures) ()
├── tempfile v3.2.0
│ ├── cargo v0.61.0 (L:\ThirdParty\rust\src\tools\cargo) (
)
│ ├── cargo-util v0.1.2 (L:\ThirdParty\rust\src\tools\cargo\crates\cargo-util) ()
│ ├── compiletest_rs v0.7.1 (
)
│ ├── lint-docs v0.1.0 (L:\ThirdParty\rust\src\tools\lint-docs)
│ ├── mdbook v0.4.15 ()
│ ├── rustc_codegen_ssa v0.0.0 (L:\ThirdParty\rust\compiler\rustc_codegen_ssa) (
)
│ ├── rustc_data_structures v0.0.0 (L:\ThirdParty\rust\compiler\rustc_data_structures) ()
│ ├── rustc_interface v0.0.0 (L:\ThirdParty\rust\compiler\rustc_interface) (
)
│ └── rustdoc v0.0.0 (L:\ThirdParty\rust\src\librustdoc)
│ [dev-dependencies]
│ └── rls v1.41.0 (L:\ThirdParty\rust\src\tools\rls)
├── tester v0.9.0
│ └── compiletest_rs v0.7.1 ()
│ [dev-dependencies]
│ └── clippy v0.1.60 (L:\ThirdParty\rust\src\tools\clippy)
└── tracing v0.1.29
├── chalk-engine v0.76.0
├── chalk-solve v0.76.0
├── compiletest v0.0.0 (L:\ThirdParty\rust\src\tools\compiletest)
├── rustc_ast v0.0.0 (L:\ThirdParty\rust\compiler\rustc_ast) (
)
├── rustc_ast_lowering v0.0.0 (L:\ThirdParty\rust\compiler\rustc_ast_lowering) ()
├── rustc_ast_passes v0.0.0 (L:\ThirdParty\rust\compiler\rustc_ast_passes) (
)
├── rustc_borrowck v0.0.0 (L:\ThirdParty\rust\compiler\rustc_borrowck) ()
├── rustc_builtin_macros v0.0.0 (L:\ThirdParty\rust\compiler\rustc_builtin_macros) (
)
├── rustc_codegen_llvm v0.0.0 (L:\ThirdParty\rust\compiler\rustc_codegen_llvm)
├── rustc_codegen_ssa v0.0.0 (L:\ThirdParty\rust\compiler\rustc_codegen_ssa) ()
├── rustc_const_eval v0.0.0 (L:\ThirdParty\rust\compiler\rustc_const_eval) (
)
├── rustc_data_structures v0.0.0 (L:\ThirdParty\rust\compiler\rustc_data_structures) ()
├── rustc_driver v0.0.0 (L:\ThirdParty\rust\compiler\rustc_driver) (
)
├── rustc_errors v0.0.0 (L:\ThirdParty\rust\compiler\rustc_errors) ()
├── rustc_expand v0.0.0 (L:\ThirdParty\rust\compiler\rustc_expand) (
)
├── rustc_hir v0.0.0 (L:\ThirdParty\rust\compiler\rustc_hir) ()
├── rustc_incremental v0.0.0 (L:\ThirdParty\rust\compiler\rustc_incremental) (
)
├── rustc_infer v0.0.0 (L:\ThirdParty\rust\compiler\rustc_infer) ()
├── rustc_interface v0.0.0 (L:\ThirdParty\rust\compiler\rustc_interface) (
)
├── rustc_lint v0.0.0 (L:\ThirdParty\rust\compiler\rustc_lint) ()
├── rustc_log v0.0.0 (L:\ThirdParty\rust\compiler\rustc_log)
├── rustc_metadata v0.0.0 (L:\ThirdParty\rust\compiler\rustc_metadata) (
)
├── rustc_middle v0.0.0 (L:\ThirdParty\rust\compiler\rustc_middle) ()
├── rustc_mir_build v0.0.0 (L:\ThirdParty\rust\compiler\rustc_mir_build) (
)
├── rustc_mir_dataflow v0.0.0 (L:\ThirdParty\rust\compiler\rustc_mir_dataflow) ()
├── rustc_mir_transform v0.0.0 (L:\ThirdParty\rust\compiler\rustc_mir_transform) (
)
├── rustc_monomorphize v0.0.0 (L:\ThirdParty\rust\compiler\rustc_monomorphize) ()
├── rustc_parse v0.0.0 (L:\ThirdParty\rust\compiler\rustc_parse) (
)
├── rustc_passes v0.0.0 (L:\ThirdParty\rust\compiler\rustc_passes) ()
├── rustc_privacy v0.0.0 (L:\ThirdParty\rust\compiler\rustc_privacy) (
)
├── rustc_query_system v0.0.0 (L:\ThirdParty\rust\compiler\rustc_query_system) ()
├── rustc_resolve v0.0.0 (L:\ThirdParty\rust\compiler\rustc_resolve) (
)
├── rustc_save_analysis v0.0.0 (L:\ThirdParty\rust\compiler\rustc_save_analysis) ()
├── rustc_session v0.0.0 (L:\ThirdParty\rust\compiler\rustc_session) (
)
├── rustc_span v0.0.0 (L:\ThirdParty\rust\compiler\rustc_span) ()
├── rustc_symbol_mangling v0.0.0 (L:\ThirdParty\rust\compiler\rustc_symbol_mangling) (
)
├── rustc_target v0.0.0 (L:\ThirdParty\rust\compiler\rustc_target) ()
├── rustc_trait_selection v0.0.0 (L:\ThirdParty\rust\compiler\rustc_trait_selection) (
)
├── rustc_traits v0.0.0 (L:\ThirdParty\rust\compiler\rustc_traits) ()
├── rustc_ty_utils v0.0.0 (L:\ThirdParty\rust\compiler\rustc_ty_utils) (
)
├── rustc_typeck v0.0.0 (L:\ThirdParty\rust\compiler\rustc_typeck) ()
├── rustdoc v0.0.0 (L:\ThirdParty\rust\src\librustdoc) (
)
├── thorin-dwp v0.2.0
└── tracing-subscriber v0.3.3

clap v2.34.0
├── clippy_dev v0.0.1 (L:\ThirdParty\rust\src\tools\clippy\clippy_dev)
├── installer v0.0.0 (L:\ThirdParty\rust\src\tools\rust-installer)
├── mdbook v0.4.15 ()
├── racer v2.2.0 (
)
├── rustbook v0.1.0 (L:\ThirdParty\rust\src\tools\rustbook)
└── structopt v0.3.25
└── rustfmt-nightly v1.4.38 (L:\ThirdParty\rust\src\tools\rustfmt) (*)

clap v3.0.13
└── cargo v0.61.0 (L:\ThirdParty\rust\src\tools\cargo) (*)

digest v0.8.1
└── sha-1 v0.8.2 (*)

digest v0.10.2 (*)

env_logger v0.7.1 (*)

env_logger v0.8.4 (*)

env_logger v0.9.0 (*)

futures v0.1.31
└── futures-util v0.3.19
├── futures v0.3.19
│ [dev-dependencies]
├── futures-executor v0.3.19
└── jsonrpc-core v18.0.0 (*)

futures v0.3.19 (*)

generic-array v0.12.4
├── block-buffer v0.7.3 ()
└── digest v0.8.1 (
)

generic-array v0.14.4
├── block-buffer v0.10.2 ()
└── crypto-common v0.1.2
└── digest v0.10.2 (
)

getrandom v0.1.14 (*)

getrandom v0.2.0 (*)

hashbrown v0.11.2
├── indexmap v1.8.0
│ ├── bump-stage0 v0.1.0 (L:\ThirdParty\rust\src\tools\bump-stage0)
│ ├── chalk-solve v0.76.0 ()
│ ├── clap v3.0.13 (
)
│ ├── gimli v0.26.1
│ ├── object v0.28.1 ()
│ ├── petgraph v0.5.1
│ ├── rustc_data_structures v0.0.0 (L:\ThirdParty\rust\compiler\rustc_data_structures) (
)
│ ├── rustc_serialize v0.0.0 (L:\ThirdParty\rust\compiler\rustc_serialize)
│ ├── serde_json v1.0.59
│ │ [dev-dependencies]
│ └── toml_edit v0.13.4
├── object v0.28.1 ()
└── thorin-dwp v0.2.0 (
)

hashbrown v0.12.0
└── std v0.0.0 (L:\ThirdParty\rust\library\std) (*)

hex v0.3.2
└── crypto-hash v0.3.4
└── cargo-util v0.1.2 (L:\ThirdParty\rust\src\tools\cargo\crates\cargo-util) (*)

hex v0.4.2
├── build-manifest v0.1.0 (L:\ThirdParty\rust\src\tools\build-manifest)
├── cargo v0.61.0 (L:\ThirdParty\rust\src\tools\cargo) ()
├── cargo-util v0.1.2 (L:\ThirdParty\rust\src\tools\cargo\crates\cargo-util) (
)
└── miri v0.1.0 (L:\ThirdParty\rust\src\tools\miri)

humantime v1.3.0
└── env_logger v0.7.1 (*)

humantime v2.0.1
├── cargo v0.61.0 (L:\ThirdParty\rust\src\tools\cargo) ()
├── env_logger v0.8.4 (
)
├── env_logger v0.9.0 ()
└── racer v2.2.0 (
)

idna v0.1.5
└── url v1.7.2
└── jsonrpc-client-transports v18.0.0 (*)

idna v0.2.0
└── url v2.2.2
├── ammonia v3.1.3
├── cargo v0.61.0 (L:\ThirdParty\rust\src\tools\cargo) ()
├── cargo-test-support v0.1.0 (L:\ThirdParty\rust\src\tools\cargo\crates\cargo-test-support) (
)
├── clippy_lints v0.1.60 (L:\ThirdParty\rust\src\tools\clippy\clippy_lints) ()
├── crates-io v0.34.0 (L:\ThirdParty\rust\src\tools\cargo\crates\crates-io)
├── git2 v0.13.23 (
)
├── git2-curl v0.14.1 ()
├── lsp-types v0.60.0
├── rls v1.41.0 (L:\ThirdParty\rust\src\tools\rls)
└── rustc-workspace-hack v1.0.0 (L:\ThirdParty\rust\src\tools\rustc-workspace-hack) (
)

itertools v0.9.0
└── rustfmt-nightly v1.4.38 (L:\ThirdParty\rust\src\tools\rustfmt) (*)

itertools v0.10.1
├── cargo v0.61.0 (L:\ThirdParty\rust\src\tools\cargo) ()
├── cargo-test-support v0.1.0 (L:\ThirdParty\rust\src\tools\cargo\crates\cargo-test-support) (
)
├── chalk-solve v0.76.0 ()
├── clippy_dev v0.0.1 (L:\ThirdParty\rust\src\tools\clippy\clippy_dev)
├── clippy_lints v0.1.60 (L:\ThirdParty\rust\src\tools\clippy\clippy_lints) (
)
├── rls v1.41.0 (L:\ThirdParty\rust\src\tools\rls)
├── rls-analysis v0.18.2 (L:\ThirdParty\rust\src\tools\rls\rls-analysis) ()
├── rustc_ast_passes v0.0.0 (L:\ThirdParty\rust\compiler\rustc_ast_passes) (
)
├── rustc_borrowck v0.0.0 (L:\ThirdParty\rust\compiler\rustc_borrowck) ()
├── rustc_codegen_ssa v0.0.0 (L:\ThirdParty\rust\compiler\rustc_codegen_ssa) (
)
├── rustc_mir_transform v0.0.0 (L:\ThirdParty\rust\compiler\rustc_mir_transform) ()
├── rustdoc v0.0.0 (L:\ThirdParty\rust\src\librustdoc) (
)
└── toml_edit v0.13.4 (*)
[dev-dependencies]
└── clippy v0.1.60 (L:\ThirdParty\rust\src\tools\clippy)

measureme v9.1.2 (*)

measureme v10.0.0 (*)

percent-encoding v1.0.1
└── url v1.7.2 (*)

percent-encoding v2.1.0
├── cargo v0.61.0 (L:\ThirdParty\rust\src\tools\cargo) ()
├── crates-io v0.34.0 (L:\ThirdParty\rust\src\tools\cargo\crates\crates-io) (
)
├── form_urlencoded v1.0.1
│ └── url v2.2.2 ()
└── url v2.2.2 (
)

quick-error v1.2.3
└── humantime v1.3.0 (*)

quick-error v2.0.0
└── handlebars v4.1.0 (*)

rand v0.7.3 (*)

rand v0.8.4
├── miri v0.1.0 (L:\ThirdParty\rust\src\tools\miri)
├── rls v1.41.0 (L:\ThirdParty\rust\src\tools\rls)
├── rls-rustc v0.6.0 (L:\ThirdParty\rust\src\tools\rls\rls-rustc) ()
├── rustc_incremental v0.0.0 (L:\ThirdParty\rust\compiler\rustc_incremental) (
)
├── rustc_middle v0.0.0 (L:\ThirdParty\rust\compiler\rustc_middle) ()
└── tempfile v3.2.0 (
)

rand_chacha v0.2.2
└── rand v0.7.3 (*)

rand_chacha v0.3.0
└── rand v0.8.4 (*)

rand_core v0.5.1 (*)

rand_core v0.6.2 (*)

rand_xoshiro v0.4.0
└── im-rc v15.0.0
└── cargo v0.61.0 (L:\ThirdParty\rust\src\tools\cargo) (*)

rand_xoshiro v0.6.0
└── rustc_middle v0.0.0 (L:\ThirdParty\rust\compiler\rustc_middle) (*)

rustc_tools_util v0.2.0 (L:\ThirdParty\rust\src\tools\clippy\rustc_tools_util)
└── clippy v0.1.60 (L:\ThirdParty\rust\src\tools\clippy)
[build-dependencies]
└── clippy v0.1.60 (L:\ThirdParty\rust\src\tools\clippy)

rustc_tools_util v0.2.0
└── rls v1.41.0 (L:\ThirdParty\rust\src\tools\rls)
[build-dependencies]
└── rls v1.41.0 (L:\ThirdParty\rust\src\tools\rls)

rustfix v0.5.1 (*)

rustfix v0.6.0 (*)

sha-1 v0.8.2 (*)

sha-1 v0.10.0 (*)

strsim v0.8.0
└── clap v2.34.0 (*)

strsim v0.10.0
└── clap v3.0.13 (*)

term v0.6.1 (*)

term v0.7.0 (*)

textwrap v0.11.0
└── clap v2.34.0 (*)

textwrap v0.14.2
└── clap v3.0.13 (*)

url v1.7.2 (*)

url v2.2.2 (*)

yaml-rust v0.3.5
└── clap v2.34.0 (*)

yaml-rust v0.4.4
├── expand-yaml-anchors v0.1.0 (L:\ThirdParty\rust\src\tools\expand-yaml-anchors)
└── yaml-merge-keys v0.4.1
└── expand-yaml-anchors v0.1.0 (L:\ThirdParty\rust\src\tools\expand-yaml-anchors)

@Milo123459
Copy link
Contributor

@rustbot claim

@Milo123459
Copy link
Contributor

I think just updating with cargo update actually might be the best course of action here. It seems to remove quite a few duplicates.

@Milo123459 Milo123459 removed their assignment Jul 9, 2022
@michaelciraci
Copy link
Contributor

@rustbot claim

TaKO8Ki added a commit to TaKO8Ki/rust that referenced this issue Jan 21, 2024
…trieb

Remove duplicate dependencies for rustc

Removed several duplicates for rustc: rust-lang#75704

Several duplicates still exist, but an external library would have to be updated first.

These are the duplicate dependencies still outstanding:
```
annotate-snippets v0.9.1
annotate-snippets v0.10.1

bitflags v1.3.2
bitflags v2.4.1

cargo_metadata v0.15.4
cargo_metadata v0.18.0

darling v0.14.4
darling v0.20.3

darling_core v0.14.4
darling_core v0.20.3

darling_macro v0.14.4
darling_macro v0.20.3

regex-automata v0.1.10
regex-automata v0.2.0
regex-automata v0.4.3

regex-syntax v0.6.29
regex-syntax v0.7.2
regex-syntax v0.8.2

self_cell v0.10.3
self_cell v1.0.2

syn v1.0.109
syn v2.0.32

toml v0.5.11
toml v0.7.5
```

It should not be hard to consolidate these remaining duplicate dependencies, but it will take time as it would be pull requests for external crates.

r? `@jyn514`
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this issue Jan 22, 2024
…trieb

Remove duplicate dependencies for rustc

Removed several duplicates for rustc: rust-lang#75704

Several duplicates still exist, but an external library would have to be updated first.

These are the duplicate dependencies still outstanding:
```
annotate-snippets v0.9.1
annotate-snippets v0.10.1

bitflags v1.3.2
bitflags v2.4.1

cargo_metadata v0.15.4
cargo_metadata v0.18.0

darling v0.14.4
darling v0.20.3

darling_core v0.14.4
darling_core v0.20.3

darling_macro v0.14.4
darling_macro v0.20.3

regex-automata v0.1.10
regex-automata v0.2.0
regex-automata v0.4.3

regex-syntax v0.6.29
regex-syntax v0.7.2
regex-syntax v0.8.2

self_cell v0.10.3
self_cell v1.0.2

syn v1.0.109
syn v2.0.32

toml v0.5.11
toml v0.7.5
```

It should not be hard to consolidate these remaining duplicate dependencies, but it will take time as it would be pull requests for external crates.

r? `@jyn514`
fmease added a commit to fmease/rust that referenced this issue Jan 23, 2024
…trieb

Remove duplicate dependencies for rustc

Removed several duplicates for rustc: rust-lang#75704

Several duplicates still exist, but an external library would have to be updated first.

These are the duplicate dependencies still outstanding:
```
annotate-snippets v0.9.1
annotate-snippets v0.10.1

bitflags v1.3.2
bitflags v2.4.1

cargo_metadata v0.15.4
cargo_metadata v0.18.0

darling v0.14.4
darling v0.20.3

darling_core v0.14.4
darling_core v0.20.3

darling_macro v0.14.4
darling_macro v0.20.3

regex-automata v0.1.10
regex-automata v0.2.0
regex-automata v0.4.3

regex-syntax v0.6.29
regex-syntax v0.7.2
regex-syntax v0.8.2

self_cell v0.10.3
self_cell v1.0.2

syn v1.0.109
syn v2.0.32

toml v0.5.11
toml v0.7.5
```

It should not be hard to consolidate these remaining duplicate dependencies, but it will take time as it would be pull requests for external crates.

r? ``@jyn514``
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-cleanup Category: PRs that clean code up or issues documenting cleanup. E-help-wanted Call for participation: Help is requested to fix this issue. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)
Projects
None yet
Development

No branches or pull requests

7 participants