This is release 20010629 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 "wine-patches@winehq.com".  Please don't
forget to include a ChangeLog entry.

WHAT'S NEW with Wine-20010629: (see ChangeLog for details)
	- Better font metrics support in Postscript driver using Freetype.
	- Major window management redesign (still in progress).
	- Message queues in wineserver to prepare for inter-process messaging.
	- DDE merged from Corel tree, plus various fixes.
	- 64-bit file size support.
	- 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:

  http://www.ibiblio.org/pub/Linux/ALPHA/wine/development/Wine-20010629.tar.gz
  ftp://ftp.infomagic.com/pub/mirrors/linux/sunsite/ALPHA/wine/development/Wine-20010629.tar.gz
  ftp://ftp.fu-berlin.de/unix/linux/mirrors/sunsite.unc.edu/ALPHA/wine/development/Wine-20010629.tar.gz
  ftp://orcus.progsoc.uts.edu.au/pub/Wine/development/Wine-20010629.tar.gz

It should also be available from any other site that mirrors ibiblio.org.
For more download locations, see http://ftpsearch.lycos.com. These
locations also hold pre-built documentation packages in various
formats: wine-doc-html.tar.gz, wine-doc-txt.tar.gz, wine-doc.pdf.gz
and wine-doc.ps.gz.

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 receive by mail a patch against the previous release
when a new one is released, you can subscribe to the mailing list at
http://tiger.informatik.hu-berlin.de/cgi-bin/mailman/listinfo/wine-patches.

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
