Closed
Description
Of course, the specific known built-in attributes like #[rustc_copy_clone_marker]
are feature gated, but the rustc_*
names are not reserved in general.
As a result, you can easily create a procedural macro attribute starting with rustc_
.
As a result, introduction of a new built-in attribute is technically a breaking change even if the attribute starts with rustc_
.
Q: Why is introduction of a new built-in attribute a breaking change.
A: Because built-in attributes will conflict with any other attributes in scope having the same name (see #53913 (comment) for some technical details).
Possible solutions:
- Reserve (feature gate) any attributes starting with
rustc_
, including macros, run crater and see what happens. - Do nothing, this is not a big deal.
- Third party attribute names are unlikely to start with
rustc_
. - We are going to add new non-
rustc_*
built-in attributes anyway and go through the same technically breaking changes in process.
- Third party attribute names are unlikely to start with