Logo
Explore Help
Register Sign In
steam-frame/FEX-Emu--FEX
Watch 1
Star 0 Fork 0
mirror of https://github.com/FEX-Emu/FEX.git synced 2026-10-06 07:00:20 +02:00
Code Issues Packages Projects Releases 66 Wiki Activity

66 Releases 70 Tags

RSS Feed
  • FEX-2609 395b132f34
    Compare

    FEX Release FEX-2609 Stable

    DieMitchell released this 2026-10-05 11:20:10 +02:00 | 158 commits to main since this release

    Read the blog post at FEX-Emu's Site!

    "Kept you waiting, huh?" - Solid Snake, professional sneaky man.

    We're not going to sugar coat it, this last month was very busy and time just kept moving faster than expected.
    A ton of work landed this month so we're going to just need to pick some of the highlights. Let's hop in!

    Jit work you say?

    A bunch of random bug fixes and performance improvements landed this month. Primary things here are that there were various behaviour fixes for some
    instructions. Undefined and defined flag fixes that FEX was messing up, some deadlock fixes, handling more cases that were previously asserts. There
    was an optimization for the PMULHRSW instruction family that increased some Geekbench benchmark numbers. Surely some game uses it somewhere to notice
    the 2x perf uplift. We also made the "full" self-modifying-code detection faster, which is used for Unity games in some instances. So that's nice.
    We also reduced some lock-contention in the JIT so multiple threads jitting code at the same time should block each other less frequently.

    There's more of course but come on we gotta go!

    Removed hacky unixlib fallbacks

    For Wine we had some fallbacks for when our unixlib helper library wasn't installed. This last month we removed these fallbacks and require the
    unixlib for these features now. Currently all of these features technically are optional, so it isn't a big deal if unixlib is missing. We also
    discovered when removing these that we would accidentally be doing Windows syscalls if someone was replacing XTAJIT/Prism with FEX. Oops! Well those
    fallbacks are removed so that won't happen anymore at least.

    Disk-cache as an option

    Through an absolute flurry of commits this last month, disk caching of JIT code is in a place where we think it can be tinkered with more readily.
    What does disk caching mean for FEX? Once the configuration option is enabled; any code that FEX's JIT generates is cached to the disk in a FOZ file
    format database. Then when FEX needs to JIT code subsequently, it will attempt to look up code from that FOZ database first before going through the
    work of actually jitting. This database lookup happens during the initial run but also subsequent runs of FEX to reduce JIT stutter when running
    games.

    Some downsides today are that if the disk caching is enabled on applications that JIT code itself, then the cache can technically grow unbounded. We
    haven't yet implemented any caching size limits or any way to remove stale cache entries. Additionally if any of the file contents change, there might
    be conflicts today where the cache doesn't get invalidated in those instances. So there's still some growing pains but we don't think these are a
    showstopper for tinkering today. To give it a try you can set the `FEX_DISKCACHE=1` environment variable or the `"DiskCache": "1"` json option
    to enable everything. This works with both the FEX linux interpreter program and also WINE, it maybe be a bit more stable in WINE for now. The cache
    files will end up in WINE's %APPDATA% directory or $HOME/.cache/fex-emu/ by default. So if you are running out of space make sure to delete
    those directories to recover some space!

    Let us know how it goes and if there are any games that completely break when this feature is enabled! We'll be spending continued effort making this
    feature better as time goes on.

    Oh right, the new logo

    If you missed the random post, we got a new logo! You'll find that it's not dramatically different, but the rainbox gear has definitely changed!

    Raw Changes

    FEX Release FEX-2609

    • ARMEmitter

      • Fill in bfloat API holes (https://github.com/FEX-Emu/FEX/commit/52cc5689dba6052c9de7a28e9a4a39a4d84ccb08)
    • CMake

      • Fix MINGW compilation under ArchLinux (https://github.com/FEX-Emu/FEX/commit/fd141ed6d721d03062619e4702bca1a0c93b6dd9)
    • CPUID

      • Adds a few new bits (https://github.com/FEX-Emu/FEX/commit/92e43c25d4d74b74081605534ff7fca2fa911465)
    • Common

      • Config
        • Fixes Cache directory when STEAM_COMPAT_SHADER_PATH on Win32 (https://github.com/FEX-Emu/FEX/commit/e3c6b37f706be93ffaa5f69ed1dba1964a131cc6)
    • Config

      • Fix assertion being hit in config generation (https://github.com/FEX-Emu/FEX/commit/98964c552773b374676610776357a030a6825e53)
      • Filter the CPUFeatureRegisters option on serialization (https://github.com/FEX-Emu/FEX/commit/baca86bc3f349e7f7db68c905456cd92f1c3cc57)
    • Core

      • Adds more validation around pool buffer ownership (https://github.com/FEX-Emu/FEX/commit/e7836f26dd2ffc452b21dd55b77da7bf24d7b9fb)
    • Decoder

      • fix illegal LEA encoding (https://github.com/FEX-Emu/FEX/commit/a3d609ebb1e2bc4050ea15ecb8c4004383aa07fd)
    • DiskCache

      • support multiple entries per lookup key (https://github.com/FEX-Emu/FEX/commit/566a5e266df67165d58c46ab043e76eb1e3ca96e)
      • also patch branches for more anon hit rate (https://github.com/FEX-Emu/FEX/commit/023d0cdaa6cfaeaaa364be2bad15487faf71717a)
      • detect inline data, hash around it and patch it on Lookup (https://github.com/FEX-Emu/FEX/commit/42c663269b00d27efa818f0a8f77cb0459458008)
      • key fixes (https://github.com/FEX-Emu/FEX/commit/50e6eee95ae95d3257672727a9302a30b4a60a9a)
      • SMC regression fixes (https://github.com/FEX-Emu/FEX/commit/a77d00acaefe80ae5feccc4720bb0e7305ec2bb4)
      • optional validation-only mode (https://github.com/FEX-Emu/FEX/commit/6ff7e82e3bc6c7bd2ecee6b387845866041badbf)
      • initial anon caching (https://github.com/FEX-Emu/FEX/commit/e010e8adf03a26d3086ea2bf7cdf90d7e2e91778)
      • disable with thunk relocs for now (https://github.com/FEX-Emu/FEX/commit/5a68359f37bd0780c9fc4bcb264002710521ba8d)
      • hash guest code according to its real extents (https://github.com/FEX-Emu/FEX/commit/ab6e67596f170f9e6f83f3cb953c5be3ae70971f)
      • Lookup optimizations (https://github.com/FEX-Emu/FEX/commit/8cf2bf7ad8a7fcb3d4329388f1ddd26e11c63015)
      • on Linux, block signals in Writer thread (https://github.com/FEX-Emu/FEX/commit/ef5439e5ae9af9ce658b61eb414800eefdce72a4)
      • get rid of more extra copies/allocs on Lookup (https://github.com/FEX-Emu/FEX/commit/dea5c62a44d776f725f96dd970241496612323cc)
      • Apply relocations from disk blob (https://github.com/FEX-Emu/FEX/commit/e1d8881f5741e56c9f571900978cbab0cdd88155)
      • use memory-mapped IO for reads when possible (https://github.com/FEX-Emu/FEX/commit/fd180a16d325dda21a04164f0664a0d177729810)
      • clean up bucket key building a bit (https://github.com/FEX-Emu/FEX/commit/0814780c2f957a4d98cbe9c8c57f770b3f38f640)
      • bucket/key bookkeeping (https://github.com/FEX-Emu/FEX/commit/9d4b493ec0b2b1625660679a2ec35c4020781e87)
      • make Writer thread low-priority (https://github.com/FEX-Emu/FEX/commit/c9b23eb0e711b0ca614616b530639719fa64a0da)
      • add some SHM stats (https://github.com/FEX-Emu/FEX/commit/44f69f4dd74e89671e903f26022bcd4e9055012d)
      • offload Store to a WorkQueueThread (https://github.com/FEX-Emu/FEX/commit/b2b6b263bb02bbfea91e0ad2f4f93dffd8a9752d)
    • External

      • Update fmt to upstream master to fix building with LLVM 23 (https://github.com/FEX-Emu/FEX/commit/5a4f84cad983da46b7a7aa338197dcbd6691f9f4)
    • Externals

      • Update vixl (https://github.com/FEX-Emu/FEX/commit/cf6da6ac26dfaba9358225ee7b7de26a5a47cb21)
    • FEX

      • Only fsync on assert (https://github.com/FEX-Emu/FEX/commit/b563703701f69e386316b1fa9d436cd07d25ed40)
    • FEXCore

      • Support ThreadRemoveCodeEntry as relocatable (https://github.com/FEX-Emu/FEX/commit/c4c82f23eead519719faf7e81bba445b86f2c7b4)

      • Removes syscall optimization (https://github.com/FEX-Emu/FEX/commit/a6e74cdbe6f454376e0a55ac567f73f45a8888e3)

      • Fixes ever shrinking JIT code buffer (https://github.com/FEX-Emu/FEX/commit/fa9bbf081bfed3c9ad71f1dea8ac5f5f81c70af9)

      • prevent deadlock when branching to MAX_UINT64 (https://github.com/FEX-Emu/FEX/commit/9377bac5e7fe21a48343525fab1f15777362c181)

      • Adds a lock-free atomic bitset that supports contiguous range allocations (https://github.com/FEX-Emu/FEX/commit/adea3e410f85c04628cf5d93eeda16a8e5ea47d3)

      • Fixes SourceOutline description (https://github.com/FEX-Emu/FEX/commit/a4e04dd7b4fdeb25580ff844bf30037d3741c51e)

      • Allocator

        • Support naming VMA regions from rpmalloc (https://github.com/FEX-Emu/FEX/commit/84fabf4ed81ced3f8770aea5d8de47e84584e38a)
      • Config

        • Annotate all config options that can affect codegen (https://github.com/FEX-Emu/FEX/commit/8ccc8dab498756b39908887fe644fc8e0ed9ab14)
        • Support Serializing (https://github.com/FEX-Emu/FEX/commit/22498dc87118c00e06452adeb0e9b9db6d1e2f84)
      • Context

        • Removes InitialRIP/RSP from CreateThread (https://github.com/FEX-Emu/FEX/commit/c3769a69372ea9f8bfc9249a164f670bca0bd090)
      • Frontend

        • Ensure instruction sizes account for sha256 in thunk op (https://github.com/FEX-Emu/FEX/commit/55c80e6c4fabb4f56257e548cbf1a28b48db050f)
      • HostFeatures

        • Adds HostFeatures hashing support (https://github.com/FEX-Emu/FEX/commit/7614e48322df593c5f787240f640e5d3dcb8d208)
      • SharedCodeBufferManager

        • Pivot what tracks memory allocations (https://github.com/FEX-Emu/FEX/commit/bc69693b6c9a57eac99640fc1ed613e710bbfb32)
      • Utils

        • Implements a new atomic segmented bitmap allocator (https://github.com/FEX-Emu/FEX/commit/f386c62dbad0a110f02af0210014dd90b5ff3b17)
    • FEXUnixlib

      • Removes unused variable/warning. (https://github.com/FEX-Emu/FEX/commit/ff4da8a6201ef96ce83a4c0c1ea6ae26a472cce1)
    • Frontend

      • fix nondeterminism by rolling back DecodedMaxAddress on error (https://github.com/FEX-Emu/FEX/commit/bf70dee3ae07019cad73085862d4fe7883446d34)
      • Stop asserting on too long of an instruction (https://github.com/FEX-Emu/FEX/commit/abec31472099927cecf5a86f54c6a3c4ac032ba1)
    • HostFeatures

      • Fixes crash in mingw build (https://github.com/FEX-Emu/FEX/commit/4ed80fd07176dce976a7351f559d59a47b68cbae)
    • InstCountCI

      • Enforce DiskCache version matching (https://github.com/FEX-Emu/FEX/commit/e17fdf9e90a49614e16ac8414a687477fb9e4f7c)
    • JIT

      • Fixes some alignment logic (https://github.com/FEX-Emu/FEX/commit/bf30f6af4c0774337a8215bdef748ad0c790d6c8)
    • LookupCache

      • Add L1 entry on shrink (https://github.com/FEX-Emu/FEX/commit/adfff26d582c6b3c612c2df28818a2e1bc1f5d3b)
      • Clear L1 entries on dynamic cache growth (https://github.com/FEX-Emu/FEX/commit/49c1cda5c0ca523297f1f2cd6d65035171ff2290)
    • MOVVectorUnalignedOp

      • Fix same-register MMX writes being treated as a Nop (https://github.com/FEX-Emu/FEX/commit/7187bc0e598f401c4839bbce3f2bfe93ee30ca3f)
    • Misc

      • Adds some missing headers (https://github.com/FEX-Emu/FEX/commit/7966bfb077c7690a98ac8f4403fabea935f479b4)
    • OpcodeDispatcher

      • Explicitly handle no-nop vector moves (https://github.com/FEX-Emu/FEX/commit/b78bde7ec8e8fe4e3d05883ce12cb67fbe11dc47)
      • Validate instruction encodings with crc (https://github.com/FEX-Emu/FEX/commit/d833f3ae675a404212fbdf1b96ffa619c6861f1f)
      • Fixes SHLD by 16 behaviour (https://github.com/FEX-Emu/FEX/commit/a409220e5401c3c0256c4b4338b5f49a6a1f48bc)
    • Scripts

      • Fixes failure in doc_outline_generator (https://github.com/FEX-Emu/FEX/commit/69fe85274fe28aaaf458cdcae53d682bfaee6e54)
    • SharedCodeBufferManager

      • Leak less internal details about implementation (https://github.com/FEX-Emu/FEX/commit/8d12f3d5aa45c00e29a568c92151d31754bb8068)
      • Allocate JIT space atomically. (https://github.com/FEX-Emu/FEX/commit/f3ab82a73fb48271ee12a882c98bc5d823a2b4d1)
    • Steam

      • CompatTool
        • Become more picky about configs (https://github.com/FEX-Emu/FEX/commit/9618b5adef54fb5c585d6aceb1f6a070d2faccf6)
    • Thunks

      • Adds some new PV paths (https://github.com/FEX-Emu/FEX/commit/71afe476751deac24adabd1adb575fd2337b6e0a)
    • UnixLib

      • Removes old non-unixlib handling (https://github.com/FEX-Emu/FEX/commit/51c241d1f884179736c898d9f07896d391c253cc)
    • Utils

      • File
        • Properly handle move assignment/construction (https://github.com/FEX-Emu/FEX/commit/00b1249e53400273996d87f229470766f0ec1e10)
    • WOW64

      • Update frame state ESP and EIP before unlocking context for syscall (https://github.com/FEX-Emu/FEX/commit/063af711af804e06d0d5177a800ca6588d6991ad)
    • Win32

      • Actually set app config path and name (https://github.com/FEX-Emu/FEX/commit/c772c0e4e762c19aff4c625c050f9d0ee01ca204)
    • Windows

      • Use NtRaiseException to raise guest exception (https://github.com/FEX-Emu/FEX/commit/310c2504f6c04d5249c1614c2d3bdd3ea820fe6d)

      • Fix syscall regression (https://github.com/FEX-Emu/FEX/commit/7fe7c39a00193026583073f913f09d355c55084e)

      • Split CMAKE_CXX_FLAGS before passing to execute_process (https://github.com/FEX-Emu/FEX/commit/d04ad79eaf18287af5cd7607f5dc4ba1671dbeb9)

      • Handle interrupt 3 in HandleGuestException (https://github.com/FEX-Emu/FEX/commit/c1e9d19809f38234b28d119106177a35f830b0fa)

      • Handle 0x2c interrupt in HandleGuestException (https://github.com/FEX-Emu/FEX/commit/f42dc719723f793742427c62ed4168d1d863a938)

      • CRT

        • Add printf and puts stubs (https://github.com/FEX-Emu/FEX/commit/73ab3bc56db3180485c186ef5b4d37fe3215ccf9)
    • Wine

      • Change behaviour around SMC and NtReadFile (https://github.com/FEX-Emu/FEX/commit/ec63be402849f514a0975f6c82bd4851fe651d2d)
    • Misc

      • Mark tag word valid for FST ST(0) self-store (https://github.com/FEX-Emu/FEX/commit/7052f91495ed7ba87091fac5cb825b7ef133f771)
      • Mark both operands valid in the tag word for FXCH (https://github.com/FEX-Emu/FEX/commit/a454845ffdee5bc5c6803a3972d6adaff03dced0)
      • System_Tests: Enable WFET/WFIT tests (https://github.com/FEX-Emu/FEX/commit/8243b93e4db87e2efff0af625d23fd60c3660502)
      • Clear C1 for fdecstp and fincstp (https://github.com/FEX-Emu/FEX/commit/cfef3d2cbf4f5acbd652d1ad577f5b054e618fc1)
      • Faster translation for *PMULHRSW (https://github.com/FEX-Emu/FEX/commit/83469208c9d6aba303fbe7c5eccd29b71dcad3d9)
      • Preserve previous value of IE exception flag (https://github.com/FEX-Emu/FEX/commit/511c45c4c63ae2958027ca7bfdb88cea457afceb)
      • Resolve symlinks continuously until we find the actual binary name. (https://github.com/FEX-Emu/FEX/commit/433091c32645cedfae869f793d23a7037a67dd40)
      • Scripts/fit_native: Classify Oryon-1/3 (https://github.com/FEX-Emu/FEX/commit/73dc3b3eddaf72745c743fe8ec76ed66f87636dc)
      • Fix pf2id overflow saturation (https://github.com/FEX-Emu/FEX/commit/62c9c130c4fb92960dfb1bdc301e168717abceb9)
      • Fix PFACC producing wrong results due to missing MMX-sized path in VFAddP (https://github.com/FEX-Emu/FEX/commit/fca23d88c3a47e0eb7bc0d46c4a347322498ef5d)
      • Fix pf2iw to saturate on 32-to-16-bit truncation (https://github.com/FEX-Emu/FEX/commit/3a179a3a4069a2f14dec1807495e55409d4d67b5)
      • FCOMI fails to clear OF, SF, AF (https://github.com/FEX-Emu/FEX/commit/2a76d3b15364954e02d28ecc1cf6c1f44c7777f6)
      • code-format-helper: More dependabot upgrades (https://github.com/FEX-Emu/FEX/commit/96172840f1f4335a42a97de2fcf4b645e88c9f2a)
      • Avoid double offset relocations (https://github.com/FEX-Emu/FEX/commit/f0b45010ec18f5686c35b846108f149739552fa4)
      • Disk Cache initial implementation (https://github.com/FEX-Emu/FEX/commit/f50279a2e7e7f69075582c1d29f99b821866e846)
      • clang-format: Slight whitespace difference (https://github.com/FEX-Emu/FEX/commit/7075377a6398ffd874427fda23cdb413a25a58b0)
      • Fix warnings in llvm-mingw builds (https://github.com/FEX-Emu/FEX/commit/f6d20a1a88f4f1b583857ee548cdfa2e54609271)
      • Fix precision loss for F64 to i32 conversion (https://github.com/FEX-Emu/FEX/commit/c171c0619207fe9316d107c3e6b839fb3db8554f)
    • thunkgen

      • satisfy the clang 22 ComplierInstance VFS invariant. (https://github.com/FEX-Emu/FEX/commit/968645416106cc42b2178d2e0843e7a3bdebf232)
    • unittests

      • Disable siglongjmp_branch_invalid on 32-bit (https://github.com/FEX-Emu/FEX/commit/c3b4d4b7bb9b895c53ed1c6ce47c54d595fbf4eb)

      • ASM

        • Test BLSR/BLSMSK CF flag (https://github.com/FEX-Emu/FEX/commit/af9b438eec342e0fadbf11e0c34664397c554dcc)
        • Ensure ffreep always has an operand (https://github.com/FEX-Emu/FEX/commit/430846d7f2bb3200757fd2259003e72326878651)
      • FEXLinuxTests

        • Fixes race condition in signal_sra_state (https://github.com/FEX-Emu/FEX/commit/b4b38a92efb391fcd9ec34f36237d5e26c1ca6a7)
    • x87StackOptimizationPass

      • Generalize ST(0) tag invalidation on pop (https://github.com/FEX-Emu/FEX/commit/ac6be77592d8ae1f5def394a507d3995ead0cf91)
    Downloads
    • Source Code (ZIP)
    • Source Code (TAR.GZ)
Powered by Gitea Version: 28.0.0 Page: 31ms Template: 1ms
Auto
English
Bahasa Indonesia Deutsch English Español Français Gaeilge Italiano Latviešu Magyar nyelv Nederlands Polski Português de Portugal Português do Brasil Suomi Svenska Türkçe Čeština Ελληνικά Български Русский Українська فارسی മലയാളം 日本語 简体中文 繁體中文(台灣) 繁體中文(香港) 한국어
Licenses API