diff --git a/README.md b/README.md index 611260470f12b..eaa8cb1270c38 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,8 @@ standard library, and documentation. ## Why Rust? +PERF! PERF! PERF! + - **Performance:** Fast and memory-efficient, suitable for critical services, embedded devices, and easily integrated with other languages. - **Reliability:** Our rich type system and ownership model ensure memory and thread safety, reducing bugs at compile-time. diff --git a/src/bootstrap/src/core/build_steps/check.rs b/src/bootstrap/src/core/build_steps/check.rs index 567416d079b12..125a598b0044b 100644 --- a/src/bootstrap/src/core/build_steps/check.rs +++ b/src/bootstrap/src/core/build_steps/check.rs @@ -116,7 +116,7 @@ impl Step for Std { ); let stamp = build_stamp::libstd_stamp(builder, compiler, target).with_prefix("check"); - run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], true, false); + run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], false); // We skip populating the sysroot in non-zero stage because that'll lead // to rlib/rmeta conflicts if std gets built during this session. @@ -165,7 +165,7 @@ impl Step for Std { let stamp = build_stamp::libstd_stamp(builder, compiler, target).with_prefix("check-test"); let _guard = builder.msg_check("library test/bench/example targets", target, Some(stage)); - run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], true, false); + run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], false); } } @@ -252,7 +252,7 @@ impl Step for Rustc { let stamp = build_stamp::librustc_stamp(builder, compiler, target).with_prefix("check"); - run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], true, false); + run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], false); let libdir = builder.sysroot_target_libdir(compiler, target); let hostdir = builder.sysroot_target_libdir(compiler, compiler.host); @@ -313,7 +313,7 @@ impl Step for CodegenBackend { let stamp = build_stamp::codegen_backend_stamp(builder, compiler, target, backend) .with_prefix("check"); - run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], true, false); + run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], false); } } @@ -371,7 +371,7 @@ impl Step for RustAnalyzer { .with_prefix("rust-analyzer-check"); let _guard = builder.msg_check("rust-analyzer artifacts", target, None); - run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], true, false); + run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], false); } } @@ -430,7 +430,7 @@ impl Step for Compiletest { .with_prefix("compiletest-check"); let _guard = builder.msg_check("compiletest artifacts", self.target, None); - run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], true, false); + run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], false); } } @@ -504,7 +504,7 @@ fn run_tool_check_step( .with_prefix(&format!("{}-check", step_type_name.to_lowercase())); let _guard = builder.msg_check(format!("{display_name} artifacts"), target, None); - run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], true, false); + run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], false); } tool_check_step!(Rustdoc { path: "src/tools/rustdoc", alt_path: "src/librustdoc" }); @@ -589,6 +589,6 @@ impl Step for CoverageDump { &compiler.host, &target, ); - run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], true, false); + run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], false); } } diff --git a/src/bootstrap/src/core/build_steps/clippy.rs b/src/bootstrap/src/core/build_steps/clippy.rs index 1e44b5b67a44c..31f69e3f957c8 100644 --- a/src/bootstrap/src/core/build_steps/clippy.rs +++ b/src/bootstrap/src/core/build_steps/clippy.rs @@ -168,7 +168,6 @@ impl Step for Std { lint_args(builder, &self.config, IGNORED_RULES_FOR_STD_AND_RUSTC), &build_stamp::libstd_stamp(builder, compiler, target), vec![], - true, false, ); } @@ -246,7 +245,6 @@ impl Step for Rustc { lint_args(builder, &self.config, IGNORED_RULES_FOR_STD_AND_RUSTC), &build_stamp::librustc_stamp(builder, compiler, target), vec![], - true, false, ); } @@ -320,7 +318,6 @@ macro_rules! lint_any { lint_args(builder, &self.config, &[]), &stamp, vec![], - true, false, ); } diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs index 84064150738f5..36678dafe14dd 100644 --- a/src/bootstrap/src/core/build_steps/compile.rs +++ b/src/bootstrap/src/core/build_steps/compile.rs @@ -295,7 +295,6 @@ impl Step for Std { vec![], &build_stamp::libstd_stamp(builder, compiler, target), target_deps, - self.is_for_mir_opt_tests, // is_check false, ); @@ -609,6 +608,8 @@ pub fn std_cargo(builder: &Builder<'_>, target: TargetSelection, stage: u32, car features += "compiler-builtins-no-f16-f128 "; } + cargo.arg("-Zno-embed-metadata"); + if builder.no_std(target) == Some(true) { features += " compiler-builtins-mem"; if !target.starts_with("bpf") { @@ -1154,7 +1155,6 @@ impl Step for Rustc { vec![], &stamp, vec![], - false, true, // Only ship rustc_driver.so and .rmeta files, not all intermediate .rlib files. ); @@ -1208,6 +1208,7 @@ pub fn rustc_cargo( .arg(builder.src.join("compiler/rustc/Cargo.toml")); cargo.rustdocflag("-Zcrate-attr=warn(rust_2018_idioms)"); + cargo.arg("-Zno-embed-metadata"); // If the rustc output is piped to e.g. `head -n1` we want the process to be killed, rather than // having an error bubble up and cause a panic. @@ -1691,7 +1692,7 @@ impl Step for CodegenBackend { let tmp_stamp = BuildStamp::new(&out_dir).with_prefix("tmp"); let _guard = builder.msg_build(compiler, format_args!("codegen backend {backend}"), target); - let files = run_cargo(builder, cargo, vec![], &tmp_stamp, vec![], false, false); + let files = run_cargo(builder, cargo, vec![], &tmp_stamp, vec![], false); if builder.config.dry_run() { return; } @@ -2341,7 +2342,6 @@ pub fn run_cargo( tail_args: Vec, stamp: &BuildStamp, additional_target_deps: Vec<(PathBuf, DependencyType)>, - is_check: bool, rlib_only_metadata: bool, ) -> Vec { // `target_root_dir` looks like $dir/$target/release @@ -2381,7 +2381,7 @@ pub fn run_cargo( // Always keep native libraries, rust dylibs and debuginfo keep = true; } - if is_check && filename.ends_with(".rmeta") { + if filename.ends_with(".rmeta") { // During check builds we need to keep crate metadata keep = true; } else if rlib_only_metadata { diff --git a/src/bootstrap/src/core/build_steps/test.rs b/src/bootstrap/src/core/build_steps/test.rs index 01b181f55de6f..fac6dd835211b 100644 --- a/src/bootstrap/src/core/build_steps/test.rs +++ b/src/bootstrap/src/core/build_steps/test.rs @@ -2227,7 +2227,7 @@ impl BookTest { let stamp = BuildStamp::new(&builder.cargo_out(compiler, mode, target)) .with_prefix(PathBuf::from(dep).file_name().and_then(|v| v.to_str()).unwrap()); - let output_paths = run_cargo(builder, cargo, vec![], &stamp, vec![], false, false); + let output_paths = run_cargo(builder, cargo, vec![], &stamp, vec![], false); let directories = output_paths .into_iter() .filter_map(|p| p.parent().map(ToOwned::to_owned))