Se ha publicado la versión del emulador Box64 0.3.0, diseñada para ejecutar programas de Linux compilados para la arquitectura x86_64 en hardware con procesadores ARM64, RISC-V y Loongarch64. El proyecto pone un gran énfasis en la organización del arranque de aplicaciones de juegos y permite la ejecución de compilaciones de Windows a través de wine y Proton. Los códigos fuente del proyecto están escritos en C y se distribuyen bajo la licencia MIT.
Una característica del proyecto es la aplicación de un modelo híbrido de ejecución, donde la emulación se aplica solo al código máquina de la propia aplicación y a bibliotecas específicas. Las bibliotecas del sistema estándar, incluidas libc, libm, GTK, SDL, Vulkan y OpenGL, se reemplazan por versiones nativas para las plataformas de destino. De esta manera, las llamadas a bibliotecas se realizan sin emulación, lo que permite un aumento significativo en el rendimiento.
La emulación de código para el cual no hay sustitutos nativos para la plataforma de destino se lleva a cabo utilizando técnica de recompilación dinámica (DynaRec) de un conjunto de instrucciones de máquina a otro. En comparación con la interpretación de instrucciones de máquina, la recompilación dinámica demuestra un rendimiento de 5 a 10 veces superior.
En la nueva versión:
- Se ha implementado el soporte para las extensiones del procesador AVX, AVX2, BMI1, BMI2, ADX, FMA, F16C y RDRAND.
- Se ha añadido una variable de entorno BOX64_AVX, estableciendo 1 activa el soporte de AVX, BMI1, F16C y VAES, mientras que 2 activa AVX2, BMI2, FMA, ADX, VPCLMULQDQ y RDRAND.
- Se ha añadido soporte para recompilación dinámica (DynaRec) de AVX, AVX2 y similares en una representación basada en instrucciones NEON, proporcionadas en CPU basadas en la arquitectura ARM64.
- Se ha añadido soporte inicial para la recompilación de instrucciones SIMD a instrucciones RVV en sistemas RISC-V.
- Se ha optimizado el mecanismo DynaRec y se ha añadido soporte para nuevos códigos de operación para RISC-V y Loongarch64.
- Se ha actualizado la lista de códigos de operación de CPUID, de manera que por defecto, en lugar de Pentium IV, ahora se informa sobre la CPU de la serie Haswell a través de CPUID.
- Se ha añadido soporte para Wayland y se ha proporcionado la capacidad de recompilación dinámica de las bibliotecas relacionadas con Wayland, lo que ha permitido la compatibilidad con Wine-wayland.
- Se ha ampliado el número de juegos compatibles, incluyendo la adición de soporte para el juego Death Stranding. Se ha asegurado la detección del uso de la biblioteca UnityPlayer.dll en los programas ejecutados en Wine y se ha establecido automáticamente el parámetro BOX64_DYNAREC_STRONGMEM=1.
Fuente: opennet.ru
