Software 44174 Published by

The FEX‑2603 release finally resolves the Steam crash issue, hides hybrid CPU names to dodge anti‑tamper checks, and replaces JEMalloc with a leaner RPMalloc, cutting memory usage by several hundred megabytes. CPUID masking now prevents dozens of anti‑tamper games from misreading core types, while the switch to dc zva for AVX zeroing lifts FPS in demanding titles such as Death Stranding. Updated build scripts support LLVM 22 and the latest mingw toolchain, allowing clean Wine DLL builds without downgrading compilers. A series of JIT fixes—improved VEX compares, streamlined x87 conversions, added ARPL handling, and a faster unordered_dense cache—tightens performance for high‑load workloads.



FEX‑2603 Release: Steam Crash Fixes, Big.LITTLE Hiding, and a Leaner Memory Footprint

The latest FEX iteration finally delivers on the promises made last month. Users now get a stable build that no longer flounders with Steam’s steamwebhelper process, a clean CPUID string that bypasses anti‑tamper checks, and a noticeably smaller memory footprint thanks to a new allocator.

Steamwebhelper Crash – Known Bug

A recent Steam update altered the CEF library so that the steamwebhelper daemon throws an exception when FEX logs are active. The result is a constant flicker: Steam crashes, restarts, crashes again. This isn’t a regression in FEX itself; it’s a side effect of Steam’s new FD handling. While the fix remains incomplete, disabling logging dramatically reduces the frequency of these spurious restarts.

Hiding the Big.LITTLE Layout by Default

Several anti‑tamper games misinterpret the hybrid CPU layout exposed through CPUID. By masking the distinct core types and replicating the name of the first logical processor across all threads, FEX sidesteps dozens of compatibility issues that previously required manual workarounds. The change is trivial in code but yields a big win for gamers who hit “Game not recognized” on launch.

Zeroing Optimized with dc zva

CPU cores that support the dc zva instruction can clear cache lines faster than a series of stp ops. Switching vzeroupper and vzeroall to use this zero‑store technique lifted Death Stranding’s FPS from 55 to 70 on AmpereOne hardware during internal benchmarks. The tweak is invisible to users but noticeably smoother in games that rely heavily on AVX.

Builds on Clang/LLVM 22 and Mingw

Minor API changes in the latest LLVM release broke FEX’s build pipeline. After patching the clang bindings and updating libc++, the project compiles cleanly with both the new LLVM 22 toolchain and the newest mingw port. Package managers can now build Wine DLLs without resorting to older compilers, keeping dependencies fresh.

Switch to RPMalloc for Lower RAM Footprint

The JEMalloc replacement was chosen because it tracks less internal state. In a real‑world test of FEX running a 3D sandbox, memory usage fell from roughly 1.2 GB to under 800 MB after the change. The allocator is also smaller and easier to read, which makes debugging allocation bugs a breeze.

JIT Tweaks

A handful of improvements were made to the Just‑In‑Time compiler: VEX compare operations now handle all edge cases correctly, x87 conversion paths are streamlined, undocumented instruction aliases are fixed, an uncommon ARPL opcode is implemented, and the cache backing the JIT uses ankerl::unordered_dense for faster lookups. These micro‑optimizations collectively shave a few FPS from high‑load workloads.

Linux Frontend Enhancements

The new release also resolves several kernel‑level quirks: program_invocation_name is overridden so Mesa can see proper application profiles, execveat bugs with MFD_CLOEXEC are patched, seccomp and personality flags now inherit correctly, DRM LRU file descriptor caches are per‑thread, and the minimum altstack size requirement has been adjusted to match current standards. Together these changes make FEX more reliable under diverse Linux distributions.

The patch set is large but each change serves a clear purpose—whether it’s keeping Steam stable, avoiding anti‑tamper headaches, or shaving memory. The next step will be to monitor user feedback and continue refining the experience.

Release FEX Release FEX-2603

Read the blog post at FEX-Emu's Site! Welcome back, take off your shoes and relax, it's been a while since our last release.

Release FEX Release FEX-2603 · FEX-Emu/FEX