FEX 2111 Tagged!

BMI1 is now fully supported, several linux emulation fixes, thunk cleanups, initialization optimizations and several other assorted improvements.

Core

  • BMI1 extension is now supported!
    • Exposed in CPUID
  • Interpreter is split in to multiple files for usability
  • Improved memory efficiency of some IR ops
  • Allow grouping JIT symbols by library region
    • Useful for thunking performance introspection

CPUID

  • Expose BMI1
  • Expose Hybrid flag
    • Only if running on an ARM big.LITTLE CPU combination

Linux Emulation

  • Fixes to execve handling with softlinks
    • Fixes issues with Debian alternatives soft links failing to find binaries
  • Implements 32-bit virtio ioctls
    • Allows OpenGL passthrough in VMs for 32-bit applications
  • No longer do magic SIGCHLD handling
    • Signal flags already setup correctly, just pass through

Thunks

  • Respect DESTDIR environment variable
    • Useful to generate installation package
  • XCB, Vulkan, and DRM cleanups

Misc

  • Fixes a couple environment variable options not respecting textual names
  • Some FMT changes
  • Some Optimizations in x86Tables with constexpr
  • Telemetry for when an application tears an atomic value
    • Can be used to diagnose emulation bugs
  • FEXConfig fix for 100% CPU usage
    • glibc 2.34 behaviour change exposing an application bug
  • Allocator reserving top 128TB of VA space on Arm64
    • Linux only gives userspace 47-bit addresses
    • Minor bug fix in golang

See the 2111 Release Notes or the detailed change log in Github.

Written on November 6, 2021