This is release 0.9.5 of Wine, a free implementation of Windows on Unix.

What's new in this release:
  - A number of MSI fixes.
  - More improvements to the IDL compiler.
  - Lots of bug fixes.

Because of lags created by using mirrors, this message may reach you
before the release is available at the public sites. The sources will
be available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-0.9.5.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.5.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/site/download

You will find documentation on

  http://www.winehq.org/site/documentation

You can also get the current source directly from the git or CVS
repositories. Check respectively http://wiki.winehq.org/GitWine or
http://www.winehq.org/cvs for details.

Patches should be submitted to "wine-patches@winehq.org".  Please
don't forget to include a ChangeLog entry. If you submitted a patch,
please check to make sure it has been included in the new release.

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

--
Alexandre Julliard
julliard@winehq.org
