diff options
| author | bors <bors@rust-lang.org> | 2024-08-17 22:48:42 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-08-17 22:48:42 +0000 |
| commit | 9cfbd23ac44a202e1a2e2c0f20ffd05d223050e3 (patch) | |
| tree | e7bfc4b0a29934fbdad39962a9ce22d413151d9c /compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | |
| parent | 7b2299a2d210c71cd8f40b4e94af4bcd0aa8381c (diff) | |
| parent | 87949d7ddea525a7284bed36741e0968c15cfe2e (diff) | |
| download | rust-9cfbd23ac44a202e1a2e2c0f20ffd05d223050e3.tar.gz rust-9cfbd23ac44a202e1a2e2c0f20ffd05d223050e3.zip | |
Auto merge of #128771 - carbotaniuman:stabilize_unsafe_attr, r=nnethercote
Stabilize `unsafe_attributes`
# Stabilization report
## Summary
This is a tracking issue for the RFC 3325: unsafe attributes
We are stabilizing `#![feature(unsafe_attributes)]`, which makes certain attributes considered 'unsafe', meaning that they must be surrounded by an `unsafe(...)`, as in `#[unsafe(no_mangle)]`.
RFC: rust-lang/rfcs#3325
Tracking issue: #123757
## What is stabilized
### Summary of stabilization
Certain attributes will now be designated as unsafe attributes, namely, `no_mangle`, `export_name`, and `link_section` (stable only), and these attributes will need to be called by surrounding them in `unsafe(...)` syntax. On editions prior to 2024, this is simply an edition lint, but it will become a hard error in 2024. This also works in `cfg_attr`, but `unsafe` is not allowed for any other attributes, including proc-macros ones.
```rust
#[unsafe(no_mangle)]
fn a() {}
#[cfg_attr(any(), unsafe(export_name = "c"))]
fn b() {}
```
For a table showing the attributes that were considered to be included in the list to require unsafe, and subsequent reasoning about why each such attribute was or was not included, see [this comment here](https://github.com/rust-lang/rust/pull/124214#issuecomment-2124753464)
## Tests
The relevant tests are in `tests/ui/rust-2024/unsafe-attributes` and `tests/ui/attributes/unsafe`.
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
