FEX 2509 released

Published by

The recent release of FEX 2509 introduces significant enhancements aimed at improving the execution of x86 applications on ARM64 Linux devices. This version builds upon the existing capabilities of qemu-user and box64, ensuring compatibility for both 32-bit and 64-bit binaries and facilitating API call forwarding to host system libraries such as OpenGL and Vulkan.

Key Features

1. Advanced Binary Recompiler:
- Supports modern x86(-64) instruction set extensions, including AVX/AVX2, allowing for efficient binary translation.

2. Custom Intermediate Representation (IR) Generation:
- Enables optimized code generation that reduces emulation overhead and decreases in-game stuttering.

3. Per-App Configuration System:
- Offers users the ability to customize performance settings for individual applications, potentially bypassing demanding memory model emulations.

4. User-Friendly FEXConfig GUI:
- Provides an intuitive graphical interface for users to explore and adjust settings easily.

Notable Improvements in FEX 2509

- JIT Enhancements:
- Improvements in the Just-In-Time (JIT) compiler, including better branch target lookup, corrections in zero-extend semantics on CMPXCHG instructions, and optimized handling of x87 floating-point operations.

- Mono Performance Hacks:
- Specific optimizations designed to enhance performance for Mono's JIT, particularly addressing issues related to self-modifying code.

- Game-Specific Fixes:
- Disabling 3DNow! by default for Wine WOW64 binaries to mitigate issues like black screen rendering in games such as Fallout: New Vegas.

- Memory Management Fixes:
- Corrected the size calculation for program break memory allocation, helping to prevent emulation bugs and optimizing the use of virtual address space.

Downstream Package Updates

- Apple Silicon Support:
- Resolved graphical issues with the FEXConfig tool to ensure compatibility with muvm's internal RootFS setup on Fedora Asahi Remix.

- Library Forwarding on NixOS:
- Introduced support for library forwarding, enhancing functionality through a recently merged nixpkgs pull request.

Conclusion

Overall, FEX 2509 provides a refined and enhanced experience for running x86 applications on ARM64 Linux devices, characterized by improved performance and extended compatibility features. Although this release may appear less monumental compared to previous updates, it still delivers vital refinements that contribute to the overall efficiency and usability of the FEX emulator.

For further information, users can read the detailed blog post on the FEX-Emu site

FEX 2509 released

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 @ Linux Compatible