Valve-funded FEX ships FEX-2611.1 stable patch with a code-cache rework and a Steam Frame crash fix
A seven-commit update to the open-source x86-on-ARM emulator lands five days after the 2611 feature release.
Valve-funded FEX has tagged FEX-2611.1, its latest stable patch, and it's small in exactly the way that matters for a mature emulator. Project lead Ryan "Sonicadvance1" Houdek cut the tag on 11 November 2026, directly on top of the FEX-2611 feature release from five days earlier.
FEX is an open-source, MIT-licensed usermode emulator that runs x86 and x86-64 Linux binaries on ARM64. Funded by Valve since 2018, it's quietly become part of the plumbing for running Windows games through Steam Play on ARM, and its development is heavily tied to the same hardware effort behind the Steam Frame. As of right now the GitHub repository alone carries over 8,000 stars.
FEX-2611.1 carries seven commits across roughly 130 files. Most of those files are test data. The real code changes are far tighter. Two of them deserve your attention.
The code cache finally makes sense across execution modes
FEX compiles guest x86 code once and stores the resulting host machine code on disk so later runs can skip the expensive rework. To decide whether a cached block still applies, it computes a hash that identifies the "machine." That hash combines a format version, a host-feature hash, and per-process feature bits.
The wrinkle is that SVE and AVX support are technically host features yet behave differently across FEX's three execution modes. Plain Linux handles them one way. WoW64 rejects AVX entirely and force-disables SVE. ARM64EC supports AVX again but treats SVE differently still.
So those bits could mismatch between modes sharing the same physical silicon, or fail to separate modes that shouldn't share cached code. Houdek put it plainly in the commit message.
"Annoyingly these are technically host features but they end up being process feature hash bits because they change between Linux, wow64, and arm64ec," he wrote. "This now makes the HostFeaturesHash match between the three which is what we want. While the process feature bits change between them."
The fix relocates SVE/AVX detection into a dedicated ProcessFeatures sub-struct and hashes it separately. Every call site across the codebase got refactored to match. The commit also bumps the DiskCache FormatVersion from 42 to 43.
That version bump invalidates your existing on-disk cache on first run after upgrading. Expected, and safe. Codegen semantics shifted, and a stale cache would only cause problems.
A crash that only surfaces on real hardware
The second change Houdek flags is the kind CI rarely catches. The commit message names a specific failure: affinity changes can push a core index past the number of cores FEX knows about. One of CPUID's functions indexes a per-CPU array with a raw index, which is an out-of-bounds access.
It happens on Frame. That's Valve's upcoming ARM-based handheld, the same company that learned the hard way in 2015 that shipping hardware is ruthless to get right. The Steam Machine arrived late, priced too high, and went nowhere. This handheld carries that history with it.
The fix clamps the index in all three CPUID product-name functions. Three extra lines per function. Nothing dramatic. But out-of-bounds crashes are exactly the edge case that shows up only on a real multi-core consumer device.
The rest of the patch rounds out FEX's Windows side. There's a fix for a ForcedAssert that had never been wired up on Windows, affecting both the ARM64EC and WoW64 exception handlers. A "Volatile Metadata" config flag gets properly connected after Houdek admitted he'd forgotten to wire it the first time. A root-fetcher tool gains a path fix for modern XDG directories. And the instruction-count CI fixtures regenerate to stay in sync with the hashing change.
None of it adds features. It's the low-level tuning that keeps games launching.
On its face, a minor stable release bump is about as thrilling as a spreadsheet. But mature emulation work is mostly this kind of thing. The cross-mode cache correctness helps every user, including anyone running Windows games through Wine or Proton on ARM, since WoW64 and ARM64EC now share a properly bucketed cache while still staying distinct where it counts.
FEX's development is increasingly pointed at Windows-on-ARM. FEX-2604 already joined Proton 11.0 Beta for ARM64EC builds a while back, and these incremental fixes add up toward running x86 Windows games on ARM Linux through Steam. The bigger picture is that FEX has quietly become infrastructure for Valve's ARM gaming strategy, turning the idea that architecture stops mattering into a steady stream of instruction-by-instruction gains.
Gamers watching the numbers still point at roughly a 10 to 20 percent CPU hit when a game uses Vulkan, with GPU work forwarded natively. The tax lands where FEX's overhead peaks and is least noticeable at the same time. Each release chips away at it.
FEX-2611.1 ships under the MIT license. Build it from the tagged source with a couple of commands.
git clone https://github.com/FEX-Emu/FEX.git cd FEX git checkout FEX-2611.1
Or install on supported Ubuntu releases via the one-liner, which also pulls a root filesystem.
curl --silent https://raw.githubusercontent.com/FEX-Emu/FEX/main/Scripts/InstallFEX.py | python3
Setup guides for other distros live on the FEX-Emu wiki. Head here to the release notes.
