De release van de emulator Box64 0.4.0 is uitgebracht, bedoeld voor het uitvoeren van Linux-programma's die zijn opgebouwd voor de architectuur x86_64 op hardware met ARM64-, RISC-V- en Loongarch64-processoren. Het project legt veel nadruk op het uitvoeren van game-applicaties en biedt de mogelijkheid om Windows-builds te draaien via Wine en Proton. De bronbestanden van het project zijn geschreven in de programmeertaal C en worden verspreid onder de MIT-licentie.
Een kenmerk van het project is het gebruik van een hybride uitvoeringsmodel, waarbij emulatie alleen wordt toegepast op de machinecode van de applicatie zelf en specifieke bibliotheken. Typische systeembibliotheken, waaronder libc, libm, GTK, SDL, Vulkan en OpenGL, worden vervangen door varianten die native zijn voor de doelplatforms. Hierdoor worden bibliotheekaanroepen uitgevoerd zonder emulatie, wat een aanzienlijke prestatieverbetering mogelijk maakt.
Code-emulatie waarvoor geen native vervangingen voor het doelsysteem bestaan, wordt uitgevoerd met behulp van dynamische recompilatie (DynaRec) van de ene set machine-instructies naar de andere. In vergelijking met de interpretatie van machine-instructies toont dynamische recompilatie een prestatieverbetering van 5-10 keer. hoge prestaties.
In de nieuwe versie:
- Een uniforme decoderaar voor opcode-prefixen (prefix opcode decoder) is geĆÆntroduceerd, die wordt gebruikt in de interpreter en in alle backends van dynamische recompilatie (DynaRec). De nieuwe decoderaar behandelt zeldzame combinaties van opcode-prefixen op een meer universele manier en maakt het mogelijk om zonder specifieke 'hacks' en code-dubbelingen in de interpreter en de DynaRec-backends te werken. De herziening van de decoderaar heeft geleid tot het verwijderen van overbodige code, vereenvoudiging van het onderhoud van de codebase en de mogelijkheid voor DynaRec om met atypische combinaties van opcode-prefixen te werken.
- Er is begonnen met de ontwikkeling van een mechanisme voor het verwijderen van codeblokken uit het geheugen die zijn geconverteerd naar native code, maar niet langer worden gebruikt. Deze optimalisatie vermindert het geheugengebruik bij het uitvoeren van applicaties die veel operaties uitvoeren bij opstarten, zoals Steam en applicaties die libcef gebruiken.
- De ondersteuning voor de ARM64-architectuur is verbeterd: er is een bouwprofiel geĆÆmplementeerd voor de CPU NVIDIA GB10. In de backend van dynamische recompilatie (DynaRec) is de implementatie van optimalisatietechnieken voor lussen voortgezet, zoals het verplaatsen van XMM/YMM-registerinstellingen buiten de lus.
- De stabiliteit en prestaties van de backend voor dynamische recompilatie voor de RISC-V-architectuur zijn verbeterd. Er is een correcte werking van Steam, Proton en Wine gegarandeerd, maar voor het werken met beveiligde DRM-inhoud die systeemaanroepen van Windows vereist, is hardware met ondersteuning voor 48-bits adresruimte (SV48) vereist of het gebruik van gemodificeerde builds van Wine en Proton.
- De ontwikkeling van de backend voor de Loongarch-architectuur is aanzienlijk gevorderd, met de mogelijkheid om Steam, Wine en Proton te starten, maar blijft nog achter op het gebied van functionaliteit vergeleken met de backend voor ARM64-systemen. Voorlopig is het gebruik van een geheugenpagina van 4K in de kernel vereist (standaard is voor Loongarch meestal ingesteld op 16K). De prestaties zijn al voldoende voor het draaien van games op de Loongarch CPU 3A6000 (2,5 GHz met 4 fysieke kernen).

- De stabiliteit van de Box32-modus is verbeterd, die ondersteuning biedt voor 32-bit uitvoerbare bestanden in Box64. In deze modus is een verhoogde stabiliteit van Steam waargenomen op alle architecturen, evenals de mogelijkheid om in-game overlays in sommige OpenGL-games te gebruiken.
Bron: opennet.ru

