Skip to content

stabilize cfg_select!#149783

Merged
rust-bors[bot] merged 1 commit intorust-lang:mainfrom
folkertdev:stabilize-cfg-select
Feb 23, 2026
Merged

stabilize cfg_select!#149783
rust-bors[bot] merged 1 commit intorust-lang:mainfrom
folkertdev:stabilize-cfg-select

Conversation

@folkertdev
Copy link
Contributor

@folkertdev folkertdev commented Dec 8, 2025

View all comments

tracking issue: #115585
closes #115585
reference PR:

Request for Stabilization

Summary

The cfg_select! macro picks the expansion corresponding to the first cfg condition that evaluates to true. It simplifies complex conditional expressions.

cfg_select! {
    unix => {
        fn foo() { /* unix specific functionality */ }
    }
    target_pointer_width = "32" => {
        fn foo() { /* non-unix, 32-bit functionality */ }
    }
    _ => {
        fn foo() { /* fallback implementation */ }
    }
}

let is_unix_str = cfg_select! {
    unix => "unix",
    _ => "not unix",
};
println!("{is_unix_str}");

Semantics

The expansion of a cfg_select! call is the right-hand side of the first cfg rule that evaluates to true.

This can be roughly expressed using this macro:

macro_rules! cfg_select {
    ({ $($tt:tt)* }) => {{
        $crate::cfg_select! { $($tt)* }
    }};
    (_ => { $($output:tt)* }) => {
        $($output)*
    };
    (
        $cfg:meta => $output:tt
        $($( $rest:tt )+)?
    ) => {
        #[cfg($cfg)]
        $crate::cfg_select! { _ => $output }
        $(
            #[cfg(not($cfg))]
            $crate::cfg_select! { $($rest)+ }
        )?
    }
}

The actual implementation uses a builtin macro so that cfg_select! can be used both in item and expression position.

Documentation

reference PR:

Tests

The cfg_select! macro is already used extensively in the rust compiler codebase. It has several dedicated tests:

History

Resolved questions

Unresolved questions

The style team has decided on how to format cfg_select!, but this formatting has not yet been implemented. See #144323.

r? @traviscross

Note

Concerns (0 active)

Managed by @rustbot—see help for details.

@rustbot rustbot added A-run-make Area: port run-make Makefiles to rmake.rs S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Dec 8, 2025
@folkertdev folkertdev added the F-cfg_select `#![feature(cfg_select)]` label Dec 8, 2025
@rust-log-analyzer

This comment has been minimized.

@folkertdev folkertdev force-pushed the stabilize-cfg-select branch from c4d3570 to 0e24d24 Compare December 8, 2025 19:49
@rust-log-analyzer

This comment has been minimized.

@folkertdev folkertdev force-pushed the stabilize-cfg-select branch from 0e24d24 to c87e26a Compare December 8, 2025 20:25
@rust-log-analyzer

This comment has been minimized.

@folkertdev folkertdev force-pushed the stabilize-cfg-select branch from c87e26a to 67d1d43 Compare December 8, 2025 21:07
@ehuss
Copy link
Contributor

ehuss commented Dec 8, 2025

Happy to see this move forward!

Is there a detailed description of how this macro works? For example:

  • What is the grammar that it accepts?
  • How does it expand? For example, it seems like if the RHS uses braces, the braces are implicitly removed.
  • Am I correct that whether or not this fails to compile depends on the current cfg's for the current target/environment? That is, there is essentially an implicit _ => {compile_error!()} as the last rule?
  • Is it correct that this did not suffer the same fate as assert_matches because the name cfg_select is not in use by any known libraries? (Just curious, cfg_select has already been in the prelude for a while and nobody complained.)
  • Is there a reason the unreachable predicate warning isn't a lint? (The main reason I ask is because this prevents -D warnings from catching it.)
  • Am I correct that the RHS is not parsed unless it is the arm that is selected? That is, the right hand side can contain any token tree?

@folkertdev folkertdev marked this pull request as ready for review December 8, 2025 23:06
@rustbot
Copy link
Collaborator

rustbot commented Dec 8, 2025

Some changes occurred in compiler/rustc_codegen_cranelift

cc @bjorn3

The Miri subtree was changed

cc @rust-lang/miri

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Dec 8, 2025
@folkertdev folkertdev added the I-lang-nominated Nominated for discussion during a lang team meeting. label Dec 8, 2025
@folkertdev
Copy link
Contributor Author

Is there a detailed description of how this macro works? For example:

Not yet, I think.

What is the grammar that it accepts?

In item positions the body should consist of zero or more

('_' | ConfugurationPredicate) => { TokenTree }

In expression position we additionally accept

('_' | ConfugurationPredicate) => Expr,

How does it expand? For example, it seems like if the RHS uses braces, the braces are implicitly removed.

That is correct, one level of braces is removed if braces are used.

Am I correct that whether or not this fails to compile depends on the current cfg's for the current target/environment? That is, there is essentially an implicit _ => {compile_error!()} as the last rule?

Yes if none of the conditions evaluate to true you'll get a compile error (note: earlier iterations did not have this default behavior)

Is it correct that this did not suffer the same fate as assert_matches because the name cfg_select is not in use by any known libraries? (Just curious, cfg_select has already been in the prelude for a while and nobody complained.)

The ecosystem mostly uses cfg_if. But I'll defer to T-libs-api on whether this is exported from all the right places.

Is there a reason the unreachable predicate warning isn't a lint? (The main reason I ask is because this prevents -D warnings from catching it.)

I don't think there is a reason. We could make it a lint (or add it to an existing one?)

Am I correct that the RHS is not parsed unless it is the arm that is selected? That is, the right hand side can contain any token tree?

Yes, the rhs can be any token tree.

@traviscross traviscross added T-lang Relevant to the language team T-libs-api Relevant to the library API team, which will review and decide on the PR/issue. P-lang-drag-1 Lang team prioritization drag level 1. https://rust-lang.zulipchat.com/#narrow/channel/410516-t-lang labels Dec 8, 2025
@traviscross
Copy link
Contributor

Is there a reason the unreachable predicate warning isn't a lint? (The main reason I ask is because this prevents -D warnings from catching it.)

I don't think there is a reason. We could make it a lint (or add it to an existing one?)

For my part, it seems worth doing this. Then we can stabilize this lint along with this FCP. Perhaps a new lint named unreachable_cfgs would be correct. The name is by analogy to unexpected_cfgs and unreachable_patterns.

(In the alternate, if we did want "predicate" in the name, I'd suggest unreachable_cfg_predicates.)

@traviscross traviscross added the needs-fcp This change is insta-stable, or significant enough to need a team FCP to proceed. label Dec 9, 2025
@bors
Copy link
Collaborator

bors commented Dec 9, 2025

☔ The latest upstream changes (presumably #149798) made this pull request unmergeable. Please resolve the merge conflicts.

@folkertdev folkertdev force-pushed the stabilize-cfg-select branch from 67d1d43 to 9a4b1e3 Compare December 9, 2025 13:23
@rustbot

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@folkertdev folkertdev force-pushed the stabilize-cfg-select branch from 41ad90e to f8b31cf Compare December 9, 2025 22:19
@JonathanBrouwer
Copy link
Contributor

JonathanBrouwer commented Feb 22, 2026

@bors r-
#152967 (comment)

@rust-bors rust-bors bot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Feb 22, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 22, 2026

Commit eb2d00a has been unapproved.

This PR was contained in a rollup (#152967), which was also unapproved.

@folkertdev
Copy link
Contributor Author

@rustbot ready

(assuming CI is happy)

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Feb 22, 2026
@JonathanBrouwer
Copy link
Contributor

@bors try jobs=x86_64-gnu-llvm-21-3

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Feb 22, 2026
stabilize `cfg_select!`


try-job: x86_64-gnu-llvm-21-3
@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 22, 2026

☀️ Try build successful (CI)
Build commit: 76f787d (76f787d0531d2c5dc810f0b770b1e5be5427e70f, parent: 1500f0f47f5fe8ddcd6528f6c6c031b210b4eac5)

@JonathanBrouwer
Copy link
Contributor

@bors r+

@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 22, 2026

📌 Commit 14d29f9 has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rust-bors rust-bors bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 22, 2026
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Feb 22, 2026
…=JonathanBrouwer

stabilize `cfg_select!`

*[View all comments](https://triagebot.infra.rust-lang.org/gh-comments/rust-lang/rust/pull/149783)*

tracking issue: rust-lang#115585
closes rust-lang#115585
reference PR:

- rust-lang/reference#2103

# Request for Stabilization

## Summary

The `cfg_select!` macro picks the expansion corresponding to the first `cfg` condition that evaluates to `true`. It simplifies complex conditional expressions.

```rust
cfg_select! {
    unix => {
        fn foo() { /* unix specific functionality */ }
    }
    target_pointer_width = "32" => {
        fn foo() { /* non-unix, 32-bit functionality */ }
    }
    _ => {
        fn foo() { /* fallback implementation */ }
    }
}

let is_unix_str = cfg_select! {
    unix => "unix",
    _ => "not unix",
};
println!("{is_unix_str}");
```
## Semantics

The expansion of a `cfg_select!` call is the right-hand side of the first `cfg` rule that evaluates to true.

This can be roughly expressed using this macro:
```rust
macro_rules! cfg_select {
    ({ $($tt:tt)* }) => {{
        $crate::cfg_select! { $($tt)* }
    }};
    (_ => { $($output:tt)* }) => {
        $($output)*
    };
    (
        $cfg:meta => $output:tt
        $($( $rest:tt )+)?
    ) => {
        #[cfg($cfg)]
        $crate::cfg_select! { _ => $output }
        $(
            #[cfg(not($cfg))]
            $crate::cfg_select! { $($rest)+ }
        )?
    }
}
```

The actual implementation uses a builtin macro so that `cfg_select!` can be used both in item and expression position.

## Documentation

reference PR:

- rust-lang/reference#2103

## Tests

The `cfg_select!` macro is already used extensively in the rust compiler codebase. It has several dedicated tests:

- [`tests/ui/check-cfg/cfg-select.rs`](https://github.com/rust-lang/rust/blob/main/tests/ui/check-cfg/cfg-select.rs)tests that warnings are emitted when an unexpected `cfg` condition is used.
- [`tests/ui/macros/cfg_select.rs`](https://github.com/rust-lang/rust/blob/main/tests/ui/macros/cfg_select.rs) tests that `cfg_select!` has the expected expansion, and tests that the expected syntax is accepted.
## History

- rust-lang#115416
- rust-lang#117162
- rust-lang#133720
- rust-lang#135625
- rust-lang#137198
- rust-lang#138993
- rust-lang#138996
- rust-lang#143461
- rust-lang#143941
- rust-lang#145233
- rust-lang#148712
- rust-lang#149380
- rust-lang#149925

# Resolved questions

# Unresolved questions

The style team has decided on how to format `cfg_select!`, but this formatting has not yet been implemented. See rust-lang#144323.

r? @traviscross

<!-- TRIAGEBOT_START -->

<!-- TRIAGEBOT_CONCERN-ISSUE_START -->

> [!NOTE]
> # Concerns (0 active)
>
> - ~~[allowing-comma-after-closing-brace](rust-lang#149783 (comment) resolved in [this comment](rust-lang#149783 (comment))
>
> *Managed by `@rustbot`—see [help](https://forge.rust-lang.org/triagebot/concern.html) for details.*

<!-- TRIAGEBOT_CONCERN-ISSUE_END -->
<!-- TRIAGEBOT_END -->
jhpratt added a commit to jhpratt/rust that referenced this pull request Feb 22, 2026
…=JonathanBrouwer

stabilize `cfg_select!`

*[View all comments](https://triagebot.infra.rust-lang.org/gh-comments/rust-lang/rust/pull/149783)*

tracking issue: rust-lang#115585
closes rust-lang#115585
reference PR:

- rust-lang/reference#2103

# Request for Stabilization

## Summary

The `cfg_select!` macro picks the expansion corresponding to the first `cfg` condition that evaluates to `true`. It simplifies complex conditional expressions.

```rust
cfg_select! {
    unix => {
        fn foo() { /* unix specific functionality */ }
    }
    target_pointer_width = "32" => {
        fn foo() { /* non-unix, 32-bit functionality */ }
    }
    _ => {
        fn foo() { /* fallback implementation */ }
    }
}

let is_unix_str = cfg_select! {
    unix => "unix",
    _ => "not unix",
};
println!("{is_unix_str}");
```
## Semantics

The expansion of a `cfg_select!` call is the right-hand side of the first `cfg` rule that evaluates to true.

This can be roughly expressed using this macro:
```rust
macro_rules! cfg_select {
    ({ $($tt:tt)* }) => {{
        $crate::cfg_select! { $($tt)* }
    }};
    (_ => { $($output:tt)* }) => {
        $($output)*
    };
    (
        $cfg:meta => $output:tt
        $($( $rest:tt )+)?
    ) => {
        #[cfg($cfg)]
        $crate::cfg_select! { _ => $output }
        $(
            #[cfg(not($cfg))]
            $crate::cfg_select! { $($rest)+ }
        )?
    }
}
```

The actual implementation uses a builtin macro so that `cfg_select!` can be used both in item and expression position.

## Documentation

reference PR:

- rust-lang/reference#2103

## Tests

The `cfg_select!` macro is already used extensively in the rust compiler codebase. It has several dedicated tests:

- [`tests/ui/check-cfg/cfg-select.rs`](https://github.com/rust-lang/rust/blob/main/tests/ui/check-cfg/cfg-select.rs)tests that warnings are emitted when an unexpected `cfg` condition is used.
- [`tests/ui/macros/cfg_select.rs`](https://github.com/rust-lang/rust/blob/main/tests/ui/macros/cfg_select.rs) tests that `cfg_select!` has the expected expansion, and tests that the expected syntax is accepted.
## History

- rust-lang#115416
- rust-lang#117162
- rust-lang#133720
- rust-lang#135625
- rust-lang#137198
- rust-lang#138993
- rust-lang#138996
- rust-lang#143461
- rust-lang#143941
- rust-lang#145233
- rust-lang#148712
- rust-lang#149380
- rust-lang#149925

# Resolved questions

# Unresolved questions

The style team has decided on how to format `cfg_select!`, but this formatting has not yet been implemented. See rust-lang#144323.

r? @traviscross

<!-- TRIAGEBOT_START -->

<!-- TRIAGEBOT_CONCERN-ISSUE_START -->

> [!NOTE]
> # Concerns (0 active)
>
> - ~~[allowing-comma-after-closing-brace](rust-lang#149783 (comment) resolved in [this comment](rust-lang#149783 (comment))
>
> *Managed by `@rustbot`—see [help](https://forge.rust-lang.org/triagebot/concern.html) for details.*

<!-- TRIAGEBOT_CONCERN-ISSUE_END -->
<!-- TRIAGEBOT_END -->
rust-bors bot pushed a commit that referenced this pull request Feb 23, 2026
Rollup of 9 pull requests

Successful merges:

 - #152229 (Remove deterministic picking from query cycle handling)
 - #152970 (extend unpin noalias tests to cover mutable references)
 - #149783 (stabilize `cfg_select!`)
 - #151744 (fix refining_impl_trait suggestion with return_type_notation)
 - #152366 (Add try_shrink_to and try_shrink_to_fit to Vec)
 - #152640 (Add direct link to rustc-dev-guide in README)
 - #152963 (Revert "Stabilize `str_as_str`")
 - #152984 (Remove redundant call to `check_codegen_attributes_extra` in Inliner)
 - #152987 (Use `HashStable` derive in more places)
@rust-bors rust-bors bot merged commit 6bcb461 into rust-lang:main Feb 23, 2026
12 checks passed
@rustbot rustbot added this to the 1.95.0 milestone Feb 23, 2026
rust-timer added a commit that referenced this pull request Feb 23, 2026
Rollup merge of #149783 - folkertdev:stabilize-cfg-select, r=JonathanBrouwer

stabilize `cfg_select!`

*[View all comments](https://triagebot.infra.rust-lang.org/gh-comments/rust-lang/rust/pull/149783)*

tracking issue: #115585
closes #115585
reference PR:

- rust-lang/reference#2103

# Request for Stabilization

## Summary

The `cfg_select!` macro picks the expansion corresponding to the first `cfg` condition that evaluates to `true`. It simplifies complex conditional expressions.

```rust
cfg_select! {
    unix => {
        fn foo() { /* unix specific functionality */ }
    }
    target_pointer_width = "32" => {
        fn foo() { /* non-unix, 32-bit functionality */ }
    }
    _ => {
        fn foo() { /* fallback implementation */ }
    }
}

let is_unix_str = cfg_select! {
    unix => "unix",
    _ => "not unix",
};
println!("{is_unix_str}");
```
## Semantics

The expansion of a `cfg_select!` call is the right-hand side of the first `cfg` rule that evaluates to true.

This can be roughly expressed using this macro:
```rust
macro_rules! cfg_select {
    ({ $($tt:tt)* }) => {{
        $crate::cfg_select! { $($tt)* }
    }};
    (_ => { $($output:tt)* }) => {
        $($output)*
    };
    (
        $cfg:meta => $output:tt
        $($( $rest:tt )+)?
    ) => {
        #[cfg($cfg)]
        $crate::cfg_select! { _ => $output }
        $(
            #[cfg(not($cfg))]
            $crate::cfg_select! { $($rest)+ }
        )?
    }
}
```

The actual implementation uses a builtin macro so that `cfg_select!` can be used both in item and expression position.

## Documentation

reference PR:

- rust-lang/reference#2103

## Tests

The `cfg_select!` macro is already used extensively in the rust compiler codebase. It has several dedicated tests:

- [`tests/ui/check-cfg/cfg-select.rs`](https://github.com/rust-lang/rust/blob/main/tests/ui/check-cfg/cfg-select.rs)tests that warnings are emitted when an unexpected `cfg` condition is used.
- [`tests/ui/macros/cfg_select.rs`](https://github.com/rust-lang/rust/blob/main/tests/ui/macros/cfg_select.rs) tests that `cfg_select!` has the expected expansion, and tests that the expected syntax is accepted.
## History

- #115416
- #117162
- #133720
- #135625
- #137198
- #138993
- #138996
- #143461
- #143941
- #145233
- #148712
- #149380
- #149925

# Resolved questions

# Unresolved questions

The style team has decided on how to format `cfg_select!`, but this formatting has not yet been implemented. See #144323.

r? @traviscross

<!-- TRIAGEBOT_START -->

<!-- TRIAGEBOT_CONCERN-ISSUE_START -->

> [!NOTE]
> # Concerns (0 active)
>
> - ~~[allowing-comma-after-closing-brace](#149783 (comment) resolved in [this comment](#149783 (comment))
>
> *Managed by `@rustbot`—see [help](https://forge.rust-lang.org/triagebot/concern.html) for details.*

<!-- TRIAGEBOT_CONCERN-ISSUE_END -->
<!-- TRIAGEBOT_END -->
RalfJung pushed a commit to RalfJung/miri that referenced this pull request Feb 24, 2026
…Brouwer

stabilize `cfg_select!`

*[View all comments](https://triagebot.infra.rust-lang.org/gh-comments/rust-lang/rust/pull/149783)*

tracking issue: rust-lang/rust#115585
closes rust-lang/rust#115585
reference PR:

- rust-lang/reference#2103

# Request for Stabilization

## Summary

The `cfg_select!` macro picks the expansion corresponding to the first `cfg` condition that evaluates to `true`. It simplifies complex conditional expressions.

```rust
cfg_select! {
    unix => {
        fn foo() { /* unix specific functionality */ }
    }
    target_pointer_width = "32" => {
        fn foo() { /* non-unix, 32-bit functionality */ }
    }
    _ => {
        fn foo() { /* fallback implementation */ }
    }
}

let is_unix_str = cfg_select! {
    unix => "unix",
    _ => "not unix",
};
println!("{is_unix_str}");
```
## Semantics

The expansion of a `cfg_select!` call is the right-hand side of the first `cfg` rule that evaluates to true.

This can be roughly expressed using this macro:
```rust
macro_rules! cfg_select {
    ({ $($tt:tt)* }) => {{
        $crate::cfg_select! { $($tt)* }
    }};
    (_ => { $($output:tt)* }) => {
        $($output)*
    };
    (
        $cfg:meta => $output:tt
        $($( $rest:tt )+)?
    ) => {
        #[cfg($cfg)]
        $crate::cfg_select! { _ => $output }
        $(
            #[cfg(not($cfg))]
            $crate::cfg_select! { $($rest)+ }
        )?
    }
}
```

The actual implementation uses a builtin macro so that `cfg_select!` can be used both in item and expression position.

## Documentation

reference PR:

- rust-lang/reference#2103

## Tests

The `cfg_select!` macro is already used extensively in the rust compiler codebase. It has several dedicated tests:

- [`tests/ui/check-cfg/cfg-select.rs`](https://github.com/rust-lang/rust/blob/main/tests/ui/check-cfg/cfg-select.rs)tests that warnings are emitted when an unexpected `cfg` condition is used.
- [`tests/ui/macros/cfg_select.rs`](https://github.com/rust-lang/rust/blob/main/tests/ui/macros/cfg_select.rs) tests that `cfg_select!` has the expected expansion, and tests that the expected syntax is accepted.
## History

- rust-lang/rust#115416
- rust-lang/rust#117162
- rust-lang/rust#133720
- rust-lang/rust#135625
- rust-lang/rust#137198
- rust-lang/rust#138993
- rust-lang/rust#138996
- rust-lang/rust#143461
- rust-lang/rust#143941
- rust-lang/rust#145233
- rust-lang/rust#148712
- rust-lang/rust#149380
- rust-lang/rust#149925

# Resolved questions

# Unresolved questions

The style team has decided on how to format `cfg_select!`, but this formatting has not yet been implemented. See rust-lang/rust#144323.

r? @traviscross

<!-- TRIAGEBOT_START -->

<!-- TRIAGEBOT_CONCERN-ISSUE_START -->

> [!NOTE]
> # Concerns (0 active)
>
> - ~~[allowing-comma-after-closing-brace](rust-lang/rust#149783 (comment) resolved in [this comment](rust-lang/rust#149783 (comment))
>
> *Managed by `@rustbot`—see [help](https://forge.rust-lang.org/triagebot/concern.html) for details.*

<!-- TRIAGEBOT_CONCERN-ISSUE_END -->
<!-- TRIAGEBOT_END -->
RalfJung pushed a commit to RalfJung/miri that referenced this pull request Feb 24, 2026
Rollup of 9 pull requests

Successful merges:

 - rust-lang/rust#152229 (Remove deterministic picking from query cycle handling)
 - rust-lang/rust#152970 (extend unpin noalias tests to cover mutable references)
 - rust-lang/rust#149783 (stabilize `cfg_select!`)
 - rust-lang/rust#151744 (fix refining_impl_trait suggestion with return_type_notation)
 - rust-lang/rust#152366 (Add try_shrink_to and try_shrink_to_fit to Vec)
 - rust-lang/rust#152640 (Add direct link to rustc-dev-guide in README)
 - rust-lang/rust#152963 (Revert "Stabilize `str_as_str`")
 - rust-lang/rust#152984 (Remove redundant call to `check_codegen_attributes_extra` in Inliner)
 - rust-lang/rust#152987 (Use `HashStable` derive in more places)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-run-make Area: port run-make Makefiles to rmake.rs disposition-merge This issue / PR is in PFCP or FCP with a disposition to merge it. F-cfg_select `#![feature(cfg_select)]` finished-final-comment-period The final comment period is finished for this PR / Issue. needs-fcp This change is insta-stable, or significant enough to need a team FCP to proceed. P-lang-drag-1 Lang team prioritization drag level 1. https://rust-lang.zulipchat.com/#narrow/channel/410516-t-lang S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-lang Relevant to the language team T-libs Relevant to the library team, which will review and decide on the PR/issue. T-libs-api Relevant to the library API team, which will review and decide on the PR/issue. to-announce Announce this issue on triage meeting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Tracking issue for cfg_select (formerly cfg_match)