Udgivelsen af emulatoren Box64 0.4.0 er blevet offentliggjort, designet til at køre Linux-programmer, der er bygget til x86_64-arkitektur, på hardware med ARM64-, RISC-V- og Loongarch64-processorer. Projektet fokuserer meget på at organisere kørsel af spilprogrammer og giver mulighed for at køre Windows-versioner via Wine og Proton. Kildekoden 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.
Emulering af kode, for hvilken der ikke findes native erstatninger for målplatformen, udføres ved hjælp af teknikken dynamisk rekombinering (DynaRec) fra et sæt maskininstruktioner til et andet. Sammenlignet med fortolkning af maskininstruktioner viser dynamisk rekombinering en forbedring på 5-10 gange. høj ydeevne.
I den nye version:
- En ensartet dekoder til operationers præfikser (prefix opcode decoder) er blevet præsenteret, anvendt i fortolkeren og i alle backend-dynamiske rekombineringssystemer (DynaRec). Den nye dekoder håndterer mere generelt sjældne kombinationer af opcode-præfikser og muliggør, at man undgår specifikke 'hacks' og duplikeret kode i fortolkeren og DynaRec-backendene. Omarbejdningen af dekoderen har ført til fjernelse af unødig kode, hvilket forenkler vedligeholdelsen af kodebasen og muliggør DynaRecs arbejde med usædvanlige kombinationer af opcode-præfikser.
- Arbejdet er påbegyndt på en mekanisme til at fjerne blokke af kode fra hukommelsen, som er blevet konverteret til native kode, men som ikke længere er i brug. En sådan optimering vil reducere hukommelsesforbruget under kørsel af applikationer, der udfører en stor mængde operationer ved opstart, såsom Steam og applikationer, der bruger libcef.
- Supporten for ARM64-arkitekturen er forbedret: Der er implementeret en bygprofil for NVIDIA GB10 CPU. I DynaRec-backend'en fortsætter implementeringen af optimeringsteknikker for løkker, såsom at flytte operationer til registerindstillinger XMM/YMM ud af løkkens krop.
- Stabiliteten og ydeevnen af DynaRec-backend'en for RISC-V-arkitekturen er forbedret. Korrekt kørsel af Steam, Proton og Wine er sikret, men for at arbejde med beskyttet DRM-indhold, der kræver emulering af systemopkald fra Windows, kræves hardware, der understøtter 48-bit adressrum (SV48) eller brug af modificerede versioner af Wine og Proton.
- Udviklingen af backend til Loongarch-arkitekturen er gjort betydelig fremskridt, og den er nu i stand til at køre Steam, Wine og Proton, men den halter stadig efter med hensyn til funktionalitet sammenlignet med backend til ARM64-systemer. Der kræves stadig brug af sider i hukommelsen med en størrelse på 4K i kernen (standard for Loongarch er normalt 16K). Ydelsen er allerede tilstrækkelig til at køre spil på Loongarch 3A6000 CPU'en (2,5 GHz med 4 fysiske kerner).

- Stabiliteten af Box32-tilstanden, der understøtter 32-bit eksekverbare filer i Box64, er blevet forbedret. I denne tilstand er der meldt om øget stabilitet i Steam på alle arkitekturer og muligheden for at bruge in-game overlays i nogle OpenGL-spil.
Kilde: opennet.ru

