Une nouvelle version de l'émulateur Box64 0.3.0 a été publiée, permettant de faire tourner des programmes Linux compilés pour l'architecture x86_64 sur du matériel équipé de processeurs ARM64, RISC-V et Loongarch64. Le projet met un accent particulier sur le lancement d'applications de jeu et offre la possibilité d'exécuter des versions Windows via Wine et Proton. Les sources du projet sont écrites en C et sont diffusées sous licence MIT.
Une caractéristique du projet est l'application d'un modèle d'exécution hybride, où l'émulation est utilisée uniquement pour le code machine de l'application elle-même et des bibliothèques spécifiques. Les bibliothèques système typiques, y compris libc, libm, GTK, SDL, Vulkan et OpenGL, sont remplacées par des versions natives aux plates-formes cibles. Ainsi, les appels de bibliothèque sont effectués sans émulation, ce qui permet d'obtenir une augmentation significative des performances.
L'émulation du code pour lequel il n'existe pas de remplacements natifs pour la plateforme cible est effectuée en utilisant une technique de recompilation dynamique (DynaRec) d'un ensemble d'instructions machines dans un autre. Par rapport à l'interprétation des instructions machines, la recompilation dynamique montre des performances de 5 à 10 fois supérieures.
Dans la nouvelle version :
- La prise en charge des extensions de processeur AVX, AVX2, BMI1, BMI2, ADX, FMA, F16C et RDRAND a été implémentée.
- Une variable d'environnement BOX64_AVX a été ajoutée, en définissant 1 activant la prise en charge d'AVX, BMI1, F16C et VAES, et 2 pour AVX2, BMI2, FMA, ADX, VPCLMULQDQ et RDRAND.
- Ajout de la prise en charge de la recompilation dynamique (DynaRec) pour AVX, AVX2 et d'instructions similaires vers une représentation basée sur les instructions NEON, fournies par les processeurs basés sur l'architecture ARM64.
- Une prise en charge initiale de la recompilation des instructions SIMD vers des instructions RVV sur les systèmes RISC-V a été ajoutée.
- L'optimisation du mécanisme DynaRec a été réalisée, avec l'ajout du support de nouveaux opcodes pour RISC-V et Loongarch64.
- La liste des opcodes CPUID a été mise à jour, par défaut, au lieu de Pentium IV, CPUID renvoie désormais un CPU de la série Haswell.
- La prise en charge de Wayland a été ajoutée et la possibilité de recompilation dynamique des bibliothèques liées à Wayland a été fournie, ce qui a permis d'atteindre la compatibilité avec Wine-wayland.
- Le nombre de jeux pris en charge a été élargi, avec la compatibilité ajoutée pour le jeu Death Stranding. Détection de l'utilisation de la bibliothèque UnityPlayer.dll dans les programmes exécutés sous Wine et définition automatique du paramètre BOX64_DYNAREC_STRONGMEM=1.
Source : opennet.ru
