A fost publicată versiunea 0.3.0 a emulatorului Box64, destinat rulării programelor Linux compilate pentru arhitectura x86_64 pe echipamente cu procesoare ARM64, RISC-V și Loongarch64. Proiectul acordă o mare atenție organizării lansării aplicațiilor de jocuri și oferă posibilitatea de a lansa compilări Windows prin wine și Proton. Codul sursă al proiectului este scris în limba C și este distribuit sub licența MIT.
O caracteristică a proiectului este utilizarea unui model hibrid de execuție, în care emulatorul este aplicat doar pe codul mașină al aplicației în sine și bibliotecilor specifice. Bibliotecile de sistem standard, inclusiv libc, libm, GTK, SDL, Vulkan și OpenGL, sunt înlocuite cu variante native pentru platformele țintă. Astfel, apelurile la biblioteci sunt efectuate fără emulație, ceea ce permite obținerea unei creșteri semnificative a performanței.
Emularea codului pentru care nu există înlocuiri native pentru platforma țintă se realizează utilizând tehnica de recompilare dinamică (DynaRec) dintr-un set de instrucțiuni mașină în altul. Comparativ cu interpretarea instrucțiunilor mașină, recompilarea dinamică demonstrează o performanță cu 5-10 ori mai ridicată.
În noua versiune:
- A fost implementat suportul pentru extensiile procesorului AVX, AVX2, BMI1, BMI2, ADX, FMA, F16C și RDRAND.
- A fost adăugată variabila de mediu BOX64_AVX, setarea 1 activând suportul pentru AVX, BMI1, F16C și VAES, iar 2 activând AVX2, BMI2, FMA, ADX, VPCLMULQDQ și RDRAND.
- A fost adăugat suportul pentru recompilarea dinamică (DynaRec) a instrucțiunilor AVX, AVX2 și similare în reprezentarea pe baza instrucțiunilor NEON, oferită de CPU-urile bazate pe arhitectura ARM64.
- A fost adăugat suport inițial pentru recompilarea instrucțiunilor SIMD în instrucțiuni RVV pe sistemele RISC-V.
- A fost optimizat mecanismul DynaRec, fiind adăugat suport pentru noi opcode-uri pentru RISC-V și Loongarch64.
- A fost actualizată lista opcode-urilor CPUID, prin default, în loc de Pentium IV, CPUID acum returnează CPU-uri din seria Haswell.
- A fost adăugat suport pentru Wayland și a fost oferită capacitatea de recompilare dinamică a bibliotecilor asociate cu Wayland, ceea ce a permis obținerea compatibilității cu Wine-wayland.
- Numărul de jocuri acceptate a fost extins, de exemplu, a fost adăugată compatibilitatea cu jocul Death Stranding. A fost asigurată identificarea utilizării bibliotecii UnityPlayer.dll în programele lansate prin Wine și setarea automată a parametrului BOX64_DYNAREC_STRONGMEM=1.
Sursa: opennet.ro
