Skip to content

Tracking issue for RFC 2045: improving #[target_feature] #44839

Open
@alexcrichton

Description

@alexcrichton
Member

This is a tracking issue for the #[target_feature] segment of RFC 2045 (rust-lang/rfcs#2045).
#[cfg(target_feature)] was tracked in #29717 and has since been stabilized.

This tracks the following feature gates: aarch64_unstable_target_feature, aarch64_ver_target_feature, arm_target_feature, bpf_target_feature, csky_target_feature, ermsb_target_feature, hexagon_target_feature, lahfsahf_target_feature, loongarch_target_feature, mips_target_feature, powerpc_target_feature, prfchw_target_feature, riscv_target_feature, rtm_target_feature, s390x_target_feature, sse4a_target_feature, tbm_target_feature, wasm_target_feature, x87_target_feature.

Steps

  • Implement the proposed #[target_feature] semantics
  • Stabilize
    • x86_64 & i686
    • arm
    • aarch64
    • hexagon
    • powerpc
    • mips

@gnzlbg have anything else you want filled out here?

(below added from comments on PR)

  • consensus on the API for run-time feature detection
    should cfg!(feature) work across #[inline(always)] functions, generics, etc?

And some related tasks:

Activity

added
B-unstableBlocker: Implemented in the nightly compiler and unstable.
T-libs-apiRelevant to the library API team, which will review and decide on the PR/issue.
on Sep 25, 2017
added
A-SIMDArea: SIMD (Single Instruction Multiple Data)
on Sep 25, 2017
gnzlbg

gnzlbg commented on Sep 26, 2017

@gnzlbg
Contributor

@alexchrichton

Yes, we should also clear some of the unresolved questions:

  • consensus on the API for run-time feature detection
    should cfg!(feature) work across #[inline(always)] functions, generics, etc?

And some related tasks:

It would be nice if those API breaking changes could be prioritized.

retep998

retep998 commented on Sep 26, 2017

@retep998
Member

Rust already will sometimes not inline a #[inline(always)] function (notably recursive situations), so unsafe code already can't assume that #[inline(always)] code will always be inlined.

gnzlbg

gnzlbg commented on Sep 26, 2017

@gnzlbg
Contributor

@retep998 cfg!(feature) does not require any unsafe code.

retep998

retep998 commented on Sep 26, 2017

@retep998
Member

@gnzlbg I meant in regards to where the RFC states that #[target_feature] and #[inline(always)] mixed together should result in an error. We can simply not inline functions in that case, even if they are marked as #[inline(always)], because Rust will already sometimes not inline functions marked #[inline(always)].

gnzlbg

gnzlbg commented on Sep 26, 2017

@gnzlbg
Contributor

@retep998 We could definitely relax this by just not inlining an #[inline(always)] function. I don't know if we want to do so: the user did not write inline, but inline(always), we should at least warn here.

What we cannot currently do is inlining a function across mismatching features (independently of its inlining annotations). The alternative sections of the RFC explores this a bit though.

added
C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFC
on Sep 27, 2017
newpavlov

newpavlov commented on Mar 6, 2018

@newpavlov
Contributor

Any news on implementation status of --enable-features="feature0,feature1,..." proposed in the RFC?

gnzlbg

gnzlbg commented on Apr 4, 2018

@gnzlbg
Contributor

@newpavlov this is being discussed in issue 49658 . (note from pnkfelix: did this mean to say #49653 ?)

130 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-SIMDArea: SIMD (Single Instruction Multiple Data)A-stabilityArea: `#[stable]`, `#[unstable]` etc.A-target-featureArea: Enabling/disabling target features like AVX, Neon, etc.B-unstableBlocker: Implemented in the nightly compiler and unstable.C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCLibs-TrackedLibs issues that are tracked on the team's project board.S-tracking-design-concernsStatus: There are blocking design concerns.T-langRelevant to the language teamT-libs-apiRelevant to the library API team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @tarcieri@ehuss@alexcrichton@kennytm@qwandor

        Issue actions

          Tracking issue for RFC 2045: improving `#[target_feature]` · Issue #44839 · rust-lang/rust