Bylo zveřejněno vydání emulátoru Box64 0.3.0, určeného k provozu Linuxových programů sestavených pro architekturu x86_64 na zařízeních s procesory ARM64, RISC-V a Loongarch64. Projekt se zaměřuje na umožnění spuštění herních aplikací a poskytuje možnost spouštět Windows sestavení pomocí wine a Proton. Zdrojové kódy projektu jsou napsány v jazyce C a jsou distribuovány pod licencí MIT.
Charakteristika projektu spočívá v použití hybridního modelu vykonávání, při kterém se emulace aplikuje pouze na strojový kód aplikace a specifických knihovnách. Standardní systémové knihovny, včetně libc, libm, GTK, SDL, Vulkan a OpenGL, jsou nahrazovány varianty nativními pro cílové platformy. Tímto způsobem se knihovní volání vykonávají bez emulace, což umožňuje dosáhnout značného zvýšení výkonu.
Emulace kódu, pro který nejsou k dispozici nativní nahrazení pro cílovou platformu, se provádí pomocí techniky dynamické překompilace (DynaRec) z jednoho souboru strojových instrukcí na jiný. V porovnání s interpretací strojových instrukcí dynamická překompilace prokazuje 5-10x vyšší výkon.
V nové verzi:
- Byla implementována podpora procesorových rozšíření AVX, AVX2, BMI1, BMI2, ADX, FMA, F16C a RDRAND.
- Byla přidána proměnná prostředí BOX64_AVX, kde nastavení 1 zapíná podporu AVX, BMI1, F16C a VAES, a 2 zapíná AVX2, BMI2, FMA, ADX, VPCLMULQDQ a RDRAND.
- Byla přidána podpora dynamické překompilace (DynaRec) AVX, AVX2 a podobných instrukcí na základě instrukcí NEON, které jsou poskytovány v CPU založeném na architektuře ARM64.
- Byla přidána počáteční podpora překompilace instrukcí SIMD na instrukce RVV na systémech RISC-V.
- Byla provedena optimalizace mechanismu DynaRec, přidána podpora nových opcode pro RISC-V a Loongarch64.
- Byl aktualizován seznam opcode CPUID, místo Pentium IV je nyní ve výchozím nastavení CPUID vydáváno CPU série Haswell.
- Byla přidána podpora Wayland a byla poskytnuta možnost dynamické překompilace knihoven souvisejících s Wayland, což umožnilo dosažení kompatibility s Wine-wayland.
- Rozšířený počet podporovaných her, například byla přidána kompatibilita s hrou Death Stranding. Zajištěno určení použití knihovny UnityPlayer.dll v aplikacích spouštěných v Wine a automatické nastavení parametru BOX64_DYNAREC_STRONGMEM=1.
Zdroj: opennet.ru
