Die Veröffentlichung des Emulators Box64 0.3.0 wurde veröffentlicht, der dafür vorgesehen ist, Linux-Programme, die für die Architektur x86_64 kompiliert wurden, auf Hardware mit ARM64-, RISC-V- und Loongarch64-Prozessoren auszuführen. Das Projekt legt großen Wert auf die Ausführung von Spieleanwendungen und bietet die Möglichkeit, Windows-Bauten über Wine und Proton auszuführen. Der Quellcode des Projekts ist in der Programmiersprache C geschrieben und wird unter der MIT-Lizenz verbreitet.
Eine Besonderheit des Projekts ist die Anwendung eines hybriden Ausführungsmodells, bei dem die Emulation nur für den Maschinencode der Anwendung selbst und spezifische Bibliotheken verwendet wird. Typische Systembibliotheken, einschließlich libc, libm, GTK, SDL, Vulkan und OpenGL, werden durch Varianten ersetzt, die für die Zielplattformen nativ sind. Dadurch werden Bibliotheksaufrufe ohne Emulation ausgeführt, was eine signifikante Steigerung der Leistung ermöglicht.
Die Emulation von Code, für den native Ersetzungen für die Zielplattform fehlen, erfolgt unter Verwendung der Technik der dynamischen Rekompilierung (DynaRec) von einem Instruktionssatz in einen anderen. Im Vergleich zur Interpretation von Maschinenbefehlen zeigt die dynamische Rekompilierung eine um das 5- bis 10-Fache höhere Leistung.
In der neuen Version:
- Unterstützung für die Prozessorerweiterungen AVX, AVX2, BMI1, BMI2, ADX, FMA, F16C und RDRAND wurde implementiert.
- Die Umgebungsvariable BOX64_AVX wurde hinzugefügt, wobei das Setzen von 1 die Unterstützung für AVX, BMI1, F16C und VAES aktiviert und das Setzen von 2 die Unterstützung für AVX2, BMI2, FMA, ADX, VPCLMULQDQ und RDRAND aktiviert.
- Unterstützung für dynamische Neukompilierung (DynaRec) von AVX, AVX2 und ähnlichen Instruktionen in ein auf NEON-basierendes Instruktionsformat wurde bereitgestellt, das von CPUs auf ARM64-Basis bereitgestellt wird.
- Erste Unterstützung für die Neukompilierung von SIMD-Instruktionen in RVV-Instruktionen auf RISC-V-Systemen wurde hinzugefügt.
- Die DynaRec-Mechanik wurde optimiert, und es wurde Unterstützung für neue Op-Codes für RISC-V und Loongarch64 hinzugefügt.
- Die Liste der CPUID-Op-Codes wurde aktualisiert, sodass nun standardmäßig über CPUID anstelle von Pentium IV die CPU-Serie Haswell bereitgestellt wird.
- Unterstützung für Wayland wurde hinzugefügt, und die Möglichkeit zur dynamischen Neukompilierung von mit Wayland verbundenen Bibliotheken wurde geschaffen, was die Kompatibilität mit Wine-Wayland ermöglichte.
- Die Anzahl der unterstützten Spiele wurde erweitert, beispielsweise wurde die Kompatibilität mit dem Spiel Death Stranding hinzugefügt. Es wird erkannt, ob die Bibliothek UnityPlayer.dll in den in Wine ausgeführten Programmen verwendet wird, und der Parameter BOX64_DYNAREC_STRONGMEM=1 wird automatisch gesetzt.
Quelle: opennet.ru
