Boli uverejnené vydania emulátorov Box86 0.2.6 a Box64 0.1.8, určených na spúšťanie programov Linux, ktoré sú zostavené pre architektúry x86 a x86_64, na hardvéri s procesormi ARM, ARM64, PPC64LE a RISC-V. Projekty sa vyvíjajú súčasne jedným tímom vývojárov — Box86 je obmedzený na možnosť spúšťania 32-bitových aplikácií x86, zatiaľ čo Box64 umožňuje spúšťanie 64-bitových spustiteľných súborov. Projekt sa značne zameriava na organizáciu spúšťania herných aplikácií, vrátane poskytovania možnosti spúšťania Windows zostáv prostredníctvom wine a Proton. Zdrojové kódy projektu sú napísané v jazyku C a sú šírené (Box86, Box64) pod licenciou MIT.
Rysom projektu je aplikácia hybridného modelu výkonu, pri ktorom sa emulácia aplikuje iba na strojový kód samotnej aplikácie a špecifických knižníc. Typové systémové knižnice vrátane libc, libm, GTK, SDL, Vulkan a OpenGL sú nahradené variantmi natívnymi pre cieľové platformy. Týmto spôsobom sa knižničné volania vykonávajú bez emulácie, čo umožňuje dosiahnuť významné zvýšenie výkonu.
Emulácia kódu, pre ktorý nie sú k dispozícii natívne náhrady pre cieľovú platformu, sa vykonáva pomocou techniky dynamickej prekompilácie (DynaRec) z jedného súboru strojových inštrukcií na iný. V porovnaní s interpretáciou strojových inštrukcií dynamická prekompilácia vykazuje 5-10-násobne vyšší výkon.
V testoch výkonu emulátory Box86 a Box64 na platformách Armhf a Aarch64 výrazne predbehli projekty QEMU a FEX-emu a v niektorých testoch (glmark2, openarena) umožnili dosiahnuť výkon identický so spustením zostavy natívnej pre cieľovú platformu. V testoch 7-zip a dav1d, vykonávajúcich náročné výpočty, dosiahol výkon Box64 od 27% do 53% výkonu natívnej aplikácie (pre porovnanie QEMU ukázal výsledok 5-16%, a FEX-emu — 13-26%). Ďalej bolo vykonané porovnanie s emulátorom Rosetta 2, ktorý používa spoločnosť Apple na spúšťanie kódu x86 na systémoch s ARM čipom M1. Rosetta 2 zabezpečila vykonanie testu na báze 7zip s výkonom 71% od natívnej zostavy, pričom Box64 dosiahol 57%.

Pokiaľ ide o kompatibilitu s aplikáciami, z 165 testovaných hier úspešne fungovalo približne 70 %. Ďalších približne 10 % funguje, ale s určitými obmedzeniami. Medzi podporovanými hrami sú WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious a väčšina hier od spoločnosti GameMaker. Medzi hrami, ktoré vykazujú problémy, sú spomínané hry postavené na engíne Unity3D, ktorý sa zakladá na balíku Mono, ktorého emulácia zatiaľ nefunguje vždy kvôli JIT kompilácii používané v Mono, a má aj pomerne vysoké grafické požiadavky, ktoré nie sú vždy dosiahnuteľné na ARM platformách. Podpora knižníc GTK aplikácií je zatiaľ obmedzená na GTK2 (podpora GTK3/4 nie je ešte úplne implementovaná).
Hlavné zmeny v nových vydaniach:
- Pridané viazanie pre knižnicu Vulkan. Pridaná podpora grafického API Vulkan a DXVK (implementácia DXGI, Direct3D 9, 10 a 11 nad Vulkanom).
- Vylepšené viazania pre knižnice GTK. Pridané viazania pre gstreamer a knižnice, ktoré sa zvyčajne používajú v GTK aplikáciách.
- Pridaná základná podpora (zatiaľ iba režim interpretácie) architektúr RISC-V a PPC64LE.
- Vykonané opravy zamerané na zlepšenie podpory SteamPlay a vrstvy Proton. Umožnené spustenie mnohých hier Linux a Windows cez Steam na doskách AArch64, ako sú Raspberry Pi 3 a 4.
- Vylepšené spravovanie pamäte, funkcia mmap a sledovanie porušení ochrany pamäte.
- Vylepšená podpora systémového volania clone v libc. Pridaná podpora nových systémových volaní.
- V engíne dynamickej re-kompilácie zlepšená práca s registrami SSE/x87, pridaná podpora nových strojových kódov, optimalizované konverzie čísel float a double, vylepšené spracovanie vnútorných prechodov, zjednodušené pridávanie podpory nových architektúr.
- Vylepšený načítač súborov vo formáte ELF.
Zdroj: opennet.ru
