felix86 26.11 is released! Performance optimizations and compatibility improvements, once again.
Read the blog post: https://felix86.com/felix86-26-11/
Compatibility list: https://felix86.com/compat/
What's Changed
- Thunks: Fix missing
== 0on strcmp by @OFFTKP in #806 - Chore: Remove unused enum by @OFFTKP in #808
- Recompiler: Optimize PCMPEQ with same register by @OFFTKP in #807
- Chore: Fix --info exit handling, kill-all robustness and missing executable error by @Miabeyefendi in #809
- Chore: Print CLI fatal errors to stderr by @Miabeyefendi in #810
- Common: Check second fdopen and report errno in binfmt registration by @Miabeyefendi in #811
- Linux: Fix some argv[0] issues by @OFFTKP in #816
- Translation, Common: Translate some strings, add Chinese language by @OFFTKP in #817
- Linux: Make sure an assert doesn't happen by @OFFTKP in #818
- Recompiler: Set code cache clears as pending when changing TF by @OFFTKP in #819
- Recompiler: Place address cache relative to ThreadState by @OFFTKP in #820
- Chore: Remove unused function from emulator.hpp by @OFFTKP in #821
- Chore: Remove xthead leftovers, move compileNext to Recompiler by @OFFTKP in #822
- Common: Make packaging slightly easier by @OFFTKP in #823
- Thunks: Implement VK_EXT_pageable_device_local_memory by @OFFTKP in #825
- Chore: Replace inaccurate_minmax and inaccurate_conversions with unsafe_math by @hazelwiss in #826
- Recompiler: Implement self-validating blocks and fix potential SMC race by @OFFTKP in #824
- Recompiler: Implemented more accurate paths for MIN/MAX by @hazelwiss in #827
- Linux: Use std::map for guest tracking by @OFFTKP in #828
- Linux, Recompiler: Don't protect pages for SMC if already protected by @OFFTKP in #829
- Config: Remove alignment_check by @OFFTKP in #830
- Recompiler: Fix some relocatable stuff by @OFFTKP in #831
- Recompiler: Fix slight bug in SAR by @OFFTKP in #832
- Chore: Update readme installation command by @OFFTKP in #833
- Recompiler: Fix lock or with unaligned word by @OFFTKP in #834
- Recompiler: Handle DIV/IDIV quotient overflow by @OFFTKP in #835
- Recompiler: Implement FIP by @OFFTKP in #836
- Chore: Deduplicate syscall ptrace stops and strace output by @lloyd-dps in #838
- Chore: Remove unused declarations and accessors by @lloyd-dps in #837
- Linux: Fix PTRACE_GET_SYSCALL_INFO size for syscall exit stops by @lloyd-dps in #839
- Linux: Implement PTRACE_GETFPREGS and PTRACE_SETFPREGS by @lloyd-dps in #840
- Linux: Don't wake sigsuspend and pause on guest-blocked signals by @lloyd-dps in #841
- Linux: Keep the sigsuspend mask while delivering the waking signal by @lloyd-dps in #842
- Linux: Restart syscalls when signal gets deferred before the interruptible thunk by @lloyd-dps in #843
- Thunks: Make thunk storage global by @OFFTKP in #844
- Recompiler: Implement some missing mnemonics by @lloyd-dps in #846
- Linux: Add more restartable syscalls by @lloyd-dps in #845
- Recompiler: Invert branch condition without XORI by @OFFTKP in #847
- Recompiler: Track flags needed after each instruction by @OFFTKP in #848
- Recompiler: Follow conditional jumps when scanning ahead by @OFFTKP in #849
- Config: Remove inline_syscalls by @OFFTKP in #851
- Recompiler: Fix CMP and CMOV fusion with memory sources and unsigned immediates by @lloyd-dps in #850
- Recompiler: Add TEST/CMP+JCC fusing by @OFFTKP in #853
- Recompiler: More accurate VROUND implementation for large values, NaNs and infinities. by @hazelwiss in #852
- Linux: Fix dangling iovec pointers and unreceived messages in 32-bit recvmmsg by @lloyd-dps in #854
- Linux: Handle SO_RCVTIMEO and SO_SNDTIMEO in 32-bit getsockopt by @lloyd-dps in #855
- Linux: Use 32-bit masks for the legacy 32-bit sigprocmask by @lloyd-dps in #857
- Linux: Don't assert on the new address for in-place 32-bit mremap by @lloyd-dps in #856
- Linux: Bounds check the entry number in set_thread_area and get_thread_area by @lloyd-dps in #858
- Linux: Pass through 32-bit sendto and recvfrom by @lloyd-dps in #859
- Linux: Pass through 32-bit unlinkat, renameat2, utimensat, setxattr, lsetxattr and syncfs by @lloyd-dps in #860
- Linux: Pass through 32-bit timer_delete, timer_getoverrun, timer_gettime and timer_settime by @lloyd-dps in #863
- Linux: Pass through 32-bit setgroups, unshare, membarrier and getcpu by @lloyd-dps in #861
- Linux: Implement 32-bit timer_create by @lloyd-dps in #862
- Chore: Move compilation state to BlockState by @OFFTKP in #864
- Recompiler, Chore: Split checkIfBreakpoint by @OFFTKP in #865
- Linux, Recompiler: Fix dirty upper register halves in 32-bit mode by @OFFTKP in #866
- Misc: Bump version by @OFFTKP in #867
- Recompiler: Use JAL to mark link point instead of AUIPC by @OFFTKP in #868
- Recompiler: Emit UD when extensions are missing instead of asserting by @OFFTKP in #869
- Recompiler: Implement superblocks by @OFFTKP in #870
New Contributors
- @Miabeyefendi made their first contribution in #809
- @lloyd-dps made their first contribution in #838
Full Changelog: 26.10...26.11