UtgĂ„vorna av emulatorerna Box86 0.2.6 och Box64 0.1.8 har publicerats, som Ă€r avsedda för att köra Linux-program som Ă€r sammanstĂ€llda för arkitekturerna x86 och x86_64 pĂ„ hĂ„rdvara med ARM-, ARM64-, PPC64LE- och RISC-V-processorer. Projekten utvecklas synkront av samma utvecklarteam â Box86 begrĂ€nsas till möjligheten att köra 32-bits x86-applikationer, medan Box64 möjliggör körning av 64-bits körbara filer. Projektet lĂ€gger stor vikt vid att möjliggöra körning av spelapplikationer, inklusive möjligheten att köra Windows-versioner via Wine och Proton. KĂ€llkoden för projektet Ă€r skriven i C och distribueras (Box86, Box64) under MIT-licensen.
En sÀrskiljande funktion för projektet Àr tillÀmpningen av en hybrid utförandemodell, dÀr emulering endast tillÀmpas pÄ maskinkoden för sjÀlva applikationen och specifika bibliotek. Typiska systembibliotek, inklusive libc, libm, GTK, SDL, Vulkan och OpenGL, ersÀtts med variantar som Àr inhemska för de mÄlpunkter. PÄ sÄ sÀtt utförs biblioteksanrop utan emulering, vilket möjliggör en betydande ökning av prestanda.
Kodemulering för vilken det inte finns inhemska alternativ för mÄlplattformen utförs med hjÀlp av tekniken för dynamisk omkompilering (DynaRec) frÄn en uppsÀttning maskininstruktioner till en annan. JÀmfört med tolkning av maskininstruktioner visar dynamisk omkompilering 5-10 gÄnger högre prestanda.
I prestandatester överskred emulatorerna Box86 och Box64 markant projekten QEMU och FEX-emu nÀr de kördes pÄ plattformarna Armhf och Aarch64, och i vissa tester (glmark2, openarena) nÄddes prestanda som var identisk med att köra en version som Àr inhemsk för den mÄlpunkten. I testerna 7-zip och dav1d, som utför intensiva berÀkningar, var prestandan för Box64 mellan 27% och 53% av prestandan för den inhemska applikationen (för jÀmförelse visade QEMU resultat pÄ 5-16%, och FEX-emu 13-26%). En jÀmförelse gjordes ocksÄ med emulatorn Rosetta 2, som anvÀnds av Apple för att köra x86-kod pÄ system med ARM-chipet M1. Rosetta 2 gav en prestanda pÄ 71% av den inhemska versionen för testet pÄ 7zip, medan Box64 uppnÄdde 57%.

NÀr det gÀller kompatibilitet med applikationer har cirka 70% av de 165 testade spelen fungerat framgÄngsrikt. Ytterligare ungefÀr 10% fungerar, men med vissa förbehÄll och begrÀnsningar. Bland de stödda spelen finns World Of Goo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious och de flesta spel frÄn GameMaker. Spel som har noterade problem inkluderar spel baserade pÄ Unity3D-motorn, som Àr beroende av Mono-paketet, vars emulator inte alltid fungerar pÄ grund av JIT-kompilering som anvÀnds i Mono, och har Àven ganska höga grafikkrav som inte alltid uppfylls pÄ ARM-plattformar. Utbytet av biblioteken för GTK-applikationer Àr för nÀrvarande begrÀnsat till GTK2 (utbytet av GTK3/4 Àr inte helt genomfört).
Huvudsakliga Àndringar i de nya utgÄvorna:
- Ett wrapper för Vulkan-biblioteket har lagts till. Stöd för grafik-API:erna Vulkan och DXVK (implementation av DXGI, Direct3D 9, 10 och 11 över Vulkan) har lagts till.
- Wrapperna för GTK-biblioteken har förbÀttrats. Wrapper för gstreamer och de bibliotek som vanligtvis anvÀnds i GTK-applikationer har lagts till.
- Inledande stöd har lagts till för (just nu endast tolkning) arkitekturerna RISC-V och PPC64LE.
- Fixar har genomförts för att förbÀttra stödet för SteamPlay och Proton-lagret. MÄnga Linux- och Windows-spel kan nu startas frÄn Steam pÄ AArch64-kort, sÄsom Raspberry Pi 3 och 4.
- Minneshanteringen har förbÀttrats, inklusive mmap-arbetet och övervakning av minnesskyddsbrott.
- Stödet för systemanropet clone i libc har förbÀttrats. Stöd för nya systemanrop har lagts till.
- I den dynamiska omkompileringens motor har arbetet med SSE/x87-register förbÀttrats, nya maskinkoder har lagts till, konverteringar av float- och double-vÀrden har optimerats, intern övergÄngshantering har förbÀttrats och tillsatsen av stöd för nya arkitekter har förenklats.
- Laddaren för ELF-filer har förbÀttrats.
KĂ€lla: opennet.ru
