| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| FEX Release FEX-2601 source code.tar.gz | 2026-01-07 | 2.3 MB | |
| FEX Release FEX-2601 source code.zip | 2026-01-07 | 4.2 MB | |
| README.md | 2026-01-07 | 13.6 kB | |
| Totals: 3 Items | 6.6 MB | 1 | |
As the developers awaken from their holiday induced hiberation, another release is upon us in the new year! Let's see what we managed to implement before hibernation snuck up on us.
Update thunks for Vulkan 1.4.337
This update is fairly important as Proton and Mesa have started using some new extensions that we didn't previously support. So if your system had a new driver with these extensions then dxvk/vkd3d-proton would assert out. With these updated it is no longer a problem and thunking is working again as normal!
Fix a couple rare hangs on Wine mutex handling
FEX has a custom mutex implementation that has "writer" priority that was implemented a few months ago. We needed to implement this to help reduce stuttering in our code cache implementation. When implementing it we actually had two bugs in the implementation for Wine that went unnoticed until now. Our implementation is fairly smart and will spin on the mutex using ARM's highly efficient "Wait-For-Event" instruction for 1/10th of a millisecond before deferring to the kernel mutex implementation. Because we block the mutex for such a small amount of time, it was /highly/ unlikely to hit the kernel implementation. When we did defer to the kernel (Or Wine's implementation anyway) we had a bug in our anti-stampeding behaviour which would cause reader threads to never wake up. Then additionally we had a bug in the calling API for the "RtlWaitOnAddress" function declaration where it was only waiting on a 32-bit address. Causing the process to never wake up and usually crash.
A very long winded way to say we had two simple bugs that were rare and infuriating to debug because of a race.
JIT fixes
This month there weren't actually that many JIT fixes. We found a bug that was breaking Ubisoft's UPlay program which is now fixed. Additionally we resolved some handling of self-modifying code on our Wine implementation that could fix some spurious hangs or incorrect invalidations.
Minor Linux syscall fix
This month we noticed that Steam was using some new fcntl syscall operations that we didn't handle. This caused Steam to crash in some rare edge cases when it actually called this syscall. We have now resolved this, and future proofed any new commands getting emulated by passing directly to the kernel.
More code caching implementation work
This is definitely the task that has the most code land for it. There was code caching support wired up for both Linux side and Wine side. While still a heavy Work-In-Progress, we have code caches getting generated and loaded at runtime to reduce the amount of time spent running in the JIT. In particular, this can be thought of as trading CPU time for disk space, theoretically reducing JIT stutter if the code already existed in the cache. Still lots of work to go to make this viable for the user, but we'll be trucking along as usual!
39C3 talk from @neobrain
This last month, neobrain had a talk going through some of the architecture of FEX-Emu. It's very informative and definitely worth the watch!

Raw Changes
FEX Release FEX-2601
- ARM64Emitter
-
Force NOP padding to be enabled (https://github.com/FEX-Emu/FEX/commit/9e8915ef9ebd7ed8e5b32c39663e4b4d44d06ecb)
-
Arm64Emitter
-
Initial work for LoadConstant padding audit (https://github.com/FEX-Emu/FEX/commit/d5823568159466383b4180968f5bb0b17c1481c8)
-
BranchOps
-
Use RIP relocs for direct branch targets (https://github.com/FEX-Emu/FEX/commit/c57df7309aadc2734a850e1c9baa5ceae236abfd)
-
CMake
- Move CMakeModules to Data/CMake (https://github.com/FEX-Emu/FEX/commit/651ef64617b8c13d42e8db9433b876cdc0b09759)
- Fix mingw if host has libxxhash-dev installed (https://github.com/FEX-Emu/FEX/commit/900c1790d3d1e2d98c14a61da26c4ef03c82a64f)
-
Support overriding version/hash via CMake args (https://github.com/FEX-Emu/FEX/commit/19d3450cb33485351575149fb456e16c70c54d08)
-
CodeCache
- Fix misparenthesized expression in SaveData() (https://github.com/FEX-Emu/FEX/commit/9101e704ce5c343968ba1da57085053a26159770)
- Rebase block entrypoint info (https://github.com/FEX-Emu/FEX/commit/5747d1c5fc0ddf00d2723ba1960f7f0ffa813730)
- Make LoadData Thread argument an optional pointer (https://github.com/FEX-Emu/FEX/commit/bc069f2ec8c3df91028ccb6d1c5b0d8a8fd26fae)
- Implement automatic cache generation (https://github.com/FEX-Emu/FEX/commit/eb425fe64005794d54bfcabcb166ba5f0bbf961e)
- Implement runtime cache validation (https://github.com/FEX-Emu/FEX/commit/93f6a8cb4d3fd48c4768e7b2160a82f853077992)
- Trigger delayed cache loading for the main executables and its interpreter (https://github.com/FEX-Emu/FEX/commit/71c8436877f81a5079611f9045e80b9b5e198cba)
-
Implement cache loading (https://github.com/FEX-Emu/FEX/commit/ec6767060abd0a79fe43afb4013ab7e6e78880e6)
-
Common
-
Use LOCALAPPDATA for GetCacheDirectory on WOW64/ARM64EC (https://github.com/FEX-Emu/FEX/commit/499970db681705161073442e44a4e3250d073c57)
-
Config
-
Remove stdout from OutputLog (https://github.com/FEX-Emu/FEX/commit/e1c6a910d2820cba28d449f0630e6762243b1c2d)
-
Dispatcher
-
Silence warning on ARM64EC (https://github.com/FEX-Emu/FEX/commit/9a128686a12b542a188279538d76110d1db3f7d6)
-
FEXCore
- Cleanup pointers structure (https://github.com/FEX-Emu/FEX/commit/b29a78c068d106df84ffe894e8c7787023544bc3)
- Fixes circular dependency with thunk callback (https://github.com/FEX-Emu/FEX/commit/5627ddff8faa831538c265e2ca34ec5d67ee6a05)
- Switch constant emission to default to
NoPad(https://github.com/FEX-Emu/FEX/commit/2b4492c3f96776bc729d0bf77abd12015148e44e) -
Revert literal optimization from https://github.com/FEX-Emu/FEX/pull/4884 (https://github.com/FEX-Emu/FEX/commit/da46d51f827e5dcdf609b02e13b07dd29deab91a)
-
FEXOfflineCompiler
-
Implement SyscallHandler::LookupExecutableFileSection (https://github.com/FEX-Emu/FEX/commit/5ca549ef5fa9a305ce2e1609ff2aa362c768425a)
-
FEXServer
-
Add protocol interface to request code cache population (https://github.com/FEX-Emu/FEX/commit/805a4c1ab1084fc477875d74b206f812bc0aa433)
-
Frontend
- Only decode REX if it is at the correct location (https://github.com/FEX-Emu/FEX/commit/c8d72eabe589392b962bec94d002c5ffdb7381c2)
-
Also fetch relocations and section bounds when validating (https://github.com/FEX-Emu/FEX/commit/0a18ea8f4d0d9f1eef1b94a4f55c0684621d01dd)
-
ImageTracker
- Load AOT images (https://github.com/FEX-Emu/FEX/commit/a3779be9e1c9874386269fb1c8fe5e53d99778f4)
- Load PE relocations when generating code caches (https://github.com/FEX-Emu/FEX/commit/b87bb1dec615e42d77bbd4e03f58efd86bedbee0)
- Support codemap file generation (https://github.com/FEX-Emu/FEX/commit/c54dfd9eddcae725bd25dd67d8f42ee48d172292)
-
Track loaded PE images for LookupExecutableFileSection (https://github.com/FEX-Emu/FEX/commit/212a3f45f8c2dedbb7a8bce463b24b712f7f2e27)
-
Interpreter
-
Moves around the thread and ELF initialization code (https://github.com/FEX-Emu/FEX/commit/ed1d49520fa197d7d96ff0477331fd776eded698)
-
JIT
-
Fixes typo (https://github.com/FEX-Emu/FEX/commit/c4258be69349ec91210659ddec012f9a3c7f05fe)
-
LinuxSyscalls
-
x32
- Fixes fcntl assert (https://github.com/FEX-Emu/FEX/commit/6c06f47cf5fef54dc5222c3ca035687f766923b2)
-
LookupCache
-
Fix mistake in nested CacheBlockMapping call (https://github.com/FEX-Emu/FEX/commit/a957f1f7493a113b3e7e45451d41a4b50b69a279)
-
OpcodeDispatcher
-
Explicitly calculate flags after _TelemetrySetValue (https://github.com/FEX-Emu/FEX/commit/281981e61973afdde283afa233a97d5c5296be0f)
-
Relocations
- Disable 6-byte size optimization in
InsertGuestRIPMove(https://github.com/FEX-Emu/FEX/commit/c7eb4c8447530e9442a1337ff2857100d45e4e0c) -
Switch to robin_map to improve lookup perf (https://github.com/FEX-Emu/FEX/commit/488959600e27c31c4b009e2f1f89a43d31171f24)
-
SHMStats
-
Avoid ISB usage when stats are disabled (https://github.com/FEX-Emu/FEX/commit/6a49b8cec8ca1402f6a3a0e23948da0b4beedad5)
-
Scripts
-
Have InstallFEX check kernel version (https://github.com/FEX-Emu/FEX/commit/b40768895d0c875a3f131d4ca5008405918ae3c2)
-
Steam
-
Don't let the FEXServer inherit FEXServerManager's original stdout (https://github.com/FEX-Emu/FEX/commit/53925dcc3dc0640ac73bcb822811a416a9780f57)
-
Syscalls
-
Fix DEBUG_STRACE printing (https://github.com/FEX-Emu/FEX/commit/e8591090f246c49631c14ef70f32c7df14b5646e)
-
Thunks
-
Vulkan
- Update for v1.4.337 (https://github.com/FEX-Emu/FEX/commit/668e0275c39212e7f99af0ef2a64914624b332d8)
-
Tools
-
pidof
-
VDSO
-
Forgot to remove a if check (https://github.com/FEX-Emu/FEX/commit/144c4bf40848ed6228a34e92b1a73ecf90b2986e)
-
WOW64
-
Lock the JIT context and block suspend during context operations (https://github.com/FEX-Emu/FEX/commit/a25d90de8a7698149f6003386aa73469cce2c4db)
-
WinAPI
-
Implement Sleep (https://github.com/FEX-Emu/FEX/commit/37b0e9e2759bc855a058838781cd1fb6fe910fc4)
-
Windows
- Improve handling of RWX memory (https://github.com/FEX-Emu/FEX/commit/d592e2afb04dbad819baf2a0abbd83d34aa24577)
- Invalidate code in freed memory after the free syscall (https://github.com/FEX-Emu/FEX/commit/cb7de45b48df6fd41334082602c632e887fdf408)
- Fix RtlWaitOnAddress signature (https://github.com/FEX-Emu/FEX/commit/f098b415db06c20ff58e4dd1adfdbb7f67e8031f)
- Implement _[w]sopen file APIs (https://github.com/FEX-Emu/FEX/commit/f8199998849127dcb9956c02fdb70a601ee0f7ff)
- Introduce ImageTracker for tracking per-loaded-image data (https://github.com/FEX-Emu/FEX/commit/dc764db35d8ed5be55bb8b223e89523da1b2d736)
- Switch GetSection/ExecutableFilePath to returning full paths (https://github.com/FEX-Emu/FEX/commit/956f97efd40eec2d4a54fa89ccd4e904be56ccc5)
-
Split out CRT/WinAPI reimplementation (https://github.com/FEX-Emu/FEX/commit/ebdbf584742cd4b751b7fbcea2a268b141445695)
-
WritePriorityMutex
- Add some more documentation (https://github.com/FEX-Emu/FEX/commit/9fa8148cc62a4c21741bca8eaa693cbed6906c9c)
-
Fix rare case of dropped read waiter wakes (https://github.com/FEX-Emu/FEX/commit/ce9824a4796a0ff25c022b3d625d37efe6f327f2)
-
Misc
- [cmake] explicit platform and bit-width checks (https://github.com/FEX-Emu/FEX/commit/dbd802c85c2a7f1826d3cebc2a2a72b7d0e37915)
- [cmake] more parenthesis cleanups, linker gc module, more same-line stuff (https://github.com/FEX-Emu/FEX/commit/1f6b3d50b6a515d421d2833b95a954408a1cd92f)
- [cmake] refactor: compiler and architecture handling (https://github.com/FEX-Emu/FEX/commit/51f6722277ebf94eececbb352ce9091a8d9be4a1)
- [cmake] better option descriptions + more consistent language (https://github.com/FEX-Emu/FEX/commit/9c0c969b480fc1fdfcd5feba4388c0406b7fa180)
Constantaudit (https://github.com/FEX-Emu/FEX/commit/fd2ee4e990b34a502be9261d33ee4a1308a5911d)_Constantaudit (https://github.com/FEX-Emu/FEX/commit/851fbaec2d24910e8aecf89cc9d843aa0290b312)- First round of
LoadConstantauditing (https://github.com/FEX-Emu/FEX/commit/5bbbe4d2e952c3eee77bc19b31ba643825dc536d) - [cmake] Use a Find module for xxhash (https://github.com/FEX-Emu/FEX/commit/5a47565ee189235cb001f1f708a76bf1193f575a)
- [cmake] do not use uppercase command names (https://github.com/FEX-Emu/FEX/commit/f24f88e46cc14cf05a260f16f5edf58eb8d2a453)
- [cmake] reduce usage of trivial variables (https://github.com/FEX-Emu/FEX/commit/0edf961ce9d4a55f8dcabf057a481c6903ae6302)
- [cmake] prefer end parenthesis on same line, no space after some calls (https://github.com/FEX-Emu/FEX/commit/b41b967ba5892dae6a05dd8acc11bd40f7f3bf58)
- [cmake] FEXCore: further reduce library redundancy (https://github.com/FEX-Emu/FEX/commit/f153d86bce68b4f46b90f771011f6da03e853f7a)
- [cmake] propagate
-ISourceto all Tools (https://github.com/FEX-Emu/FEX/commit/bd8f6f16aad4d4992469cd3fc41d81ba7aea68c4) - [cmake] use
MINGWbuiltin rather than custom detection (https://github.com/FEX-Emu/FEX/commit/7cdef04fc70a2f0c72aa17aced7331e8bb4fcce8) - Some minor NFC (https://github.com/FEX-Emu/FEX/commit/974ba78a93b80c6258b858c38f23592cf0cc4ee7)
- Guest relocation support (https://github.com/FEX-Emu/FEX/commit/fef1993dd764e9178b2895bb348d06bef548d354)
- Various trivial fixes for https://github.com/FEX-Emu/FEX/issues/5106 (https://github.com/FEX-Emu/FEX/commit/296988be02b5336246a8a8cb5509278b73e43dca)
-
code-format-helper: Update urllib3 dependency (https://github.com/FEX-Emu/FEX/commit/2e2563adc08b5fbf73da22e98cd6498fb567b33b)
-
github
-
steamrt4
- Additional comments (https://github.com/FEX-Emu/FEX/commit/bf9ab7ffbee9bc14f21741fe265d99f4df9a2680)
-
unittests
-
ASM
- Adds test for flags clobber in
TelemetrySetValue(https://github.com/FEX-Emu/FEX/commit/eb275769a5d083e4e57d55309e9afa3e31a09258) - Test 32-bit displacement encoding (https://github.com/FEX-Emu/FEX/commit/d197300be78c50a8aaacf701922a3d3811c6f0fa)
- Adds test for flags clobber in
-
FEXLinuxTests
- Fix gcc build (https://github.com/FEX-Emu/FEX/commit/fedebf4b66225abef75b91c57137bc9650ca45f3)
- Force clang building for tests (https://github.com/FEX-Emu/FEX/commit/62383a1c72940e0d594740a361634d4949eec9e6)