Boli zverejnené vydania emulátorov Box86 0.2.6 a Box64 0.1.8, ktoré sú určené na spustenie linuxových programov zostavených pre architektúry x86 a x86_64 na zariadeniach s procesormi ARM, ARM64, PPC64LE a RISC-V. Projekty sú vyvíjané synchrónne jedným tímom vývojárov – Box86 je obmedzený na schopnosť spúšťať 32-bitové x86 aplikácie a Box64 poskytuje možnosť spúšťať 64-bitové spustiteľné súbory. Projekt venuje veľkú pozornosť organizácii spúšťania herných aplikácií, vrátane poskytovania možnosti spúšťať zostavy Windows cez víno a Proton. Zdrojový kód projektu je napísaný v jazyku C a distribuovaný (Box86, Box64) pod licenciou MIT.
Charakteristickým rysom projektu je použitie hybridného exekučného modelu, v ktorom je emulácia aplikovaná len na strojový kód samotnej aplikácie a špecifických knižníc. Typické systémové knižnice, vrátane libc, libm, GTK, SDL, Vulkan a OpenGL, sú nahradené možnosťami natívnymi pre cieľové platformy. Týmto spôsobom sa volania knižnice vykonávajú bez emulácie, čo vedie k výraznému zvýšeniu výkonu.
Emulácia kódu, pre ktorý neexistujú žiadne náhrady natívne pre cieľovú platformu, sa vykonáva pomocou techniky dynamickej rekompilácie (DynaRec) z jednej sady strojových inštrukcií do druhej. V porovnaní s interpretáciou strojových inštrukcií vykazuje dynamická rekompilácia 5-10 krát vyšší výkon.
Vo výkonových testoch emulátory Box86 a Box64 pri spustení na platformách Armhf a Aarch64 výrazne prekonali projekty QEMU a FEX-emu a v individuálnych testoch (glmark2, openarena) dosiahli výkon identický so spustením zostavy natívnej pre cieľový plošina. Vo výpočtovo náročných testoch 7-zip a dav1d sa výkon Box64 pohyboval od 27 % do 53 % výkonu natívnej aplikácie (pre porovnanie, QEMU vykázala výsledky 5 – 16 % a FEX-emu – 13 – 26 % ). Okrem toho sa vykonalo porovnanie s emulátorom Rosetta 2, ktorý Apple používa na spustenie kódu x86 na systémoch s čipom M1 ARM. Rosetta 2 poskytla test založený na 7zip s výkonom 71% natívnej zostavy a Box64 - 57%.
Čo sa týka kompatibility s aplikáciami, zo 165 testovaných hier úspešne fungovalo približne 70 %. Ďalších asi 10 % funguje, ale s určitými výhradami a obmedzeniami. Medzi podporované hry patria WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious a väčšina hier GameMaker. Medzi hrami, s ktorými boli zaznamenané problémy, sa spomínajú hry založené na engine Unity3D, ktorý je viazaný na balík Mono, ktorého emulácia nie vždy funguje kvôli kompilácii JIT používanej v Mono, a tiež má pomerne vysoké grafické nároky, ktoré nie sú vždy dosiahnuteľné na doskách ARM. Nahradenie knižníc aplikácií GTK je v súčasnosti obmedzené na GTK2 (nahradenie GTK3/4 nie je plne implementované).
Hlavné zmeny v nových vydaniach:
- Pridaná väzba pre knižnicu Vulkan. Pridaná podpora pre grafické API Vulkan a DXVK (implementácia DXGI, Direct3D 9, 10 a 11 nad rámec Vulkan).
- Vylepšené väzby pre knižnice GTK. Pridané väzby pre gstreamer a knižnice bežne používané v aplikáciách GTK.
- Pridaná počiatočná podpora (zatiaľ iba režim interpretácie) pre architektúry RISC-V a PPC64LE.
- Boli vykonané opravy na zlepšenie podpory pre SteamPlay a vrstvu Proton. Poskytuje možnosť spúšťať mnoho hier pre Linux a Windows zo služby Steam na doskách AArch64, ako sú Raspberry Pi 3 a 4.
- Vylepšená správa pamäte, výkon mmap a sledovanie narušenia ochrany pamäte.
- Vylepšená podpora pre systémové volanie klonu v knižnici libc. Pridaná podpora pre nové systémové volania.
- Dynamický rekompilačný engine zlepšil prácu s registrami SSE/x87, pridal podporu pre nové strojové kódy, optimalizoval prevody float a double čísel, zlepšil spracovanie vnútorných prechodov a zjednodušil pridanie podpory pre nové architektúry.
- Vylepšený načítač súborov ELF.
Zdroj: opennet.ru