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

Release notes describe unfinished work in particular releases.

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


Version 3.0b3 - Release Date 20-Aug-2008
----------------------------------------

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


Version 3.0b2 - Release Date 17-Jul-2008
----------------------------------------

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

The bsddb3 library is known to be in bad shape.  The Python 2.6 version needs
to be ported to Python 3.0, but so far, no one has done this.

There are several known deferred blockers (issues that will block the next
release).  These include, but are not limited to, problems with 2to3,
multiprocessing, and bytearrays.


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.
