rust/library/stdarch
Alisa Sireneva 420544a34a Move wasm throw intrinsic back to unwind
rustc assumes that regular `extern "Rust"` functions unwind only if the
`unwind` panic runtime is linked. `throw` was annotated as such, but
unwound unconditionally. This could cause UB when a crate built with `-C
panic=abort` called `throw` from `core` built with `-C panic=unwind`,
since no terminator was added to handle the panic arising from calling an
allegedly non-unwinding `extern "Rust"` function.

rustc was taught to recognize this condition since
https://github.com/rust-lang/rust/pull/144225 and prevented such
linkage, but this caused regressions in
https://github.com/rust-lang/rust/issues/148246, since this meant that
Emscripten projects could not be built with `-C panic=abort` without
recompiling std.

The most straightforward solution would be to move `throw` into the
`panic_unwind` crate, so that it's only compiled if the panic runtime is
guaranteed to be `unwind`, but this is messy due to our architecture.
Instead, move it into `unwind::wasm`, which is only compiled for
bare-metal targets that default to `panic = "abort"`, rendering the
issue moot.
2025-10-30 15:13:32 +03:00
..
.github/workflows Add testing for Arm64EC Windows 2025-08-10 13:19:06 -07:00
ci use qemu-user instead of qemu-user-static for loongarch CI 2025-09-02 10:52:49 +02:00
crates Move wasm throw intrinsic back to unwind 2025-10-30 15:13:32 +03:00
examples examples: Make Clippy happy 2025-09-12 11:51:38 +00:00
intrinsics_data feat - FEAT_LUT neon instrinsics 2025-03-05 14:54:05 +00:00
.git-blame-ignore-revs Add .git-blame-ignore-revs 2025-02-09 12:57:14 -08:00
.gitignore Add lockfile 2025-06-12 06:03:37 +00:00
.gitmodules Remove ACLE submodule 2023-05-15 17:34:11 +02:00
Cargo.lock update Cargo.lock 2025-09-07 14:11:01 +02:00
Cargo.toml exclude generated rust programs from the workspace 2025-07-18 13:17:38 +02:00
CONTRIBUTING.md Remove impl_tag from CONTRIBUTING.md file 2025-04-18 06:15:48 +00:00
josh-sync.toml Add config files for rustc-josh-sync 2025-07-07 21:51:29 +00:00
LICENSE-APACHE Add license files 2017-09-25 12:43:06 -07:00
LICENSE-MIT Add license files 2017-09-25 12:43:06 -07:00
README.md Update stdarch README 2025-07-22 20:17:49 +02:00
rust-version Prepare for merging from rust-lang/rust 2025-07-31 04:20:34 +00:00
rustfmt.toml Update the intrinsic checker tool (#1258) 2021-12-04 13:03:30 +00:00
triagebot.toml Add sayantn and folkertdev as reviewers 2025-07-09 11:27:59 +01:00
vendor.yml Add SVE support to stdarch-verify 2025-01-16 14:29:19 +00:00

stdarch - Rust's standard library SIMD components

Actions Status

This repository contains the core_arch crate, which implements core::arch - Rust's core library architecture-specific intrinsics.

The std::simd component now lives in the packed_simd_2 crate.

Synchronizing josh subtree with rustc

This repository is linked to rust-lang/rust as a josh subtree. You can use the rustc-josh-sync tool to perform synchronization.

You can find a guide on how to perform the synchronization here.