Byl zveřejněn nový release projektu FEX 2508, který vyvíjí emulátor pro provozování her a aplikací sestavených pro architektury x86 a x86-64 v prostředí Linux na systémech s procesory ARM64 (AArch64). Emulátor FEX se používá projektem Asahi k spuštění her z katalogu Steam, které byly sestaveny pro architekturu x86_64, na systémech s ARM čipy Apple Silicon. Kód projektu je napsán v C++ s assemblerovými vložkami a je šířen pod licencí MIT.
Knihovny potřebné pro spuštění x86 aplikací v ARM64 prostředí jsou připojeny ve formě overlay vrstvy s obrazem kořenového FS (rootfs), dodávaného ve formátu SquashFS. Tato vrstva umožňuje vyhnout se vytváření samostatného chroot prostředí. Načítání již vytvořených obrazů rootfs projektem se provádí utilitou FEXRootFSFetcher.
Pro přístup k funkcím hostitelského prostředí, jako jsou nástroje pro práci se zvukem a 3D grafikou, jsou do rootfs umístěny thunk knihovny, které překladají volání na knihovny a kód na straně hostitelského systému (například může být přesměrováno volání k OpenGL a Vulkan). Tyto knihovny mohou být také použity na straně hostitele pro volání kódu v hostitelském prostředí. Mezi dostupné knihovny pro zpracování patří: libEGL, libGL, libSDL2, libX11, libVDSO, libasound, libdrm, libfex_malloc, libvulkan, libwayland-client a libxshmfence.
V nové verzi:
- Byla provedena významná optimalizace JIT kompilátoru, která vedla ke zvýšení FPS ve hře Cyberpunk 2077 o 38.9%, Doom 2016 o 30.9%, Stray o 25.2%, Grim Fandango Remastered o 24.7%, Teardown o 12.6% a na Gold of War 2018 o 4.6%. Největší vliv měly optimalizace zásobníku volání a návratů (call-return) a také využití knihoven wow64/arm64ec modelu paměti TSO (Total Store Ordering), který je podporován v CPU Apple Silicon.

- Byla zavedena podpora NX bitu (No Execute) pro zákaz provádění instrukcí v oblastech paměti, které nejsou speciálně označeny jako povolené pro vykonávání.
- Byla vylepšena podpora kódu určeného k prevenci ladění a změn v průběhu vykonávání v hrách, jako jsou Peggle Deluxe a Crysis 2: Maximum Edition.
Zdroj: opennet.ru

