Python 3000 Release Notes
=========================

Release notes describe unfinished work in particular releases.

Please report bugs to http://bugs.python.org/.


Version 3.0b1 - Release Date 18-Jun-2008
----------------------------------------

Please search the bug tracker for critical issues in Python 3.0.


Version 3.0a5 - Release Date 08-May-2008
----------------------------------------

Please search the bug tracker for critical issues in Python 3.0.


Version 3.0a2 - Release Date 07-Dec-2007
----------------------------------------

* The AMD64 Windows installer doesn't contain Tcl/Tk, and hence IDLE
  won't work.  This is because Tcl doesn't compile at all on this
  platform.

* The 32bit build for the Win32/x86 platform is optimized with PGO
  (profile guided optimization).  Please read Microsoft's docs for
  `PGO
  <http://msdn2.microsoft.com/en-us/library/e7k32f4k(VS.90).aspx>`_
  if you are interested in details.  Preliminary benchmarks have shown
  a speedup of about 10% in PyBench.  Real world applications may gain
  more or less speedup.

* The Tools directory contains a copy of the 2to3 conversion tool.
  Note that 2to3 itself must be run with Python 2.5!

* SSL support is back!  However, while the tests pass, the SSL code
  appears to be leaking quite a bit, and there are still bugs.
  We'll be working on this for the next release.

* On Windows, Python can't be run from a directory with non ASCII chars
  in its path name (`bug #1342 <http://bugs.python.org/issue1342>`_).

* On Windows, the module doc server (pydocgui.pyw) is crashing.

* On Windows, the menus in IDLE are broken.

* The current releases of Cygwin and MinGW can't create extensions for
  the official Python 3.0 binary.  The necessary modifications to
  Cygwin are already in its CVS.  Look out for a new Cygwin release!

* Otherwise, the 3.0a1 release notes below still apply, except hashlib
  no longer requires openssl, and IDLE now seems fine (except on Windows).


Version 3.0a1 - Release Date 31-Aug-2007
----------------------------------------

* SSL support is disabled.  This causes test_ssl to be skipped.
  The new SSL support in the 2.6 trunk (with server-side support and
  certificate verification) will be ported for 3.0a2.

* If you don't have `openssl <http://www.openssl.org>`_ installed, or
  a version older than 0.9.7, hashlib is non-functional, which means
  there is no way to compute MD5 checksums.  This breaks some modules.

* Platform support is reduced.  We've mostly tested on Linux, OSX,
  and Windows.  Solaris is also supported (somewhat).

* There may be additional issues on 64-bit architectures.

* There are still some open issues on Windows.

* Some new features are very fresh, and probably contain bugs: the new
  format() method on strings (PEP 3101), the strict separation of
  bytes and strings, the new buffer API (PEP 3118).

* IDLE still has some open issues.  If you can't run it at all, try
  "idle -n" which disables the separate subprocess for the
  interpreter.
