fix(build): drop compile-time x86 target-features — runtime AES dispatch
Users on CPUs without AES-NI (Nehalem i7-860, pre-2010 Intel Macs) or without SSSE3 (AMD Phenom II) crashed at launch with SIGILL. The global `-C target-feature=+aes,+ssse3` was kept after the #353/#343 x86-64-v3 incident on the belief that the aes crate's cpufeatures runtime check would protect CPUs without AES-NI — but a compile-time target feature makes cpufeatures compile its check to a constant, so the AES-NI intrinsics ran unconditionally (credentials AES-GCM decrypt at startup), and +ssse3 let LLVM autovectorize anywhere, breaking Phenom II. Measured on the qbz-cmaf hot path (Ctr128BE<Aes128> apply_keystream, 256 MB, release): 2145 MB/s compiled-in vs 2162 MB/s runtime-dispatched, identical output — the flags bought nothing on capable CPUs. Removed from .cargo/config.toml, all dev/build scripts and the release/build workflows; old CPUs now get the software AES fallback instead of a crash. Fixes #549 cc
This commit is contained in:
9 files changed
+104
-68
No files matched your search
@@ -51,9 +51,10 @@ else
|
||||
echo "[slint-run] WARNING: only ${avail_mb} MB free — lowest-memory tier (slow). Close apps / drop to a TTY for a faster build." >&2
|
||||
fi
|
||||
|
||||
# RUSTFLAGS OVERRIDES (does not merge) the .cargo/config.toml rustflags, so the
|
||||
# AES-NI/SSSE3 features must be re-listed (keep in sync with slint-dev.sh).
|
||||
export RUSTFLAGS="-C target-feature=+aes,+ssse3 -C link-arg=-fuse-ld=mold -Z threads=${THREADS}"
|
||||
# No x86 target-features here or in .cargo/config.toml (#549): the aes crate
|
||||
# runtime-dispatches to AES-NI at identical speed, and compile-time features
|
||||
# SIGILL older CPUs.
|
||||
export RUSTFLAGS="-C link-arg=-fuse-ld=mold -Z threads=${THREADS}"
|
||||
export CARGO_PROFILE_RELEASE_CODEGEN_UNITS="${CODEGEN_UNITS}"
|
||||
export CARGO_PROFILE_RELEASE_OPT_LEVEL="${OPT}"
|
||||
export CARGO_BUILD_JOBS="${CARGO_BUILD_JOBS:-1}" # one rustc at a time (memory)
|
||||
|
||||
Reference in new issue
Block a user