Software 43918 Published by

The latest version of FEX (2509) has been released, providing improvements to ensure smooth execution of x86 applications on ARM64 Linux devices. Key features include an advanced binary recompiler, custom IR generation, and a per-app configuration system for optimized performance settings. FEX 2509 boasts various JIT enhancements, Mono performance hacks, and fixes for specific issues like black screen rendering in games. Additionally, downstream FEX packages have been updated to support library forwarding on NixOS and fix graphical tool conflicts with muvm's internal RootFS setup on Apple Silicon users running Fedora Asahi Remix.



FEX 2509 released: Enhancements for Seamless x86 Application Execution on ARM64 Linux Devices

The latest version of FEX (2509) has been released, providing a range of improvements to ensure smooth execution of x86 applications on ARM64 Linux devices. Built upon the existing capabilities of qemu-user and box64, FEX enables broad compatibility with both 32-bit and 64-bit binaries, along with support for forwarding API calls to host system libraries like OpenGL or Vulkan.

Key Features:
  1. Advanced Binary Recompiler: FEX boasts an advanced binary recompiler that supports all modern extensions of the x86(-64) instruction set, including AVX/AVX2.
  2. Custom IR Generation: A custom intermediate representation (IR) allows for optimized code generation, reducing emulation overhead and minimizing in-game stuttering.
  3. Per-App Configuration System: Users can tweak performance settings per game, such as skipping costly memory model emulation.
  4. User-Friendly FEXConfig GUI: Explore and modify settings using a user-friendly graphical interface.
New Improvements in FEX 2509:
  1. JIT Enhancements: Multiple improvements to the Just-In-Time (JIT) compiler, including:
    • Improved branch target lookup
    • Fixed zero-extend semantics on CMPXCHG instructions
    • Support for JMPF/CALLF/RETF with operating mode switch
    • Optimized x87 FTW calculation
    • IEEE 754 unordered comparison fixes in x87
  2. Mono Performance Hacks: Specific optimizations for Mono's JIT, addressing issues related to self-modifying code and code invalidation.
  3. Disable 3DNow! by Default on Wine WOW64 Binary: To prevent black screen rendering in games like Fallout: New Vegas, due to specific optimized code routines using the D3D9X support library.
  4. Fix BRK Size Calculation: Corrected size calculation for the program break memory allocation, preventing potential emulation bugs and allowing for efficient use of virtual address space.
Downstream FEX Packages Updates:
  1. Apple Silicon Users Running Fedora Asahi Remix: Fixed graphical FEXConfig tool to no longer override muvm's internal RootFS setup.
  2. Library Forwarding Support: Added support for library forwarding on NixOS, thanks to the merged nixpkgs pull request.

Overall, FEX 2509 offers a more refined experience for running x86 applications on ARM64 Linux devices, with enhanced performance and compatibility features.

Release FEX Release FEX-2509 · FEX-Emu/FEX

Read the blog post at FEX-Emu's Site! After last month's enormous improvements, this release will look quite tame in comparison. Although we still did a bunch of work, so let's dive in. More JIT im...

Release FEX Release FEX-2509 · FEX-Emu/FEX