This is release 20000909 of Wine, a free implementation of Windows on
Unix.  This is still a developers only release.  There are many bugs
and unimplemented features.  Most applications still do not work
correctly.

Patches should be submitted to "julliard@winehq.com".  Please don't
forget to include a ChangeLog entry.

WHAT'S NEW with Wine-20000909: (see ChangeLog for details)
	- Better handling of Win32 dll loading.
	- More DBCS codepages support.
	- Several multimedia improvements.
	- Beginnings of reentrant wineserver protocol.
	- Lots of bug fixes.

See the README file in the distribution for installation instructions.

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

  ftp://metalab.unc.edu/pub/Linux/ALPHA/wine/development/Wine-20000909.tar.gz
  ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-20000909.tar.gz
  ftp://ftp.infomagic.com/pub/mirrors/linux/sunsite/ALPHA/wine/development/Wine-20000909.tar.gz
  ftp://orcus.progsoc.uts.edu.au/pub/Wine/development/Wine-20000909.tar.gz

It should also be available from any site that mirrors tsx-11 or sunsite.

You can also get the current source directly from the CVS tree. Check
http://www.winehq.com/dev.html for details.

If you submitted a patch, please check to make sure it has been
included in the new release.

If you want to get the new releases faster, you can subscribe to the
wine-patches mailing list by sending a mail containing 'subscribe
wine-patches your_address' to majordomo@tiger.informatik.hu-berlin.de.

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.com
