Udgaven af emulatoren Box64 0.3.0, som er designet til at køre Linux-programmer, der er kompileret til x86_64-arkitekturen, på udstyr med ARM64-, RISC-V- og Loongarch64-processorer. Projektet fokuserer på at organisere opstarten af spilapplikationer og giver mulighed for at køre Windows-versioner gennem wine og Proton. Kildeteksterne til projektet er skrevet i C og distribueres under MIT-licensen.
En særpræg ved projektet er anvendelsen af en hybrid udførelsesmodel, hvor emulering kun anvendes til maskinkoden i selve applikationen og specifikke biblioteker. Typiske systembiblioteker, herunder libc, libm, GTK, SDL, Vulkan og OpenGL, bliver erstattet med varianter, der er native for de målrettede platforme. På den måde udføres biblioteksopkald 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 den nye version:
- Understøttelse af CPU-udvidelserne AVX, AVX2, BMI1, BMI2, ADX, FMA, F16C og RDRAND er implementeret.
- Tilføjet en miljøvariabel BOX64_AVX, hvor indstilling af 1 aktiverer understøttelse af AVX, BMI1, F16C og VAES, mens indstillingen 2 aktiverer AVX2, BMI2, FMA, ADX, VPCLMULQDQ og RDRAND.
- Understøttelse af dynamisk rekombilering (DynaRec) af AVX, AVX2 og lignende instruktioner til NEON-instruktionssættet, der leveres af ARM64-baserede CPU'er, er tilføjet.
- Indledende support til rekombilering af SIMD-instruktioner til RVV-instruktioner på RISC-V-systemer er tilføjet.
- Optimering af DynaRec-mekanismen er udført, og der er tilføjet support til nye opcode for RISC-V og Loongarch64.
- Listen over CPUID-opkoder er opdateret, og i stedet for Pentium IV returneres CPU'en fra Haswell-serien som standard via CPUID.
- Understøttelse af Wayland er tilføjet, og der er givet mulighed for dynamisk rekombilering af biblioteker relateret til Wayland, hvilket har gjort det muligt at opnå kompatibilitet med Wine-wayland.
- Antallet af understøttede spil er udvidet, f.eks. er kompatibilitet med spillet Death Stranding tilføjet. Biblioteket UnityPlayer.dll i de programmer, der kører i Wine, identificeres, og parameteren BOX64_DYNAREC_STRONGMEM=1 indstilles automatisk.
Kilde: opennet.ru
