Представлен релиз проекта QEMU 9.2. В качестве эмулятора QEMU позволяет запустить программу, собранную для одной аппаратной платформы на системе с совершенно иной архитектурой, например, выполнить приложение для ARM на x86-совместимом ПК. В режиме виртуализации в QEMU производительность выполнения кода в изолированном окружении близка к аппаратной системе за счёт прямого выполнения инструкций на CPU и задействования гипервизора Xen или модуля KVM в Linux, или модуля NVMM в NetBSD.
Изначально проект был создан Фабрисом Белларом (Fabrice Bellard) с целью обеспечения возможности запуска собранных для платформы x86 исполняемых файлов Linux на архитектурах, отличных от x86. За годы разработки была добавлена поддержка полной эмуляции для 14 аппаратных архитектур, число эмулируемых аппаратных устройств превысило 400. При подготовке версии 9.2 внесено более 1700 изменений от 209 разработчиков.
Ключевые улучшения, добавленные в QEMU 9.2:
- Добавлена экспериментальная поддержка создания моделей устройств, написанных на языке Rust. При сборке QEMU с поддержкой Rust по умолчанию задействована альтернативная реализация драйвера PL011 UART, написанная на Rust, но пока не рекомендованная для широкого использования.
В настоящее время по умолчанию поддержка Rust в QEMU отключена и активируется при сборке через указание опции “–enable-rust” при запуске скрипта configure. Для сборки с Rust требуются как минимум версии rustc 1.63.0 и bindgen 0.60.0 (например, в Debian 12 придётся отдельной устанавливать более новую версию Rust). В будущем компилятор Rust и генератор привязок bindgen планируют добавить в число обязательных сборочных зависимостей.
Из планов, связанных с продвижением Rust в QEMU, можно отметить доведение до рабочего состояния драйвера HPET (High Precision Event Timer) и драйвера для блочных устройств, написанных на Rust, продолжение развития обвязок для использования Rust в различных компонентах QEMU (например, в драйверах блочных устройств, таймеров и GPIO), переписывание на Rust критичных с точки зрения безопасности систем, таких как virtio.
- В устройство VirtIO-GPU, обеспечивающее работу виртуального GPU, добавлена поддержка 3D-ускорения с использованием графического API Vulkan, реализованная через входящий в состав Mesa Vulkan-драйвер Venus, который позволяет предоставить гостевой системе виртуальный GPU для 3D-рендеринга без открытия эксклюзивного прямого доступа к физическому GPU. Для работы необходимо наличие библиотеки virglrenderer на стороне хост-системы и Mesa-драйвера Venus на стороне гостевой системы. Доступна инструкция по настройке поддержки Vulkan в QEMU.
- В инструментарий миграции гостевых добавлена поддержка ускорения операций сжатия одновременно передаваемых потоков данных при помощи библиотеки QATzip, использующей встроенный в процессоры Intel ускоритель QAT (QuickAssist Technology), предлагающий средства для ускорения вычислений, связанных со сжатием и шифрованием.
- В криптографический бэкенд на базе GLib добавлена поддержка алгоритма хэширования SHA-384.
- В эмулятор архитектуры ARM добавлена поддержка процессорных расширений FEAT_EBF16 и FEAT_CMOW, а также расширений для обеспечения безопасности, используемых в платах xilinx-zynq-a9. При использовании компонентаHVF, который задействует инструментарий Hypervisor.framework для ускорения выполнения гостевых систем на ARM-компьютерах Mac, обеспечена поддержка более чем 64 ГБ памяти. Для эмулируемых систем sbsa-ref и virt добавлена поддержка двухэтапной трансляции адресов в SMMU (System Memory Management Unit). Прекращена поддержка устаревших типов эмулируемого оборудования akita, borzoi, cheetah, connex, mainstone, n800, n810, spitz, terrier, tosa, verdex и z2.
- В эмулятор архитектуры x86 добавлена поддержка нового типа аппаратной конфигурации – nitro-enclave, эмулирующего окружение AWS Nitro Enclave и способного загружать системные образы в формате Enclave Image Format.
- В эмуляторе архитектуры x86 для гипервизора KVM реализована возможность включения поддержки набора инструкций AVX10, а также специфичных версий AVX10 – avx10-128, avx10-256 и avx10-512.
- В эмулятор архитектуры RISC-V добавлена поддержка расширений набора команд Svvptc, Bitmanip (Bit-Manipulation) и CFI (Control Flow Integrity), используемых на платах OpenTitan. В тип эмулируемых систем “virt” добавлена поддержка IOMMU. Повышена производительность инструкций ld и st.
- В эмуляторе архитектуры HPPA прошивка SeaBIOS-hppa обновлена до версии 17.
- В эмулятор архитектуры s390x добавлена возможность загрузки с других устройств, если не удалось загрузиться с указанного устройства.