Foi lançada a versão do emulador Box64 0.3.0, destinada a executar programas Linux compilados para a arquitetura x86_64 em hardware com processadores ARM64, RISC-V e Loongarch64. O projeto foca intensamente na organização da execução de aplicações de jogos e oferece a capacidade de rodar builds do Windows através do wine e Proton. Os códigos fonte do projeto são escritos em linguagem C e distribuídos sob a licença MIT.
Uma característica do projeto é a aplicação de um modelo híbrido de execução, onde a emulação é aplicada apenas ao código de máquina do próprio aplicativo e às bibliotecas específicas. As bibliotecas de sistema padrão, incluindo libc, libm, GTK, SDL, Vulkan e OpenGL, são substituídas por versões nativas das plataformas-alvo. Assim, as chamadas de biblioteca são executadas sem emulação, permitindo um aumento significativo de desempenho.
A emulação de código, para a qual não há substituições nativas na plataforma de destino, é realizada utilizando a técnica de recompilação dinâmica (DynaRec) de um conjunto de instruções de máquina para outro. Em comparação com a interpretação de instruções de máquina, a recompilação dinâmica demonstra desempenho de 5 a 10 vezes superior.
Na nova versão:
- Implementado suporte para extensões de processador AVX, AVX2, BMI1, BMI2, ADX, FMA, F16C e RDRAND.
- Adicionada a variável de ambiente BOX64_AVX, na qual definir como 1 ativa o suporte a AVX, BMI1, F16C e VAES, e 2 ativa AVX2, BMI2, FMA, ADX, VPCLMULQDQ e RDRAND.
- Adicionado suporte à recompilação dinâmica (DynaRec) de AVX, AVX2 e instruções semelhantes para uma representação baseada nas instruções NEON, disponíveis em CPUs baseadas na arquitetura ARM64.
- Adicionado suporte inicial à recompilação de instruções SIMD para instruções RVV em sistemas RISC-V.
- O mecanismo DynaRec foi otimizado, e o suporte a novos opcodes para RISC-V e Loongarch64 foi adicionado.
- Atualizada a lista de opcodes CPUID; por padrão, em vez de Pentium IV, agora o CPUID retorna CPU da série Haswell.
- Adicionado suporte a Wayland e proporcionada a possibilidade de recompilação dinâmica de bibliotecas relacionadas a Wayland, que possibilitou a compatibilidade com Wine-wayland.
- Expandido o número de jogos suportados, como compatibilidade adicionada com o jogo Death Stranding. Garantido a detecção do uso da biblioteca UnityPlayer.dll em programas executados no Wine e configuração automática do parâmetro BOX64_DYNAREC_STRONGMEM=1.
Fonte: opennet.ru
