De release van project FEX 2508 is gepubliceerd, dat een emulator ontwikkelt voor het uitvoeren van games en applicaties die zijn samengesteld voor de architecturen x86 en x86-64, in een Linux-omgeving op systemen met ARM64 (AArch64) processors. De FEX-emulator wordt door het Asahi-project gebruikt om games uit de Steam-catalogus, die zijn samengesteld voor de x86_64-architectuur, op Apple Silicon ARM-chipssystemen te starten. De code van het project is geschreven in C++ met assembly-instructies en wordt verspreid onder de MIT-licentie.
De bibliotheken die nodig zijn voor de uitvoering van x86-applicaties in een ARM64-omgeving worden aangesloten in de vorm van een overlay-laag met een rootfs-image, dat wordt geleverd in het SquashFS-formaat. Een dergelijke laag maakt het mogelijk om zonder het creƫren van een afzonderlijke chroot-omgeving te werken. Het laden van reeds door het project gecreƫerde rootfs-images gebeurt met behulp van de FEXRootFSFetcher-tool.
Voor toegang tot de mogelijkheden van de host-omgeving, zoals hulpmiddelen voor geluid en 3D-graphics, worden thunk-bibliotheken in de rootfs geplaatst, die oproepen naar bibliotheken en code aan de host-systeemzijde vertalen (bijvoorbeeld kunnen oproepen naar OpenGL en Vulkan worden omgeleid). Dergelijke bibliotheken kunnen ook aan de hostzijde worden gebruikt om toegang te krijgen tot code in de gastomgeving. Onder de beschikbare bibliotheken voor doorsturing bevinden zich: libEGL, libGL, libSDL2, libX11, libVDSO, libasound, libdrm, libfex_malloc, libvulkan, libwayland-client en libxshmfence.
In de nieuwe versie:
- Er is aanzienlijke optimalisatie van de JIT-compiler uitgevoerd, waardoor de FPS in de game Cyberpunk 2077 met 38.9%, Doom 2016 met 30.9%, Stray met 25.2%, Grim Fandango Remastered met 24.7%, Teardown met 12.6% en Gold of War 2018 met 4.6% is verhoogd. De grootste impact kwam van optimalisaties op de call-return stack, evenals het gebruik van het TSO (Total Store Ordering) geheugenschema in de wow64/arm64ec-bibliotheken, ondersteund door de Apple Silicon CPU.

- Ondersteuning voor de NX-bit (No Execute) is geĆÆmplementeerd om de uitvoering van instructies in geheugengebieden die niet specifiek zijn gemarkeerd als toegestaan voor uitvoering, te verbieden.
- De ondersteuning voor code die is gebruikt om debugging en wijziging van de uitvoering in games zoals Peggle Deluxe en Crysis 2: Maximum Edition te voorkomen, is verbeterd.
Bron: opennet.ru

