felix86 26.10 is released! Denuvo, EA, and Battle.net games now work, optimizations landed, and we improved loading time in Monster Hunter World by more than 5x.
Read the blog post: https://felix86.com/felix86-26-10/
Compatibility list: https://felix86.com/compat/
What's Changed
- Linux: Slightly randomize stack by @OFFTKP in #731
- Recompiler: Fix 32-bit WRFSBASE and WRGSBASE not zero-extending by @OFFTKP in #730
- Linux: Make PTRACE_GETREGSET write iov_len by @OFFTKP in #735
- Recompiler: Add hot block and remove unnecessary switchToX87 calls by @OFFTKP in #733
- Recompiler: Optimize push/pop chains by @OFFTKP in #732
- Recompiler: Introduce 32-bit reduced precision optimizations by @OFFTKP in #736
- Chore: Remove unused functions by @OFFTKP in #729
- Linux: Make /proc/self/auxv emulation configurable by @OFFTKP in #738
- Chore: Bump version by @OFFTKP in #737
- Recompiler: Warn or fault better on unaligned atomics we can't emulate by @OFFTKP in #739
- Recompiler: Don't use riscv_get_mnemonic in native_pass by @OFFTKP in #740
- Recompiler: Revert "Avoid unnecessary mprotect calls (#721)" by @OFFTKP in #742
- Common: Validate binfmt_misc installation on startup by @OFFTKP in #741
- Common: Fix thunking when libraries are not in rootfs by @OFFTKP in #743
- Recompiler: Increase scan ahead count by @OFFTKP in #744
- Linux: Various signal related fixes by @OFFTKP in #745
- Linux: Fix tracing child when not supposed to by @OFFTKP in #746
- Linux: Add some more wayland thunk funcs by @OFFTKP in #747
- Linux: Guest memory tracking by @hazelwiss in #645
- Common: Reinitialize some locks on fork by @OFFTKP in #748
- Common: Fix various allocator nits by @OFFTKP in #749
- Recompiler: Longjmp if scan ahead faults by @OFFTKP in #750
- Linux: Only handle SMC on store and writeable regions by @OFFTKP in #751
- Recompiler: Set MADV_HUGEPAGE for code cache by @OFFTKP in #752
- Common: Make sure to read config before applying environment by @OFFTKP in #753
- Common: Fix warn message being printed twice by @OFFTKP in #754
- Recompiler: Don't hardcode regs in CMPXCHG16B by @OFFTKP in #755
- Recompiler: Reduce lea code duplication by @OFFTKP in #756
- Linux: Fix getcwd returning bad size by @OFFTKP in #757
- Linux: Fix some flaky gvisor tests by @OFFTKP in #758
- Tools: Add latency measurer by @OFFTKP in #759
- CI: Switch to older create-github-app-token version by @OFFTKP in #760
- Recompiler: Optimize MOVD/MOVQ by @OFFTKP in #761
- Recompiler: Optimize MOVD/MOVQ again by @OFFTKP in #762
- Tools: Measure more instructions in latency measurer by @OFFTKP in #763
- Tools: Raise latency measurer necessary delta for edit by @OFFTKP in #764
- Linux: Emulate /proc//exe of other processes by @OFFTKP in #765
- Linux: Fix 32-bit PTRACE_SETSIGINFO by @OFFTKP in #766
- Linux: Fix potential deadlock when forking during malloc by @OFFTKP in #767
- Linux: Clean up host stack on exit by @OFFTKP in #768
- Recompiler: Optimize (V)UNPCK instructions by @OFFTKP in #769
- Recompiler: Optimize SHUFPD by @OFFTKP in #770
- Recompiler: Optimize conversions and vector stores by @OFFTKP in #772
- Thunks: Add VK_KHR_present_wait2 by @OFFTKP in #773
- Linux: Reset locks on vfork by @OFFTKP in #774
- Recompiler: Optimize call/ret by @hazelwiss in #771
- Linux: Don't take handle_wild_sigsegv path on force_defer_synchronous by @OFFTKP in #775
- Common: Add per-executable profiles by @OFFTKP in #776
- Recompiler: Implement movzx word, word by @OFFTKP in #777
- Recompiler: Fix assertion in big block ending in certain instrs by @OFFTKP in #778
- Recompiler: Fix wrong translation_sizes for first instruction by @OFFTKP in #780
- Recompiler: Implement inline SMC by @OFFTKP in #781
- Chore: Fix string format warnings by @OFFTKP in #779
- Recompiler: Fix inline SMC detection hitting backwards writes by @OFFTKP in #782
- Recompiler: Optimize MSVC strstr by @OFFTKP in #783
- Linux: Only add hacky envs if they are missing by @OFFTKP in #785
- Thunks: Implement VK_AMD_buffer_marker by @OFFTKP in #786
- Recompiler: Update RIP after x87 operation by @OFFTKP in #784
- Linux: Handle signal happening right before futex lock by @OFFTKP in #787
- Recompiler: Optimize MOV+SHUFPS to PSHUFD by @OFFTKP in #788
- Tools: Fix regression in REPL by @OFFTKP in #789
- Linux: Lock and unlock our semaphores before and after forks by @OFFTKP in #790
- Chore: Slightly optimize Zydis decoding by @OFFTKP in #791
- Recompiler, Linux: Fault on non-executable pages by @OFFTKP in #792
- Chore: Reduce code duplication a bit by @OFFTKP in #793
- Recompiler: Allow SMC on helper RMW functions by @OFFTKP in #794
- Recompiler: Implement VMCALL by @OFFTKP in #797
- Thunks: Add some wayland thunks by @OFFTKP in #796
- Recompiler: Implement SHA extension by @OFFTKP in #795
- Recompiler: Handle unaligned lock inc/dec dword by @OFFTKP in #798
- Linux: Fake number of online cores by @OFFTKP in #799
- Linux: Fix
int 0x2don Wine by @OFFTKP in #800 - Chore: Remove unnecessary configurations by @OFFTKP in #801
- Recompiler: Add inaccurate_conversions config by @OFFTKP in #802
- Linux: Better online core emulation by @OFFTKP in #803
- Recompiler: Optimize SHA256MSG1 by @OFFTKP in #804
- CI: Strip release build by @OFFTKP in #805
Full Changelog: 26.09...26.10