Esitleti FEX 2412 projekti väljaanne, mis arendab emulaatorit x86 ja x86-64 arhitektuuride jaoks mõeldud mängude ja rakenduste käitamiseks ARM64 (AArch64) protsessoritega Linuxi keskkondades. Muuhulgas kasutatakse FEX-emulaatorit projekti Asahi poolt Apple Siliconi ARM-kiipide süsteemides töötavates Linuxi keskkondades x86_64 arhitektuurile koostatud Steam mängude käivitamise korraldamiseks. Projekti kood on kirjutatud C++ keeles koos assembleri sisestustega ja see on litsentseeritud MIT litsentsi alusel.
x86-rakenduste käitamiseks ARM64 keskkonnas vajalikud teegid ühendatakse overlay-kihina rootfs pildiga, mis on tarnitud squashfs formaadis. Selline kiht võimaldab vältida eraldi chroot-keskkonna loomist. Eelnevalt koostatud rootfs pilte laaditakse spetsiaalselt ettevalmistatud utiliidiga FEXRootFSFetcher.
Teatud hostikeskkonna funktsioonide, näiteks audio- ja 3D-graafika tööriistade juurdepääsu korraldamiseks paigutatakse rootfs-i spetsiaalsed thunk-raamatukogud, mis tõlgivad päringud host-süsteemi raamatukogude ja koodi poole (näiteks võivad päringud olla suunatud OpenGL-ile ja Vulkanile). Selliseid raamatukogusid saab kasutada ka hosti poolel koodi kutsumiseks külgkeskkonnas. Saadaval raamatukogude seas on: libEGL, libGL, libSDL2, libX11, libVDSO, libasound, libdrm, libfex_malloc, libvulkan, libwayland-client ja libxshmfence.
Uues versioonis on tähelepanu all klient Steam'i käivitamise probleemide lahendamine, x86-instruktsiooni PAUSE emulatsiooni üleminek ARM-instruktsiooni WFE kasutamisele YIELD'i asemel, süsteemikutsumiste emulatsiooni tagamine, mis on vajalik mängupultidega töötamiseks, CPUID ja RDTSCP emulatsiooni parandamine, FEXCore'i (CPU emulatsiooni tagumine) restruktureerimine ning AVX laienduste emulatsiooni puuduste kõrvaldamine.
Allikas: opennet.ru
