[workspace] resolver = "1" members = [ "compiler/rustc", "library/std", "library/sysroot", "src/etc/test-float-parse", "src/rustdoc-json-types", "src/tools/build_helper", "src/tools/cargotest", "src/tools/clippy", "src/tools/clippy/clippy_dev", "src/tools/compiletest", "src/tools/run-make-support", "src/tools/error_index_generator", "src/tools/linkchecker", "src/tools/lint-docs", "src/tools/miropt-test-tools", "src/tools/rustbook", "src/tools/unstable-book-gen", "src/tools/tidy", "src/tools/tier-check", "src/tools/build-manifest", "src/tools/remote-test-client", "src/tools/remote-test-server", "src/tools/rust-installer", "src/tools/rustdoc", "src/tools/rls", "src/tools/rustfmt", "src/tools/miri", "src/tools/miri/cargo-miri", "src/tools/rustdoc-themes", "src/tools/unicode-table-generator", "src/tools/jsondocck", "src/tools/jsondoclint", "src/tools/llvm-bitcode-linker", "src/tools/html-checker", "src/tools/bump-stage0", "src/tools/replace-version-placeholder", "src/tools/lld-wrapper", "src/tools/collect-license-metadata", "src/tools/generate-copyright", "src/tools/suggest-tests", "src/tools/generate-windows-sys", "src/tools/rustdoc-gui-test", "src/tools/opt-dist", "src/tools/coverage-dump", "src/tools/rustc-perf-wrapper", "src/tools/wasm-component-ld", ] exclude = [ "build", "compiler/rustc_codegen_cranelift", "compiler/rustc_codegen_gcc", "src/bootstrap", "tests/rustdoc-gui", # HACK(eddyb) This hardcodes the fact that our CI uses `/checkout/obj`. "obj", # The `x` binary is a thin wrapper that calls `x.py`, which initializes # submodules, before which workspace members cannot be invoked because # not all `Cargo.toml` files are available, so we exclude the `x` binary, # so it can be invoked before the current checkout is set up. "src/tools/x", # stdarch has its own Cargo workspace "library/stdarch", ] [profile.release.package.compiler_builtins] # For compiler-builtins we always use a high number of codegen units. # The goal here is to place every single intrinsic into its own object # file to avoid symbol clashes with the system libgcc if possible. Note # that this number doesn't actually produce this many object files, we # just don't create more than this number of object files. # # It's a bit of a bummer that we have to pass this here, unfortunately. # Ideally this would be specified through an env var to Cargo so Cargo # knows how many CGUs are for this specific crate, but for now # per-crate configuration isn't specifiable in the environment. codegen-units = 10000 [profile.release.package.rustc-rayon-core] # The rustc fork of Rayon has deadlock detection code which intermittently # causes overflows in the CI (see https://github.com/rust-lang/rust/issues/90227) # so we turn overflow checks off for now. # FIXME: This workaround should be removed once #90227 is fixed. overflow-checks = false # These dependencies of the standard library implement symbolication for # backtraces on most platforms. Their debuginfo causes both linking to be slower # (more data to chew through) and binaries to be larger without really all that # much benefit. This section turns them all to down to have no debuginfo which # helps to improve link times a little bit. [profile.release.package] addr2line.debug = 0 adler.debug = 0 gimli.debug = 0 miniz_oxide.debug = 0 object.debug = 0 rustc-demangle.debug = 0 # These are very thin wrappers around executing lld with the right binary name. # Basically nothing within them can go wrong without having been explicitly logged anyway. # We ship these in every rustc tarball and even after compression they add up # to around 0.6MB of data every user needs to download (and 15MB on disk). [profile.release.package.lld-wrapper] debug = 0 strip = true [profile.release.package.wasm-component-ld-wrapper] debug = 0 strip = true # Bigint libraries are slow without optimization, speed up testing [profile.dev.package.test-float-parse] opt-level = 3 # Speed up the binary as much as possible [profile.release.package.test-float-parse] opt-level = 3 codegen-units = 1 # FIXME: LTO cannot be enabled for binaries in a workspace # # lto = true [patch.crates-io] # See comments in `library/rustc-std-workspace-core/README.md` for what's going on # here rustc-std-workspace-core = { path = 'library/rustc-std-workspace-core' } rustc-std-workspace-alloc = { path = 'library/rustc-std-workspace-alloc' } rustc-std-workspace-std = { path = 'library/rustc-std-workspace-std' }