After a long time of development -- eight years -- version 1.0 of QEMU has just been released. As usual for open source projects, this release brings a number of new features and bug fixes, but isn't the kind of "revolutionary" new release you expect from a major version increment.
For those who haven't heard of QEMU, it is a rather popular open source (GPL 2) virtualization tool similar to VirtualBox and VMWare, which is mostly used on the Linux platform. It is what is used as an emulator by the Android SDK to run Android on Windows for running and debugging Android applications. It is also used by the Bada SDK for emulating Samsune Bada phones to ease development on them on the PC.
One of the major strengths of QEMU is its ability to emulate non-x86 platforms. While VirtualBox and VMWare serve well in virtualizing the hardware platform that the emulator is running on, they don't allow running, say, ARM operating systems / applications on x86 or vice versa. QEMU can handle both those cases. It can be used -- and is by the Android and Bada emulators -- to emulate ARM hardware while running on x86, and x86 while running on ARM. While emulating x86 on ARM it allows one to run the plethora of x86 applications on the ARM platform.
The following is the changelog for this latest release:
== General == * i386-softmmu is no longer named ''qemu'' but instead referred to as ''qemu-system-i386'' for better consistency with other targets. A new tool is likely to be introduced that uses the ''qemu'' name so distributions are advised to not undo this change. * QEMU now uses a separate thread for VCPU execution. This merges the biggest difference between the qemu-kvm tree and upstream QEMU. * A new memory dispatch API has been added internally. A new monitor command "info mtree" can show the hierarchy of memory regions in the guest. * QEMU now has a build dependency on glib and makes extensive use of glib. * QEMU now can run on more hosts. Hosts without a native code generator can use the TCG interpreter (TCI). See [[Features/TCI]] for more information. == Block devices (disks) == * QEMU now supports I/O latency accounting in the monitor command "info blockstats". * Errors are now tracked per device and are shown by the monitor command "info block". * All image formats now support asynchronous operation. IDE and SCSI emulation will use this feature, while other devices (notably floppy and SD) will not. === IDE/ATAPI === * A large number of bugs were fixed regarding CD media change and tray locking. === SCSI === * Memory management errors could crash QEMU when scsi-disk encountered I/O errors. Many instances of this problem were fixed. * The accuracy of error handling for SCSI emulation has been greatly improved. * SCSI devices can now be addressed by channel, target (id) and LUN. Not all emulated HBAs will support this feature (in particular, the LSI controller will not). * Block device pass through is now supported through a new scsi-block device. The scsi-block device works with block devices (like /dev/sda or /dev/sr0) rather than /dev/sgN devices, and is more efficient because it does not consume arbitrary amounts of memory when the guest does large data transfers. * SCSI CD-ROMs now report media changed events. * SCSI CD-ROMs now support DVD images. * Bugfixes for IDE media change also apply to SCSI. * SCSI devices now report a unit attention condition when the system is started or reset. This may cause problems with old firmware versions. === VDI === * Now supports discarded blocks in dynamically-sized images. == User-mode networking (SLIRP) == * SLIRP can process ARP replies and gratuitous ARP requests from the guest. == ARM == * QEMU now supports the new Cortex-A15 instructions in linux-user mode (via "-cpu any"): VFPv4 fused multiply-accumulate (VFMA, VFMS, VFNMA, VFNMS) and also integer division (UDIV, SDIV). * The vexpress-a9, versatileab, versatilepb and realview-* boards now have audio support. * QEMU is known not to work on ARM hosts in this release. (ARM target emulation is fine.) === pSeries === * sPAPR VIO devices can now be created with -device. == Xtensa == * QEMU now supports DC232b and FSF xtensa CPU cores. * QEMU now supports sim (similar to Tensilica ISS) and LX60/LX110/LX200 machines. == Migration == * QEMU now supports live migration using image files like QCOW2 on shared storage