-
Notifications
You must be signed in to change notification settings - Fork 13.1k
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 support for -Zprofile
(gcov-style coverage instrumentation)
#131829
Conversation
r? @chenyukang rustbot has assigned @chenyukang. Use |
This PR modifies cc @jieyouxu |
c543244
to
ce3e14a
Compare
Rebased; MCP accepted. @rustbot ready |
@bors r+ rollup |
Technically this is unstable flag, but should this get compat relnotes still? |
…ukang Remove support for `-Zprofile` (gcov-style coverage instrumentation) Tracking issue: rust-lang#42524 MCP: rust-lang/compiler-team#798 --- This PR removes the unstable `-Zprofile` flag, which enables ”gcov-style” coverage instrumentation, along with its associated `-Zprofile-emit` configuration flag. (The profile flag predates and is almost entirely separate from the stable `-Cinstrument-coverage` flag.) Notably, the `-Zprofile` flag: - Is largely untested in-tree, having only one run-make test that does not check whether its output is correct or useful. - Has no known maintainer. - Has seen no push towards stabilization. - Has at least one severe regression reported in 2022 that apparently remains unaddressed. - rust-lang#100125 - Is confusingly named, since it appears to be more about coverage than performance profiling, and has nothing to do with PGO. - Is fundamentally limited by relying on counters auto-inserted by LLVM, with no knowledge of Rust beyond debuginfo.
Given the flag’s age and former importance (?), a mention in relnotes is probably warranted. I’ll try to come up with a suggested wording. |
@rustbot label +relnotes |
…iaskrgr Rollup of 6 pull requests Successful merges: - rust-lang#131829 (Remove support for `-Zprofile` (gcov-style coverage instrumentation)) - rust-lang#132341 (Reject raw lifetime followed by `'`, like regular lifetimes do) - rust-lang#132369 (style-guide: Only use the new binop heuristic for assignments) - rust-lang#132383 (Implement suggestion for never type fallback lints) - rust-lang#132437 (coverage: Regression test for inlining into an uninstrumented crate) - rust-lang#132438 (Remove unncessary option for default rust-analyzer setting) r? `@ghost` `@rustbot` modify labels: rollup
…ukang Remove support for `-Zprofile` (gcov-style coverage instrumentation) Tracking issue: rust-lang#42524 MCP: rust-lang/compiler-team#798 --- This PR removes the unstable `-Zprofile` flag, which enables ”gcov-style” coverage instrumentation, along with its associated `-Zprofile-emit` configuration flag. (The profile flag predates and is almost entirely separate from the stable `-Cinstrument-coverage` flag.) Notably, the `-Zprofile` flag: - Is largely untested in-tree, having only one run-make test that does not check whether its output is correct or useful. - Has no known maintainer. - Has seen no push towards stabilization. - Has at least one severe regression reported in 2022 that apparently remains unaddressed. - rust-lang#100125 - Is confusingly named, since it appears to be more about coverage than performance profiling, and has nothing to do with PGO. - Is fundamentally limited by relying on counters auto-inserted by LLVM, with no knowledge of Rust beyond debuginfo.
Rollup of 13 pull requests Successful merges: - rust-lang#131829 (Remove support for `-Zprofile` (gcov-style coverage instrumentation)) - rust-lang#132369 (style-guide: Only use the new binop heuristic for assignments) - rust-lang#132383 (Implement suggestion for never type fallback lints) - rust-lang#132437 (coverage: Regression test for inlining into an uninstrumented crate) - rust-lang#132438 (Remove unncessary option for default rust-analyzer setting) - rust-lang#132439 (Add `f16` and `f128` to `invalid_nan_comparison`) - rust-lang#132445 (Cleanup attributes around unchecked shifts and unchecked negation in const) - rust-lang#132448 (Add missing backtick) - rust-lang#132450 (Show actual MIR when MIR building forgot to terminate block) - rust-lang#132451 (remove some unnecessary rustc_allow_const_fn_unstable) - rust-lang#132455 (make const_alloc_layout feature gate only about functions that are already stable) - rust-lang#132456 (Move remaining inline assembly test files into asm directory) - rust-lang#132459 (feat(byte_sub_ptr): unstably add ptr::byte_sub_ptr) r? `@ghost` `@rustbot` modify labels: rollup
Support for -Zprofile has been removed in rust-lang/rust#131829
Support for -Zprofile has been removed in rust-lang/rust#131829
Support for -Zprofile has been removed in rust-lang/rust#131829
Support for -Zprofile has been removed: rust-lang/rust#131829
and use cargo-llvm-cov instead of grcov. Support for -Zprofile has been removed from Rust nightly: rust-lang/rust#131829
Support for -Zprofile has been removed in rust-lang/rust#131829
Support for -Zprofile has been removed in rust-lang/rust#131829
@Zalathar While not perfect, -Zprofile had advantages over the other option. Am I missing something? If not, would it be possible to reconsider this removal ? Thanks :) |
Agreed with @sylvestre, there are many users, and some large projects might have difficulties switching to source-based coverage as it can be more resource intensive. |
My understanding is that the "limitations" are coverage info that can be incorrect by a factor greater than 10, right? It's based on debuginfo, but either not in a way that seems to be very accurate for Rust code, or we are emitting debuginfo in a way that is not useful for it, right? |
We used to rely on `-Zprofile`, but it was recently removed from Rust Nightly: rust-lang/rust#131829 This commit switches to a stable alternative; cf. mozilla/grcov#1240 This change is accompanied by a change in the build environment: instead of using Clang 18 with Rust Nightly, we now use Clang 18 with Rust 1.81. That's the last Rust version based on LLVM 18. Previously we tried to match LLVM versions between C++ and Rust to avoid weird coverage results. Now, it's *required* to match them, otherwise no coverage is gathered at all. Fixes #2912.
Unfortunately, the existing code was causing real maintenance problems in other parts of the compiler, which was one of the reasons for removing it. |
To add, removal of (1) It uses a more accurate name (one that's not confusing like i.e.
|
It would also be nice if someone reported to LLVM about the storage usage being excessive. I feel it is doubtful they have done any optimizations on the profdata format's space usage. |
The rustc's -Zprofile compiler flag was removed on nightly [1], which means gcov-style coverage instrumentation is no longer possible. [1] rust-lang/rust#131829 Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
The rustc's -Zprofile compiler flag was removed on nightly [1], which means gcov-style coverage instrumentation is no longer possible. [1] rust-lang/rust#131829 Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [rust](https://github.com/rust-lang/rust) | minor | `1.83.0` -> `1.84.0` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>rust-lang/rust (rust)</summary> ### [`v1.84.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1840-2025-01-09) [Compare Source](rust-lang/rust@1.83.0...1.84.0) \========================== <a id=" Language"></a> ## Language - [Allow `#[deny]` inside `#[forbid]` as a no-op](rust-lang/rust#121560) - [Show a warning when `-Ctarget-feature` is used to toggle features that can lead to unsoundness due to ABI mismatches](rust-lang/rust#129884) - [Use the next-generation trait solver in coherence](rust-lang/rust#130654) - [Allow coercions to drop the principal of trait objects](rust-lang/rust#131857) - [Support `/` as the path separator for `include!()` in all cases on Windows](rust-lang/rust#125205) - [Taking a raw ref (`raw (const|mut)`) of a deref of a pointer (`*ptr`) is now safe](rust-lang/rust#129248) - [Stabilize s390x inline assembly](rust-lang/rust#131258) - [Stabilize Arm64EC inline assembly](rust-lang/rust#131781) - [Lint against creating pointers to immediately dropped temporaries](rust-lang/rust#128985) - [Execute drop glue when unwinding in an `extern "C"` function](rust-lang/rust#129582) <a id="1.84.0-Compiler"></a> ## Compiler - [Add `--print host-tuple` flag to print the host target tuple and affirm the "target tuple" terminology over "target triple"](rust-lang/rust#125579) - [Declaring functions with a calling convention not supported on the current target now triggers a hard error](rust-lang/rust#129935) - [Set up indirect access to external data for `loongarch64-unknown-linux-{musl,ohos}`](rust-lang/rust#131583) - [Enable XRay instrumentation for LoongArch Linux targets](rust-lang/rust#131818) - [Extend the `unexpected_cfgs` lint to also warn in external macros](rust-lang/rust#132577) - [Stabilize WebAssembly `multivalue`, `reference-types`, and `tail-call` target features](rust-lang/rust#131080) - [Added Tier 2 support for the `wasm32v1-none` target](rust-lang/rust#131487) <a id="1.84.0-Libraries"></a> ## Libraries - [Implement `From<&mut {slice}>` for `Box/Rc/Arc<{slice}>`](rust-lang/rust#129329) - [Move `<float>::copysign`, `<float>::abs`, `<float>::signum` to `core`](rust-lang/rust#131304) - [Add `LowerExp` and `UpperExp` implementations to `NonZero`](rust-lang/rust#131377) - [Implement `FromStr` for `CString` and `TryFrom<CString>` for `String`](rust-lang/rust#130608) - [`std::os::darwin` has been made public](rust-lang/rust#123723) <a id="1.84.0-Stabilized-APIs"></a> ## Stabilized APIs - [`Ipv6Addr::is_unique_local`](https://doc.rust-lang.org/stable/core/net/struct.Ipv6Addr.html#method.is_unique_local) - [`Ipv6Addr::is_unicast_link_local`](https://doc.rust-lang.org/stable/core/net/struct.Ipv6Addr.html#method.is_unicast_link_local) - [`core::ptr::with_exposed_provenance`](https://doc.rust-lang.org/stable/core/ptr/fn.with_exposed_provenance.html) - [`core::ptr::with_exposed_provenance_mut`](https://doc.rust-lang.org/stable/core/ptr/fn.with_exposed_provenance_mut.html) - [`<ptr>::addr`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.addr) - [`<ptr>::expose_provenance`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.expose_provenance) - [`<ptr>::with_addr`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.with_addr) - [`<ptr>::map_addr`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.map_addr) - [`<int>::isqrt`](https://doc.rust-lang.org/stable/core/primitive.i32.html#method.isqrt) - [`<int>::checked_isqrt`](https://doc.rust-lang.org/stable/core/primitive.i32.html#method.checked_isqrt) - [`<uint>::isqrt`](https://doc.rust-lang.org/stable/core/primitive.u32.html#method.isqrt) - [`NonZero::isqrt`](https://doc.rust-lang.org/stable/core/num/struct.NonZero.html#impl-NonZero%3Cu128%3E/method.isqrt) - [`core::ptr::without_provenance`](https://doc.rust-lang.org/stable/core/ptr/fn.without_provenance.html) - [`core::ptr::without_provenance_mut`](https://doc.rust-lang.org/stable/core/ptr/fn.without_provenance_mut.html) - [`core::ptr::dangling`](https://doc.rust-lang.org/stable/core/ptr/fn.dangling.html) - [`core::ptr::dangling_mut`](https://doc.rust-lang.org/stable/core/ptr/fn.dangling_mut.html) - [`Pin::as_deref_mut`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.as_deref_mut) These APIs are now stable in const contexts - [`AtomicBool::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicBool.html#method.from_ptr) - [`AtomicPtr::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicPtr.html#method.from_ptr) - [`AtomicU8::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU8.html#method.from_ptr) - [`AtomicU16::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU16.html#method.from_ptr) - [`AtomicU32::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU32.html#method.from_ptr) - [`AtomicU64::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU64.html#method.from_ptr) - [`AtomicUsize::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicUsize.html#method.from_ptr) - [`AtomicI8::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI8.html#method.from_ptr) - [`AtomicI16::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI16.html#method.from_ptr) - [`AtomicI32::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI32.html#method.from_ptr) - [`AtomicI64::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI64.html#method.from_ptr) - [`AtomicIsize::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicIsize.html#method.from_ptr) - [`<ptr>::is_null`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.is_null-1) - [`<ptr>::as_ref`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.as_ref-1) - [`<ptr>::as_mut`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.as_mut) - [`Pin::new`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.new) - [`Pin::new_unchecked`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.new_unchecked) - [`Pin::get_ref`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_ref) - [`Pin::into_ref`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.into_ref) - [`Pin::get_mut`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_mut) - [`Pin::get_unchecked_mut`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_unchecked_mut) - [`Pin::static_ref`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.static_ref) - [`Pin::static_mut`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.static_mut) <a id="1.84.0-Cargo"></a> ## Cargo - [Stabilize MSRV-aware resolver config](rust-lang/cargo#14639) - [Stabilize resolver v3](rust-lang/cargo#14754) <a id="1.84-Rustdoc"></a> ## Rustdoc - [rustdoc-search: improve type-driven search](rust-lang/rust#127589) <a id="1.84.0-Compatibility-Notes"></a> ## Compatibility Notes - [Enable by default the `LSX` target feature for LoongArch Linux targets](rust-lang/rust#132140) - [The unstable `-Zprofile` flag (“gcov-style” coverage instrumentation) has been removed.](rust-lang/rust#131829) This does not affect the stable flags for coverage instrumentation (`-Cinstrument-coverage`) and profile-guided optimization (`-Cprofile-generate`, `-Cprofile-use`), which are unrelated and remain available. - Support for the target named `wasm32-wasi` has been removed as the target is now named `wasm32-wasip1`. This completes the [transition](rust-lang/compiler-team#607) [plan](rust-lang/compiler-team#695) for this target following [the introduction of `wasm32-wasip1`](rust-lang/rust#120468) in Rust 1.78. Compiler warnings on [use of `wasm32-wasi`](rust-lang/rust#126662) introduced in Rust 1.81 are now gone as well as the target is removed. - [The syntax `&pin (mut|const) T` is now parsed as a type which in theory could affect macro expansion results in some edge cases](rust-lang/rust#130635 (comment)) - [Legacy syntax for calling `std::arch` functions is no longer permitted to declare items or bodies (such as closures, inline consts, or async blocks).](rust-lang/rust#130443 (comment)) - [Declaring functions with a calling convention not supported on the current target now triggers a hard error](rust-lang/rust#129935) - [The next-generation trait solver is now enabled for coherence, fixing multiple soundness issues](rust-lang/rust#130654) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45Ny4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTAwLjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbIlJlbm92YXRlIEJvdCJdfQ==-->
According to rust-lang/rust#131829 -Zprofile is removed.
According to rust-lang/rust#131829 -Zprofile is removed.
Pkgsrc changes: * Adapt patches, one of the patched files were restructured upstream. * Checksum changes. Upstream changes: Version 1.84.1 (2025-01-30) ========================== - [Fix ICE 132920 in duplicate-crate diagnostics.] (rust-lang/rust#133304) - [Fix errors for overlapping impls in incremental rebuilds.] (rust-lang/rust#133828) - [Fix slow compilation related to the next-generation trait solver.] (rust-lang/rust#135618) - [Fix debuginfo when LLVM's location discriminator value limit is exceeded.] (rust-lang/rust#135643) - Fixes for building Rust from source: - [Only try to distribute `llvm-objcopy` if llvm tools are enabled.] (rust-lang/rust#134240) - [Add Profile Override for Non-Git Sources.] (rust-lang/rust#135433) - [Resolve symlinks of LLVM tool binaries before copying them.] (rust-lang/rust#135585) - [Make it possible to use ci-rustc on tarball sources.] (rust-lang/rust#135722) Version 1.84.0 (2025-01-09) ========================== Language -------- - [Allow `#[deny]` inside `#[forbid]` as a no-op] (rust-lang/rust#121560) - [Show a warning when `-Ctarget-feature` is used to toggle features that can lead to unsoundness due to ABI mismatches] (rust-lang/rust#129884) - [Use the next-generation trait solver in coherence] (rust-lang/rust#130654) - [Allow coercions to drop the principal of trait objects] (rust-lang/rust#131857) - [Support `/` as the path separator for `include!()` in all cases on Windows] (rust-lang/rust#125205) - [Taking a raw ref (`raw (const|mut)`) of a deref of a pointer (`*ptr`) is now safe] (rust-lang/rust#129248) - [Stabilize s390x inline assembly] (rust-lang/rust#131258) - [Stabilize Arm64EC inline assembly] (rust-lang/rust#131781) - [Lint against creating pointers to immediately dropped temporaries] (rust-lang/rust#128985) - [Execute drop glue when unwinding in an `extern "C"` function] (rust-lang/rust#129582) Compiler -------- - [Add `--print host-tuple` flag to print the host target tuple and affirm the "target tuple" terminology over "target triple"] (rust-lang/rust#125579) - [Declaring functions with a calling convention not supported on the current target now triggers a hard error] (rust-lang/rust#129935) - [Set up indirect access to external data for `loongarch64-unknown-linux-{musl,ohos}`] (rust-lang/rust#131583) - [Enable XRay instrumentation for LoongArch Linux targets] (rust-lang/rust#131818) - [Extend the `unexpected_cfgs` lint to also warn in external macros] (rust-lang/rust#132577) - [Stabilize WebAssembly `multivalue`, `reference-types`, and `tail-call` target features] (rust-lang/rust#131080) - [Added Tier 2 support for the `wasm32v1-none` target] (rust-lang/rust#131487) Libraries --------- - [Implement `From<&mut {slice}>` for `Box/Rc/Arc<{slice}>`] (rust-lang/rust#129329) - [Move `<float>::copysign`, `<float>::abs`, `<float>::signum` to `core`] (rust-lang/rust#131304) - [Add `LowerExp` and `UpperExp` implementations to `NonZero`] (rust-lang/rust#131377) - [Implement `FromStr` for `CString` and `TryFrom<CString>` for `String`] (rust-lang/rust#130608) - [`std::os::darwin` has been made public] (rust-lang/rust#130635) Stabilized APIs --------------- - [`Ipv6Addr::is_unique_local`] (https://doc.rust-lang.org/stable/core/net/struct.Ipv6Addr.html#method.is_unique_local) - [`Ipv6Addr::is_unicast_link_local`] (https://doc.rust-lang.org/stable/core/net/struct.Ipv6Addr.html#method.is_unicast_link_local) - [`core::ptr::with_exposed_provenance`] (https://doc.rust-lang.org/stable/core/ptr/fn.with_exposed_provenance.html) - [`core::ptr::with_exposed_provenance_mut`] (https://doc.rust-lang.org/stable/core/ptr/fn.with_exposed_provenance_mut.html) - [`<ptr>::addr`] (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.addr) - [`<ptr>::expose_provenance`] (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.expose_provenance) - [`<ptr>::with_addr`] (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.with_addr) - [`<ptr>::map_addr`] (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.map_addr) - [`<int>::isqrt`] (https://doc.rust-lang.org/stable/core/primitive.i32.html#method.isqrt) - [`<int>::checked_isqrt`] (https://doc.rust-lang.org/stable/core/primitive.i32.html#method.checked_isqrt) - [`<uint>::isqrt`] (https://doc.rust-lang.org/stable/core/primitive.u32.html#method.isqrt) - [`NonZero::isqrt`] (https://doc.rust-lang.org/stable/core/num/struct.NonZero.html#impl-NonZero%3Cu128%3E/method.isqrt) - [`core::ptr::without_provenance`] (https://doc.rust-lang.org/stable/core/ptr/fn.without_provenance.html) - [`core::ptr::without_provenance_mut`] (https://doc.rust-lang.org/stable/core/ptr/fn.without_provenance_mut.html) - [`core::ptr::dangling`] (https://doc.rust-lang.org/stable/core/ptr/fn.dangling.html) - [`core::ptr::dangling_mut`] (https://doc.rust-lang.org/stable/core/ptr/fn.dangling_mut.html) These APIs are now stable in const contexts - [`AtomicBool::from_ptr`] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicBool.html#method.from_ptr) - [`AtomicPtr::from_ptr`] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicPtr.html#method.from_ptr) - [`AtomicU8::from_ptr`] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU8.html#method.from_ptr) - [`AtomicU16::from_ptr`] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU16.html#method.from_ptr) - [`AtomicU32::from_ptr`] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU32.html#method.from_ptr) - [`AtomicU64::from_ptr`] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU64.html#method.from_ptr) - [`AtomicUsize::from_ptr`] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicUsize.html#method.from_ptr) - [`AtomicI8::from_ptr`] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI8.html#method.from_ptr) - [`AtomicI16::from_ptr`] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI16.html#method.from_ptr) - [`AtomicI32::from_ptr`] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI32.html#method.from_ptr) - [`AtomicI64::from_ptr`] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI64.html#method.from_ptr) - [`AtomicIsize::from_ptr`] (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicIsize.html#method.from_ptr) - [`<ptr>::is_null`] (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.is_null-1) - [`<ptr>::as_ref`] (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.as_ref-1) - [`<ptr>::as_mut`] (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.as_mut) - [`Pin::new`] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.new) - [`Pin::new_unchecked`] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.new_unchecked) - [`Pin::get_ref`] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_ref) - [`Pin::into_ref`] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.into_ref) - [`Pin::get_mut`] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_mut) - [`Pin::get_unchecked_mut`] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_unchecked_mut) - [`Pin::static_ref`] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.static_ref) - [`Pin::static_mut`] (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.static_mut) Cargo ----- - [Stabilize MSRV-aware resolver config] (rust-lang/cargo#14639) - [Stabilize resolver v3] (rust-lang/cargo#14754) Rustdoc ------- - [rustdoc-search: improve type-driven search] (rust-lang/rust#127589) Compatibility Notes ------------------- - [Enable by default the `LSX` target feature for LoongArch Linux targets] (rust-lang/rust#132140) - [The unstable `-Zprofile` flag ("gcov-style" coverage instrumentation) has been removed.](rust-lang/rust#131829) This does not affect the stable flags for coverage instrumentation (`-Cinstrument-coverage`) and profile-guided optimization (`-Cprofile-generate`, `-Cprofile-use`), which are unrelated and remain available. - Support for the target named `wasm32-wasi` has been removed as the target is now named `wasm32-wasip1`. This completes the [transition] (rust-lang/compiler-team#607) [plan](rust-lang/compiler-team#695) for this target following [the introduction of `wasm32-wasip1`] (rust-lang/rust#120468) in Rust 1.78. Compiler warnings on [use of `wasm32-wasi`] (rust-lang/rust#126662) introduced in Rust 1.81 are now gone as well as the target is removed. - [The syntax `&pin (mut|const) T` is now parsed as a type which in theory could affect macro expansion results in some edge cases] (rust-lang/rust#130635 (comment)) - [Legacy syntax for calling `std::arch` functions is no longer permitted to declare items or bodies (such as closures, inline consts, or async blocks).] (rust-lang/rust#130443 (comment)) - The `wasm32-unknown-emscripten` target's binary release of the standard library is now [built with the latest emsdk 3.1.68] (rust-lang/rust#131533), which fixes an ABI-incompatibility with Emscripten >= 3.1.42. If you are locally using a version of emsdk with an incompatible ABI (e.g. before 3.1.42 or a future one), you should build your code with `-Zbuild-std` to ensure that `std` uses the correct ABI. - [Declaring functions with a calling convention not supported on the current target now triggers a hard error] (rust-lang/rust#129935) - [The next-generation trait solver is now enabled for coherence, fixing multiple soundness issues] (rust-lang/rust#130654)
Tracking issue: #42524
MCP: rust-lang/compiler-team#798
This PR removes the unstable
-Zprofile
flag, which enables ”gcov-style” coverage instrumentation, along with its associated-Zprofile-emit
configuration flag.(The profile flag predates and is almost entirely separate from the stable
-Cinstrument-coverage
flag.)Notably, the
-Zprofile
flag:-Zprofile
) at some point afternightly-2021-11-11
#100125