La version du projet FEX 2508 a été publiée, développant un émulateur pour exécuter des jeux et applications compilés pour les architectures x86 et x86-64 dans un environnement Linux sur des systèmes équipés de processeurs ARM64 (AArch64). L'émulateur FEX est utilisé par le projet Asahi pour exécuter des jeux du catalogue Steam, compilés pour l'architecture x86_64, sur des systèmes avec des puces ARM d'Apple Silicon. Le code du projet est écrit en C++ avec des insertions d'assembleur et est distribué sous licence MIT.
Les bibliothèques nécessaires pour exécuter des applications x86 dans un environnement ARM64 sont intégrées sous forme de couche overlay avec une image du système de fichiers racine (rootfs), fournie au format SquashFS. Une telle couche permet de se passer de la création d'un environnement chroot distinct. Le téléchargement des images rootfs pré-formatées par le projet se fait via l'outil FEXRootFSFetcher.
Pour accéder aux fonctionnalités de l'environnement hôte, telles que les outils pour le son et la 3D, des bibliothèques thunk sont placées dans le rootfs, traduisant les appels vers les bibliothèques et le code côté système hôte (par exemple, les appels à OpenGL et Vulkan peuvent être redirigés). Ces bibliothèques peuvent également être utilisées côté hôte pour faire appel au code dans l'environnement invité. Parmi les bibliothèques disponibles à la redirection figurent : libEGL, libGL, libSDL2, libX11, libVDSO, libasound, libdrm, libfex_malloc, libvulkan, libwayland-client et libxshmfence.
Dans la nouvelle version :
- Une optimisation significative du compilateur JIT a été réalisée, permettant d'augmenter le FPS dans le jeu Cyberpunk 2077 de 38,9 %, Doom 2016 de 30,9 %, Stray de 25,2 %, Grim Fandango Remastered de 24,7 %, Teardown de 12,6 %, et Gold of War 2018 de 4,6 %. Les optimisations du pile d'appels et des retours (call-return), ainsi que l'utilisation dans les bibliothèques wow64/arm64ec du modèle de mémoire TSO (Total Store Ordering), pris en charge par les CPU Apple Silicon, ont eu le plus grand impact.

- La prise en charge du bit NX (No Execute) a été mise en œuvre pour interdire l'exécution d'instructions dans des zones de mémoire non spécifiquement marquées comme exécutables.
- Le support du code utilisé pour empêcher le débogage et la modification du déroulement des jeux, tels que Peggle Deluxe et Crysis 2 : Maximum Edition, a été amélioré.
Source : opennet.ru

