  - TFTP booting from host directory (Anthony Liguori, Erwan Velu)
  - Tap device emulation for Solaris (Sittichai Palanisong)
  - Monitor multiplexing to several I/O channels (Jason Wessel)
  - ds1225y nvram support (Herve Poussineau)
  - CPU model selection support (J. Mayer, Paul Brook, Herve Poussineau)
  - Several Sparc fixes (Aurelien Jarno, Blue Swirl, Robert Reif)
  - MIPS 64-bit FPU support (Thiemo Seufer)
  - Xscale PDA emulation (Andrzei Zaborowski)
  - ColdFire system emulation (Paul Brook)
  - Improved SH4 support (Magnus Damm)
  - MIPS64 support (Aurelien Jarno, Thiemo Seufer)
  - Preliminary Alpha guest support (J. Mayer)
  - Read-only support for Parallels disk images (Alex Beregszaszi)
  - SVM (x86 virtualization) support (Alexander Graf)
  - CRIS emulation (Edgar E. Iglesias)
  - SPARC32PLUS execution support (Blue Swirl)

version 0.9.0:

  - Support for relative paths in backing files for disk images
  - Async file I/O API
  - New qcow2 disk image format
  - Support of multiple VM snapshots
  - Linux: specific host CDROM and floppy support
  - SMM support
  - Moved PCI init, MP table init and ACPI table init to Bochs BIOS
  - Support for MIPS32 Release 2 instruction set (Thiemo Seufer)
  - MIPS Malta system emulation (Aurelien Jarno, Stefan Weil)
  - Darwin userspace emulation (Pierre d'Herbemont)
  - m68k user support (Paul Brook)
  - several x86 and x86_64 emulation fixes
  - Mouse relative offset VNC extension (Anthony Liguori)
  - PXE boot support (Anthony Liguori)
  - '-daemonize' option (Anthony Liguori)

version 0.8.2:

  - ACPI support
  - PC VGA BIOS fixes
  - switch to OpenBios for SPARC targets (Blue Swirl)
  - VNC server fixes
  - MIPS FPU support (Marius Groeger)
  - Solaris/SPARC host support (Juergen Keil)
  - PPC breakpoints and single stepping (Jason Wessel)
  - USB updates (Paul Brook)
  - UDP/TCP/telnet character devices (Jason Wessel)
  - Windows sparse file support (Frediano Ziglio)
  - RTL8139 NIC TCP segmentation offloading (Igor Kovalenko)
  - PCNET NIC support (Antony T Curtis)
  - Support for variable frequency host CPUs
  - Workaround for win32 SMP hosts
  - Support for AMD Flash memories (Jocelyn Mayer)
  - Audio capture to WAV files support (malc)

version 0.8.1:

  - USB tablet support (Brad Campbell, Anthony Liguori)
  - win32 host serial support (Kazu)
  - PC speaker support (Joachim Henke)
  - IDE LBA48 support (Jens Axboe)
  - SSE3 support
  - Solaris port (Juergen Keil)
  - Preliminary SH4 target (Samuel Tardieu)
  - VNC server (Anthony Liguori)
  - slirp fixes (Ed Swierk et al.)
  - USB fixes
  - ARM Versatile Platform Baseboard emulation (Paul Brook)

version 0.8.0:

  - ARM system emulation: Arm Integrator/CP board with an arm1026ej-s
    cpu (Paul Brook)
  - SMP support
  - Mac OS X cocoa improvements (Mike Kronenberg)
  - Mac OS X CoreAudio driver (Mike Kronenberg)
  - DirectSound driver (malc)
  - ALSA audio driver (malc)
  - new audio options: '-soundhw' and '-audio-help' (malc)
  - ES1370 PCI audio device (malc)
  - Initial USB support
  - Linux host serial port access
  - Linux host low level parallel port access
  - New network emulation code supporting VLANs.
  - MIPS and MIPSel User Linux emulation
  - MIPS fixes to boot Linux (Daniel Jacobowitz)
  - NX bit support
  - Initial SPARC SMP support (Blue Swirl)
  - Major overhaul of the virtual FAT driver for read/write support
    (Johannes Schindelin)

version 0.7.2:

  - x86_64 fixes (Win2000 and Linux 2.6 boot in 32 bit)
  - merge self modifying code handling in dirty ram page mecanism.
  - MIPS fixes (Ralf Baechle)
  - better user net performances

version 0.7.1:

  - read-only Virtual FAT support (Johannes Schindelin)
  - Windows 2000 install disk full hack (original idea from Vladimir
    N. Oleynik)
  - VMDK disk image creation (Filip Navara)
  - SPARC64 progress (Blue Swirl)
  - initial MIPS support (Jocelyn mayer)
  - MIPS improvements (Ralf Baechle)
  - 64 bit fixes in user networking (initial patch by Gwenole Beauchesne)
  - IOAPIC support (Filip Navara)

version 0.7.0:

  - better BIOS translation and HDD geometry auto-detection
  - user mode networking bug fix
  - undocumented FPU ops support
  - Cirrus VGA: support for 1280x1024x[8,15,16] modes
  - 'pidfile' option
  - .dmg disk image format support (Johannes Schindelin)
  - keymaps support (initial patch by Johannes Schindelin)
  - big endian ARM support (Lennert Buytenhek)
  - added generic 64 bit target support
  - x86_64 target support
  - initial APIC support
  - MMX/SSE/SSE2/PNI support
  - PC parallel port support (Mark Jonckheere)
  - initial SPARC64 support (Blue Swirl)
  - SPARC target boots Linux (Blue Swirl)
  - armv5te user mode support (Paul Brook)
  - ARM VFP support (Paul Brook)
  - ARM "Angel" semihosting syscalls (Paul Brook)
  - user mode gdb stub support (Paul Brook)
  - Samba 3 support
  - initial Cocoa support (Pierre d'Herbemont)
  - generic FPU emulation code
  - Virtual PC read-only disk image support (Alex Beregszaszi)

version 0.6.1:

  - Mac OS X port (Pierre d'Herbemont)
  - Virtual console support
  - Better monitor line edition
  - New block device layer
  - New 'qcow' growable disk image support with AES encryption and
    transparent decompression
  - VMware 3 and 4 read-only disk image support (untested)
  - Support for up to 4 serial ports
  - TFTP server support (Magnus Damm)
  - Port redirection support in user mode networking
  - Support for not executable data sections
  - Compressed loop disk image support (Johannes Schindelin)
  - Level triggered IRQ fix (aka NE2000 PCI performance fix) (Steve
    Wormley)
  - Fixed Fedora Core 2 problems (now you can run qemu without any
    LD_ASSUME_KERNEL tricks on FC2)
  - DHCP fix for Windows (accept DHCPREQUEST alone)
  - SPARC system emulation (Blue Swirl)
  - Automatic Samba configuration for host file access from Windows.
  - '-loadvm' and '-full-screen' options
  - ne2000 savevm support (Johannes Schindelin)
  - Ctrl-Alt is now the default grab key. Ctrl-Alt-[0-9] switches to
    the virtual consoles.
  - BIOS floppy fix for NT4 (Mike Nordell, Derek Fawcus, Volker Ruppert)
  - Floppy fixes for NT4 and NT5 (Mike Nordell)
  - NT4 IDE fixes (Ben Pfaf, Mike Nordell)
  - SDL Audio support and SB16 fixes (malc)
  - ENTER instruction bug fix (initial patch by Stefan Kisdaroczi)
  - VGA font change fix
  - VGA read-only CRTC register fix

version 0.6.0:

  - minimalist FPU exception support (NetBSD FPU probe fix)
  - cr0.ET fix (Win95 boot)
  - *BSD port (Markus Niemisto)
  - I/O access fix (signaled by Mark Jonckheere)
  - IDE drives serial number fix (Mike Nordell)
  - int13 CDROM BIOS fix (aka Solaris x86 install CD fix)
  - int15, ah=86 BIOS fix (aka Solaris x86 hardware probe hang up fix)
  - BSR/BSF "undefined behaviour" fix
  - vmdk2raw: convert VMware disk images to raw images
  - PCI support
  - NE2K PCI support
  - dummy VGA PCI support
  - VGA font selection fix (Daniel Serpell)
  - PIC reset fix (Hidemi KAWAI)
  - PIC spurious irq support (aka Solaris install bug)
  - added '-localtime' option
  - Cirrus CL-GD54xx VGA support (initial patch by Makoto Suzuki (suzu))
  - APM and system shutdown support
  - Fixed system reset
  - Support for other PC BIOSes
  - Initial PowerMac hardware emulation
  - PowerMac/PREP OpenFirmware compatible BIOS (Jocelyn Mayer)
  - initial IDE BMDMA support (needed for Darwin x86)
  - Set the default memory size for PC emulation to 128 MB

version 0.5.5:

  - SDL full screen support (initial patch by malc)
  - VGA support on PowerPC PREP
  - VBE fixes (Matthew Mastracci)
  - PIT fixes (aka Win98 hardware probe and "VGA slowness" bug)
  - IDE master only fixes (aka Win98 CD-ROM probe bug)
  - ARM load/store half word fix (Ulrich Hecht)
  - FDC fixes for Win98

version 0.5.4:

  - qemu-fast fixes
  - BIOS area protection fix (aka EMM386.EXE fix) (Mike Nordell)
  - keyboard/mouse fix (Mike Nordell)
  - IDE fixes (Linux did not recognized slave drivers)
  - VM86 EIP masking fix (aka NT5 install fix) (Mike Nordell)
  - QEMU can now boot a PowerPC Linux kernel (Jocelyn Mayer)
  - User mode network stack
  - imul imm8 fix + 0x82 opcode support (Hidemi KAWAI)
  - precise self modifying code (aka BeOS install bug)

version 0.5.3:

  - added Bochs VESA VBE support
  - VGA memory map mode 3 access fix (OS/2 install fix)
  - IDE fixes (Jens Axboe)
  - CPU interrupt fixes
  - fixed various TLB invalidation cases (NT install)
  - fixed cr0.WP semantics (XP install)
  - direct chaining support for SPARC and PowerPC (faster)
  - ARM NWFPE support (initial patch by Ulrich Hecht)
  - added specific x86 to x86 translator (close to native performance
    in qemu-i386 and qemu-fast)
  - shm syscalls support (Paul McKerras)
  - added accurate CR0.MP/ME/TS emulation
  - fixed DMA memory write access (Win95 boot floppy fix)
  - graphical x86 linux loader
  - command line monitor
  - generic removable device support
  - support of CD-ROM change
  - multiple network interface support
  - initial x86-64 host support (Gwenole Beauchesne)
  - lret to outer priviledge fix (OS/2 install fix)
  - task switch fixes (SkyOS boot)
  - VM save/restore commands
  - new timer API
  - more precise RTC emulation (periodic timers + time updates)
  - Win32 port (initial patch by Kazu)

version 0.5.2:

  - improved soft MMU speed (assembly functions and specializing)
  - improved multitasking speed by avoiding flushing TBs when
    switching tasks
  - improved qemu-fast speed
  - improved self modifying code handling (big performance gain in
    softmmu mode).
  - fixed IO checking
  - fixed CD-ROM detection (win98 install CD)
  - fixed addseg real mode bug (GRUB boot fix)
  - added ROM memory support (win98 boot)
  - fixed 'call Ev' in case of paging exception
  - updated the script 'qemu-binfmt-conf.sh' to use QEMU automagically
    when launching executables for the supported target CPUs.
  - PowerPC system emulation update (Jocelyn Mayer)
  - PC floppy emulation and DMA fixes (Jocelyn Mayer)
  - polled mode for PIC (Jocelyn Mayer)
  - fixed PTE dirty bit handling
  - fixed xadd same reg bug
  - fixed cmpxchg exception safeness
  - access to virtual memory in gdb stub
  - task gate and NT flag fixes
  - eflags optimisation fix for string operations

version 0.5.1:

  - float access fixes when using soft mmu
  - PC emulation support on PowerPC
  - A20 support
  - IDE CD-ROM emulation
  - ARM fixes (Ulrich Hecht)
  - SB16 emulation (malc)
  - IRET and INT fixes in VM86 mode with IOPL=3
  - Port I/Os use TSS io map
  - Full task switching/task gate support
  - added verr, verw, arpl, fcmovxx
  - PowerPC target support (Jocelyn Mayer)
  - Major SPARC target fixes (dynamically linked programs begin to work)

version 0.5.0:

  - full hardware level VGA emulation
  - graphical display with SDL
  - added PS/2 mouse and keyboard emulation
  - popw (%esp) fix
  - mov to/from segment data width fix
  - added real mode support
  - added Bochs BIOS and LGPL'ed VGA BIOS loader in qemu
  - m68k host port (Richard Zidlicky)
  - partial soft MMU support for memory mapped I/Os
  - multi-target build
  - fixed: no error code in hardware interrupts
  - fixed: pop ss, mov ss, x and sti disable hardware irqs for the next insn
  - correct single stepping thru string operations
  - preliminary SPARC target support (Thomas M. Ogrisegg)
  - tun-fd option (Rusty Russell)
  - automatic IDE geometry detection
  - renamed 'vl' to qemu[-fast] and user qemu to qemu-{cpu}.
  - added man page
  - added full soft mmu mode to launch unpatched OSes.

version 0.4.3:

  - x86 exception fix in case of nop instruction.
  - gcc 3.2.2 bug workaround (RedHat 9 fix)
  - sparc and Alpha host fixes
  - many ARM target fixes: 'ls' and 'bash' can be launched.

version 0.4.2:

 - many exception handling fixes (can compile a Linux kernel inside vl)
 - IDE emulation support
 - initial GDB stub support
 - deferred update support for disk images (Rusty Russell)
 - accept User Mode Linux Copy On Write disk images
 - SMP kernels can at least be booted

version 0.4.1:

 - more accurate timer support in vl.
 - more reliable NE2000 probe in vl.
 - added 2.5.66 kernel in vl-test.
 - added VLTMPDIR environment variable in vl.

version 0.4:

 - initial support for ring 0 x86 processor emulation
 - fixed signal handling for correct dosemu DPMI emulation
 - fast x86 MMU emulation with mmap()
 - fixed popl (%esp) case
 - Linux kernel can be executed by QEMU with the 'vl' command.

version 0.3:

 - initial support for ARM emulation
 - added fnsave, frstor, fnstenv, fldenv FPU instructions
 - added FPU register save in signal emulation
 - initial ARM port
 - Sparc and Alpha ports work on the regression test
 - generic ioctl number conversion
 - fixed ioctl type conversion

version 0.2:

 - PowerPC disassembly and ELF symbols output (Rusty Russell)
 - flock support (Rusty Russell)
 - ugetrlimit support (Rusty Russell)
 - fstat64 fix (Rusty Russell)
 - initial Alpha port (Falk Hueffner)
 - initial IA64 port (Matt Wilson)
 - initial Sparc and Sparc64 port (David S. Miller)
 - added HLT instruction
 - LRET instruction fix.
 - added GPF generation for I/Os.
 - added INT3 and TF flag support.
 - SHL instruction C flag fix.
 - mmap emulation for host page size > 4KB
 - self-modifying code support
 - better VM86 support (dosemu works on non trivial programs)
 - precise exception support (EIP is computed correctly in most cases)
 - more precise LDT/GDT/IDT emulation
 - faster segment load in vm86 mode
 - direct chaining of basic blocks (faster emulation)

version 0.1.6:

 - automatic library search system. QEMU can now work with unpatched
   ELF dynamic loader and libc (Rusty Russell).
 - ISO C warning fixes (Alistair Strachan)
 - first self-virtualizable version (works only as long as the
   translation cache is not flushed)
 - RH9 fixes

version 0.1.5:

 - ppc64 support + personality() patch (Rusty Russell)
 - first Alpha CPU patches (Falk Hueffner)
 - removed bfd.h dependancy
 - fixed shrd, shld, idivl and divl on PowerPC.
 - fixed buggy glibc PowerPC rint() function (test-i386 passes now on PowerPC).

version 0.1.4:

 - more accurate VM86 emulation (can launch small DOS 16 bit
   executables in wine).
 - fixed push/pop fs/gs
 - added iret instruction.
 - added times() syscall and SIOCATMARK ioctl.

version 0.1.3:

 - S390 support (Ulrich Weigand)
 - glibc 2.3.x compile fix (Ulrich Weigand)
 - socketcall endian fix (Ulrich Weigand)
 - struct sockaddr endian fix (Ulrich Weigand)
 - sendmsg/recvmsg endian fix (Ulrich Weigand)
 - execve endian fix (Ulrich Weigand)
 - fdset endian fix (Ulrich Weigand)
 - partial setsockopt syscall support (Ulrich Weigand)
 - more accurate pushf/popf emulation
 - first partial vm86() syscall support (can be used with runcom example).
 - added bound, cmpxchg8b, cpuid instructions
 - added 16 bit addressing support/override for string operations
 - poll() fix

version 0.1.2:

 - compile fixes
 - xlat instruction
 - xchg instruction memory lock
 - added simple vm86 example (not working with QEMU yet). The 54 byte
   DOS executable 'pi_10.com' program was released by Bertram
   Felgenhauer (more information at http://www.boo.net/~jasonp/pipage.html).

version 0.1.1:

 - glibc 2.2 compilation fixes
 - added -s and -L options
 - binary distribution of x86 glibc and wine
 - big endian fixes in ELF loader and getdents.

version 0.1:

 - initial public release.
