Подано реліз проекту QEMU 7.2. Як емулятор QEMU дозволяє запустити програму, зібрану для однієї апаратної платформи на системі з зовсім іншою архітектурою, наприклад, виконати програму для ARM на x86-сумісному ПК. В режимі віртуалізації QEMU продуктивність виконання коду в ізольованому оточенні близька до апаратної системи за рахунок прямого виконання інструкцій на CPU і залучення гіпервізора Xen або модуля KVM.
Спочатку проект був створений Фабрисом Белларом (Fabrice Bellard) з метою забезпечення можливості запуску зібраних для платформи x86 файлів, що виконуються. Linux на архітектурах, відмінних від x86. За роки розробки було додано підтримку повної емуляції для 14 апаратних архітектур, кількість емульованих апаратних пристроїв перевищила 400. Під час підготовки версії 7.2 внесено понад 1800 змін від 205 розробників.
Ключові покращення, додані в QEMU 7.2:
- У емуляторі архітектури x86 у класичному генераторі коду TCG додано підтримку інструкцій AVX, AVX2, F16C, FMA3 та VAES, а також проведено оптимізацію продуктивності, пов'язану з використанням інструкцій SSE. Для KVM додано підтримку механізму відстеження виходу з віртуальної машини («notify vmexit»), що дозволяє обійти помилки в CPU, які можуть призвести до зависання.
- В емуляторі ARM реалізована підтримка CPU Cortex-A35 і процесорних розширень ETS (Enhanced Translation Synchronization), PMUv3p5 (PMU Extensions 3.5), GTG (Guest Translation Granule 4KB, 16KB, 64KB), HAFDBS (апаратне керування прапором) (запобігання доступу EL0 до розділених карт адрес).
- У емуляторі LoongArch додано підтримку fw_cfg DMA, гаряче підключення пам'яті та емуляцію пристроїв TPM (Trusted Platform Module).
- В емуляторі архітектури OpenRISC реалізована платформа virt для проведення тестів пристроїв та використання в системах безперервної інтеграції. Реалізовано підтримку багатопоточного виконання класичного генератора коду TCG (Tiny Code Generator).
- У емулятор архітектури RISC-V в емульованих машинах 'virt' реалізована можливість завантаження прошивки з pflash у S-режимі (S-mode). Поліпшено роботу з device tree.
- В емуляторі архітектури 390x забезпечено підтримку розширення MSA5 (Message-Security-Assist Extension 5 з інструкцією PRNO для генерації псевдовипадкових чисел), інструкцій KIMD/KLM (реалізація SHA-512) та розширеної інтерпретації zPCI для гостьових систем.
- У бекендах для роботи з пам'яттю забезпечено попереднє виділення пам'яті з урахуванням архітектури NUMA.
- Посилено перевірку заголовків шифрованих блокових пристроїв LUKS, додано можливість створення образів LUKS в macOS.
- У бекенді 9pfs, що дозволяє використовувати мережну файлову систему Plan 9 для доступу однієї віртуальної машини до іншої, перехід на використання хеша GHashTable в таблиці ідентифікаторів, що в деяких ситуаціях призвело до підвищення продуктивності в 6-12 разів.
- Додані нові netdev-бекенди stream та dgram.
- В агенті для гостьових систем на базі архітектури ARM додано підтримку FreeBSD.
- У збірках GUI для macOS забезпечена можливість включення в один файл інтерфейсів на базі Cocoa і SDL/GTK.
- Видалений вбудований субмодуль slirp, замість якого рекомендується використовувати системну бібліотеку libslirp.
- Через відсутність можливості тестування оголошено застарілою підтримку хост-систем з 32-розрядними процесорами MIPS, які використовують порядок байт «Big endian».
Джерело: opennet.ru
