The x86 code contains several macros that following this pattern:
```rust
macro_rules! expr {
() => { true; }
}
fn bar(_val: bool) {}
fn main() {
bar(expr!());
}
```
Here, we have a macro `expr!` that expands to tokens sequence with
a trailing semicolon.
Currently, the trailing semicolon is ignored when the macro is invoked
in expression position, due to https://github.com/rust-lang/rust/issues/33953
If this behavior is changed, then a large number of macro invocations in
`stdarch` will stop compiling.
Regardless of whether nor not this change is made, removing the
semicolon more clearly expresses the intent of the code - these macros
are designed to expand to the result of a function call, not ignore its
results (as the `;` would suggest).
|
||
|---|---|---|
| .. | ||
| .github/workflows | ||
| ci | ||
| crates | ||
| examples | ||
| .cirrus.yml | ||
| .gitignore | ||
| Cargo.toml | ||
| CONTRIBUTING.md | ||
| LICENSE-APACHE | ||
| LICENSE-MIT | ||
| README.md | ||
| triagebot.toml | ||
| vendor.yml | ||
stdarch - Rust's standard library SIMD components
Crates
This repository contains two main crates:
-
core_archimplementscore::arch- Rust's core library architecture-specific intrinsics, and -
std_detectimplementsstd::detect- Rust's standard library run-time CPU feature detection.
The std::simd component now lives in the
packed_simd crate.
How to do a release
To do a release of the core_arch and std_detect crates,
- bump up the version appropriately,
- comment out the
dev-dependenciesin theirCargo.tomlfiles (due to https://github.com/rust-lang/cargo/issues/4242), - publish the crates.