È stato presentato il rilascio del progetto QEMU 7.2. Come emulatore, QEMU consente di eseguire un programma compilato per una piattaforma hardware su un sistema con un'architettura completamente diversa, ad esempio, eseguire un'applicazione per ARM su un PC compatibile con x86. In modalità virtualizzazione, la performance dell'esecuzione del codice in un ambiente isolato si avvicina a quella di un sistema hardware grazie all'esecuzione diretta delle istruzioni sulla CPU e all'impiego dell'hipervisor Xen o del modulo KVM.
Inizialmente, il progetto è stato creato da Fabrice Bellard con l'obiettivo di consentire l'esecuzione di file eseguibili Linux compilati per la piattaforma x86 su architetture diverse da x86. Negli anni di sviluppo, è stato aggiunto il supporto completo per 14 architetture hardware e il numero di dispositivi hardware emulati ha superato i 400. Per la preparazione della versione 7.2, sono stati apportati oltre 1800 cambiamenti da 205 sviluppatori.
Migliorie chiave aggiunte in QEMU 7.2:
- Nell'emulatore dell'architettura x86, nel generatore di codice classico TCG, è stato aggiunto il supporto per le istruzioni AVX, AVX2, F16C, FMA3 e VAES, e sono state effettuate ottimizzazioni delle performance relative all'utilizzo delle istruzioni SSE. Per KVM è stato aggiunto il supporto per il meccanismo di monitoraggio dell'uscita dalla macchina virtuale («notify vmexit») che consente di aggirare errori nella CPU che potrebbero portare al blocco.
- Nell'emulatore ARM è stato implementato il supporto per la CPU Cortex-A35 e per le estensioni della CPU ETS (Enhanced Translation Synchronization), PMUv3p5 (PMU Extensions 3.5), GTG (Guest Translation Granule 4KB, 16KB, 64KB), HAFDBS (controllo hardware del flag di accesso e dello stato «dirty») e E0PD (prevenzione dell'accesso EL0 alle mappe di indirizzi condivisi).
- Nell'emulatore LoongArch è stato aggiunto il supporto per fw_cfg DMA, il collegamento a caldo della memoria e l'emulazione dei dispositivi TPM (Trusted Platform Module).
- Nell'emulatore dell'architettura OpenRISC è stata implementata la piattaforma 'virt' per testare i dispositivi e utilizzarla nei sistemi di integrazione continua. È stato implementato il supporto per l'esecuzione multi-threading del generatore di codice classico TCG (Tiny Code Generator).
- Nell'emulatore dell'architettura RISC-V, nelle macchine emulated 'virt', è stata implementata la possibilità di caricare firmware da pflash in S-mode (S- modalità). È stato migliorato il lavoro con device tree.
- Nell'emulatore dell'architettura 390x è stato garantito il supporto per l'estensione MSA5 (Message-Security-Assist Extension 5 con l'istruzione PRNO per la generazione di numeri pseudo-casuali), le istruzioni KIMD/KLM (implementazione di SHA-512) e l'interpretazione avanzata di zPCI per i sistemi guest basati su hypervisor KVM.
- Nei backend per la gestione della memoria è stata implementata l'allocazione anticipata della memoria tenendo conto dell'architettura NUMA.
- È stata rafforzata la verifica dei header dei dispositivi di blocco crittografati LUKS, è stata aggiunta la possibilità di creare immagini LUKS in macOS.
- Nel backend 9pfs, che consente di utilizzare il file system di rete Plan 9 per consentire a una macchina virtuale di accedere a un'altra, è stata effettuata la transizione all'uso dell'hash GHashTable nella tabella degli identificatori, portando in alcune situazioni a miglioramenti delle performance da 6 a 12 volte.
- Sono stati aggiunti nuovi backend netdev stream e dgram.
- Nell'agente per i sistemi guest basati su architettura ARM è stato aggiunto il supporto per FreeBSD.
- Nelle build GUI per macOS è stata garantita la possibilità di includere in un unico file eseguibile interfacce basate su Cocoa e SDL/GTK.
- È stato rimosso il sottogruppo integrato «slirp», per il quale è consigliato utilizzare la libreria di sistema libslirp.
- A causa dell'impossibilità di testare, è stata dichiarata obsoleta la supporto per i sistemi host con processori MIPS a 32 bit che utilizzano l'ordine di byte «Big endian».
Fonte: opennet.ru
