Udgivelserne af emulatorerne Box86 0.2.6 og Box64 0.1.8 er blevet offentliggjort. Disse er designet til at køre Linux-programmer, der er bygget til x86 og x86_64-arkitekturer, på hardware med ARM, ARM64, PPC64LE og RISC-V processorer. Projekterne udvikles synkront af det samme udviklerteam — Box86 begrænser sig til at køre 32-bit x86-applikationer, mens Box64 muliggør kørsel af 64-bit eksekverbare filer. Projektet lægger stor vægt på at organisere kørsel af spilapplikationer, herunder at tilbyde mulighed for at køre Windows-versioner via wine og Proton. Kildeteksterne til projektet er skrevet i C og distribueres (Box86, Box64) under MIT-licensen.
En særlig funktion ved projektet er anvendelsen af en hybrid udførelsesmodel, hvor emulering kun anvendes på selve applikationsmaskinkoden og specifikke biblioteker. Standard systembiblioteker, herunder libc, libm, GTK, SDL, Vulkan og OpenGL, erstattes af varianter, der er native for de målrettede platforme. Således udføres bibliotekskald uden emulering, hvilket muliggør en betydelig stigning i ydeevnen.
Emuleringen af kode, hvor der ikke findes nativ erstatning for den målrettede platform, udføres ved hjælp af dynamisk rekombileringsteknik (DynaRec) fra et sæt maskininstruktioner til et andet. I forhold til fortolkning af maskininstruktioner viser dynamisk rekombilering en 5-10 gange højere ydeevne.
I ydeevnetests overgik emulatorerne Box86 og Box64 kraftigt projekterne QEMU og FEX-emu på Armhf- og Aarch64-platforme, og i enkelte tests (glmark2, openarena) nåede de ydeevne, der er identisk med kørsel af en version, der er native for målplatformen. I 7-zip og dav1d-tests, der udfører intensive beregninger, var Box64's ydeevne mellem 27% og 53% af den native applikations ydeevne (til sammenligning viste QEMU resultater på 5-16%, mens FEX-emu nåede 13-26%). Derudover blev der foretaget en sammenligning med emulatoren Rosetta 2, som Apple anvender til at køre x86-kode på M1 ARM-chip-systemer. Rosetta 2 opnåede en ydeevne på 71% af den native version i 7zip-testen, mens Box64 nåede 57%.

Når det kommer til applikationskompatibilitet, har ca. 70 % af 165 testede spil fungeret korrekt. Cirka 10 % fungerer, men med visse forbehold og begrænsninger. Blandt de understøttede spil findes WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious og de fleste spil fra GameMaker. Spil, der har rapporterede problemer, omfatter dem, der er baseret på Unity3D-motoren, som er afhængig af Mono-pakken, hvis emulering ikke altid fungerer på grund af den JIT-kompilering, der anvendes i Mono, og desuden har rimeligt høje grafiske krav, som ikke altid er opnåelige på ARM-platforme. Bytning af GTK-biblioteker begrænser sig indtil videre til GTK2 (udskiftning af GTK3/4 er ikke fuldt implementeret).
De vigtigste ændringer i de nye udgivelser:
- Wrapper til Vulkan-biblioteket er tilføjet. Understøttelse for grafik-API Vulkan og DXVK (DXGI-implementering, Direct3D 9, 10 og 11 oven på Vulkan) er tilføjet.
- Wrapperne til GTK-bibliotekerne er forbedret. Wrappere til gstreamer og de biblioteker, der normalt bruges i GTK-applikationer, er tilføjet.
- Tidlig understøttelse (indtil videre kun i fortolkningsmodus) for RISC-V og PPC64LE-arkitekturer er tilføjet.
- Der er lavet rettelser, der er rettet mod at forbedre understøttelsen af SteamPlay og Proton-laget. Mulighed for at køre mange Linux- og Windows-spil fra Steam på AArch64-platforme, såsom Raspberry Pi 3 og 4, er blevet muligheden.
- Forbedret hukommelsesstyring, mmap-funktion og overvågning af overtrædelser af beskyttelsen af hukommelsen.
- Forbedret understøttelse af systemanropet clone i libc. Understøttelse af nye systemanrop er tilføjet.
- I den dynamiske genoversættelsesmotor er der forbedringer i arbejdet med SSE/x87-registrene, støtte for nye maskinkoder, optimeret konvertering af float- og double-tal, forbedret håndtering af interne overgange samt simplificeret tilføjelse af støtte til nye arkitekturer.
- Indlæseren til ELF-filer er forbedret.
Kilde: opennet.ru
