Представлен релиз проекта QEMU 7.1. В качестве эмулятора QEMU позволяет запустить программу, собранную для одной аппаратной платформы, на системе с совершенно иной архитектурой, например, выполнить приложение для ARM на x86-совместимом ПК. В режиме виртуализации в QEMU производительность выполнения кода в изолированном окружении близка к аппаратной системе за счёт прямого выполнения инструкций на CPU и задействования гипервизора Xen или модуля KVM.
Изначально проект был создан Фабрисом Белларом (Fabrice Bellard) с целью обеспечения возможности запуска собранных для платформы x86 исполняемых файлов Linux на архитектурах, отличных от x86. За годы разработки была добавлена поддержка полной эмуляции для 14 аппаратных архитектур, число эмулируемых аппаратных устройств превысило 400. При подготовке версии 7.1 внесено более 2800 изменений от 238 разработчиков.
Ключевые улучшения, добавленные в QEMU 7.1:
- На платформе Linux реализована опция zero-copy-send, позволяющая организовать передачу страниц памяти при live-миграции без промежуточной буферизации.
- В QMP (QEMU Machine Protocol) добавлена возможность использования команды block-export-add для экспорта образов NBD с данным о страницах в состоянии “dirty”. Также добавлены новые команды ‘query-stats’ и ‘query-stats-schema’ для запроса статистики из различных подсистем QEMU.
- В агенте для гостевых систем улучшена поддержка платформы Solaris и добавлены новые команды ‘guest-get-diskstats’ и ‘guest-get-cpustats’ для отображения состояния дисков и CPU. В команду ‘guest-get-disks’ добавлен вывод информации из NVMe SMART, а в команду ‘guest-get-fsinfo’ вывод данных о типе шины NVMe.
- Добавлен новый эмулятор LoongArch с поддержкой 64-разрядного варианта архитектуры набора команд LoongArch (LA64). Эмулятором поддерживаются процессоры Loongson 3 5000 и северные мосты Loongson 7A1000.
- В эмуляторе ARM реализованы новые типы эмулируемых машин: Aspeed AST1030 SoC, Qaulcomm и AST2600 / AST1030 (fby35). Добавлена поддержка эмуляции CPU Cortex-A76 и Neoverse-N1, а также процессорных расширений SME (Scalable Matrix Extensions), RAS (Reliability, Availability, Serviceability) и команд для блокирования утечек из внутреннего кэша в ходе спекулятивного выполнения инструкций на CPU.
Для машин ‘virt’ реализована эмуляция контроллера прерываний GICv4. - В эмуляторе архитектуры x86 для KVM добавлена поддержка виртуализации механизма трассировки LBR (Last Branch Record).
- В эмуляторе архитектуры HPPA предложена новая прошивка на базе SeaBIOS v6, поддерживающая использование клавиатуры PS/2 в загрузочном меню. Улучшена эмуляция последовательного порта. Добавлены дополнительные консольные шрифты STI.
- В эмуляторе архитектуры MIPS для плат Nios2 (-machine 10m50-ghrd) реализована эмуляция векторного контроллера прерывания (Vectored Interrupt Controller) и теневого набора регистров. Улучшена обработка исключений.
- В эмуляторе архитектуры OpenRISC для машины ‘or1k-sim’ добавлена возможность использования до 4 UART-устройств 16550A.
- В эмулятор архитектуры RISC-V добавлена поддержка новых расширений набора команд (ISA), определённых в спецификации 1.12.0, а также добавлена поддержка расширения Sdtrig и улучшена поддержка векторных инструкций. Расширены возможности для отладки. В эмулируемую машину ‘virt’ добавлена поддержка TPM (Trusted Platform Module), а в машину ‘OpenTitan’ – поддержка Ibex SPI.
- В эмуляторе архитектуры 390x обеспечена поддержка расширений VEF 2 (Vector-Enhancements Facility 2). В s390-ccw BIOS реализована возможность загрузки с дисков, имеющих размер сектора, отличный от 512 байт.
- В эмулятор архитектуры Xtensa добавлена поддержка ядер lx106 и объектных кодов для тестирования кэша.