Foi lançado o projeto QEMU 7.2. Como um emulador, o QEMU permite executar programas compilados para uma plataforma de hardware em um sistema com uma arquitetura completamente diferente, por exemplo, executar um aplicativo para ARM em um PC compatível com x86. No modo de virtualização, o desempenho da execução de código em um ambiente isolado é próximo ao de um sistema físico, devido à execução direta de instruções na CPU e ao uso do hipervisor Xen ou do módulo KVM.
O projeto foi originalmente criado por Fabrice Bellard com o objetivo de possibilitar a execução de arquivos executáveis Linux compilados para a plataforma x86 em arquiteturas diferentes de x86. Ao longo dos anos de desenvolvimento, foi adicionada suporte para emulação completa de 14 arquiteturas de hardware, e o número de dispositivos de hardware emulados superou 400. Na preparação da versão 7.2, foram feitas mais de 1800 alterações por 205 desenvolvedores.
Melhorias principais adicionadas no QEMU 7.2:
- No emulador da arquitetura x86, o gerador de código clássico TCG adicionou suporte para instruções AVX, AVX2, F16C, FMA3 e VAES, e a otimização de desempenho relacionada ao uso de instruções SSE foi realizada. Para KVM foi adicionada a suporte ao mecanismo de rastreamento de saída da máquina virtual (‘notify vmexit’), permitindo contornar erros na CPU que podem levar a falhas.
- No emulador ARM, foi implementado suporte para CPU Cortex-A35 e extensões de processador ETS (Enhanced Translation Synchronization), PMUv3p5 (Extensões PMU 3.5), GTG (Guest Translation Granule 4KB, 16KB, 64KB), HAFDBS (controle de hardware do flag de acesso e estado ‘dirty’) e E0PD (prevenção de acesso EL0 às tabelas de endereços divididas).
- No emulador LoongArch, foi adicionada suporte para fw_cfg DMA, conexão de memória a quente e emulação de dispositivos TPM (Trusted Platform Module).
- No emulador da arquitetura OpenRISC, foi implementada a plataforma ‘virt’ para testes de dispositivos e uso em sistemas de integração contínua. Foi implementado suporte para execução multithread do gerador de código clássico TCG (Tiny Code Generator).
- No emulador da arquitetura RISC-V, nas máquinas emuladas ‘virt’, foi implementada a capacidade de carregar firmware do pflash no modo S (S-mode). Melhorias foram feitas na manipulação da árvore de dispositivos.
- No emulador da arquitetura 390x, foi adicionado suporte à extensão MSA5 (Message-Security-Assist Extension 5 com a instrução PRNO para geração de números pseudoaleatórios), às instruções KIMD/KLM (implementação SHA-512) e à interpretação estendida de zPCI para sistemas convidados baseados no hipervisor KVM.
- Nos backends para gerenciamento de memória, foi implementada a alocação antecipada de memória considerando a arquitetura NUMA.
- Foi reforçada a verificação de cabeçalhos de dispositivos de bloco criptografados LUKS, e foi adicionada a capacidade de criar imagens LUKS no macOS.
- No backend 9pfs, que permite o uso do sistema de arquivos de rede Plan 9 para acesso de uma máquina virtual à outra, houve transição para o uso de hash GHashTable na tabela de identificadores, o que em algumas situações resultou em um aumento de performance de 6 a 12 vezes.
- Foram adicionados novos backends netdev, stream e dgram.
- No agente para sistemas convidados baseados na arquitetura ARM, foi adicionado suporte para FreeBSD.
- Nas compilações de GUI para macOS, foi possibilitada a inclusão de interfaces baseadas em Cocoa e SDL/GTK em um único arquivo executável.
- O submódulo embutido 'slirp' foi removido, sendo recomendada a utilização da biblioteca de sistema libslirp.
- Devido à falta de capacidade de teste, foi anunciada a descontinuação do suporte a sistemas hospedados com processadores MIPS de 32 bits que utilizam a ordem de byte 'Big endian'.
Fonte: opennet.ru
