Väljaanded Box86 0.2.6 ja Box64 0.1.8 emulaatoritest, mis on mõeldud Linuxi programmide käitamiseks, mis on koostatud x86 ja x86_64 arhitektuuride jaoks ARM, ARM64, PPC64LE ja RISC-V arhitektuuridega varustatud seadmetel. Projektid arenevad üheaegselt sama arendajate meeskonna poolt — Box86 on piiritletud 32-bitiste x86 rakenduste käitamisega, samas kui Box64 toetab 64-bitiste täidesaatvate failide käitamisel. Projekt keskendub mängurakenduste käitamise korraldamisele, sealhulgas võimalusele käivitada Windowsi kogumid läbi wine ja Proton. Projekti lähtekood on kirjutatud C keeles ja levitatakse (Box86, Box64) MIT litsentsi alusel.
Projekti eripära on hübriidse täitmisrežiimi rakendamine, kus emulatsiooni rakendatakse ainult rakenduse enda masinakoodile ja spetsiifilistele teekidele. Tüüpilised süsteemiteegid, sealhulgas libc, libm, GTK, SDL, Vulkan ja OpenGL, asendatakse sihtplatvormidele loomulike variantidega. Seega, teegikutsed toimivad ilma emulatsioonita, mis võimaldab saavutada märkimisväärset jõudluse kasvu.
Koodi emuleerimine, millele ei ole sihtplatvormile sobivaid natiivseid asendusi, toimub dünaamilise ümberkompileerimise tehnika (DynaRec) abil ühest masinakeelte komplektist teise. Dünaamiline ümberkompileerimine näitab võrreldes masinakeelte tõlgendamisega 5–10 korda kõrgemat jõudlust.
Jõudlustestides edestasid emulaatorid Box86 ja Box64 Armhf ja Aarch64 platvormidel oluliselt QEMU ja FEX-emu projekte ning mõnedes testides (glmark2, openarena) saavutati jõudlus, mis vastas sihtplatvormile natiivse versiooni käivitamisele. Testidel 7-zip ja dav1d, mis nõudsid intensiivseid arvutusi, saavutas Box64 jõudluse 27% kuni 53% natiivse rakenduse jõudlusest (võrdluseks QEMU tõi tulemuse 5–16%, FEX-emu aga 13–26%). Samuti tehti võrdlus Apple'i poolt x86 koodi käitamiseks ARM M1 kiibil kasutatava Rosetta 2 emulaatoriga. Rosetta 2 suutis 7zipi testi läbida jõudlusega 71% natiivversioonist, Box64 aga 57%.

Rakenduste ühilduvuse osas on 165 testitud mängust umbes 70% edukalt töötanud. Veel umbes 10% toimib, kuid teatud tingimustega ja piirangutega. Toetatud mängude seas on WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious ja enamik GameMaker'i mänge. Mängud, millega on probleeme, sisaldavad Unity3D mootoril põhinevaid mänge, millel on sõltuvus Mono paketist, mille emulatsioon ei tööta alati ühtlaselt tänu Mono JIT-kompileerimisele, ja sellel on ka üsna kõrged graafikanõuded, mis ei ole alati saavutatud ARM-platvormidel. GTK rakenduste teeki asendamine piirdub hetkel GTK2-ga (GTK3/4 asendamine ei ole täielikult rakendatud).
Uutes versioonides on peamised muudatused:
- Lisatud wrapper Vulkan teegi jaoks. Lisatud toetus graafika API-le Vulkan ja DXVK (DXGI, Direct3D 9, 10 ja 11 rakendamine Vulkan'i kohal).
- Parandatud GTK teekide wrapper'id. Lisatud wrapper'id gstreamer'i ja teekide jaoks, mida tavaliselt kasutatakse GTK rakendustes.
- Lisatud algne toetus (praegu ainult tõlgendamisrežiim) RISC-V ja PPC64LE arhitektuuridele.
- Parandused, mis on suunatud SteamPlay ja Proton'i toe parandamisele, on rakendatud. Nüüd on võimalik käivitada palju Linuxi ja Windowsi mänge Steamis AArch64 platvormidel, nagu Raspberry Pi 3 ja 4.
- Parem mäluhaldus, mmap toimimine ja mälu kaitse rikkumiste jälgimine on parendatud.
- Omandatud paremad libc süsteemikutsed clone toe toetamine. Uute süsteemikutsede tugi on lisatud.
- Dünaamilise taasühendamise mootoris on parendatud SSE/x87 registritega tööd, lisatud on tugi uutele masina koodidele, samuti on optimeeritud float ja double numbrite teisendamine ning sisemiste üleminekute töötlemine lihtsustatud, et toetada uusi arhitektuure.
- ELF-formaadis failide laadija on parendatud.
Allikas: opennet.ru
