+++++++++++
Python News
+++++++++++

(editors: check NEWS.help for information about editing NEWS using ReST.)

What's New in Python 3000?
==========================

*Release date: XX-XXX-200X*

TO DO
-----

- See PEP 3000, 3100.

- Test merging certain changes from the 2.5 HEAD code.

- Weed really old/weird stuff from the library.

- Unify range() and xrange().

- Revamp the dict API: keys(), values(), items() return iterators, etc.

- Add the bytes type.

- Rework the standard I/O library to use bytes for binary files.

- Make strings all Unicode.

- Get rid of classic class implementation.

- Get rid of various compatibility-related flags (e.g. division flags).


Core and Builtins
-----------------

- PEP 3105: print is now a function.  Also (not in the PEP) the
  'softspace' attribute of files is now gone (since print() doesn't use
  it).  A side effect of this change is that you can get incomplete
  output lines in interactive sessions:

  >>> print(42, end="")
  42>>> 

  We may be able to fix this after the I/O library rewrite.

- PEP 3102: keyword-only arguments.

- Int/Long unification is mostly complete.  The 'long' built-in type
  and literals with trailing 'L' or 'l' have been removed.
  Performance may be sub-optimal (haven't really benchmarked).

- 'except E, V' must now be spelled as 'except E as V' and deletes V
  at the end of the except clause; V must be a simple name.

- Added function annotations per PEP 3107.

- Moved intern() to sys.intern().

- exec is now a function.

- Renamed nb_nonzero to nb_bool and __nonzero__ to __bool__.

- Classic classes are a thing of the past.  All classes are new style.

- Exceptions *must* derive from BaseException.

- Integer division always returns a float.  The -Q option is no more.
  All the following are gone:
   * PyNumber_Divide and PyNumber_InPlaceDivide
   * __div__, __rdiv__, and __idiv__
   * nb_divide, nb_inplace_divide
   * operator.div, operator.idiv, operator.__div__, operator.__idiv__
  (Only __truediv__ and __floordiv__ remain, not sure how to handle them
   if we want to re-use __div__ and friends.  If we do, it will make
   it harder to write code for both 2.x and 3.x.)

- 'as' and 'with' are keywords.

- Absolute import is the default behavior for 'import foo' etc.

- Removed support for syntax:
  backticks (`x`), <>

- Removed these Python builtins:
  apply(), coerce(), input(), raw_input()

- Removed these Python methods:
  {}.has_key

- Removed these Python slots:
  __coerce__, __div__, __idiv__, __rdiv__

- Removed these attributes from Python modules:
  * operator module: div, idiv, __div__, __idiv__

- Removed these C APIs:
  PyNumber_Coerce(), PyNumber_CoerceEx() 

- Removed these C slots/fields:
  nb_divide, nb_inplace_divide

- Removed these macros:
  staticforward, statichere, PyArg_GetInt, PyArg_NoArgs

- Removed these typedefs:
  intargfunc, intintargfunc, intobjargproc, intintobjargproc,
  getreadbufferproc, getwritebufferproc, getsegcountproc, getcharbufferproc

- Removed these opcodes:
  BINARY_DIVIDE, INPLACE_DIVIDE, UNARY_CONVERT

- zip returns an iterator

- Additions:
  set literals, ellipsis literal


Extension Modules
-----------------

Library
-------

- Removed all traces of the sets module.

Build
-----

C API
-----

Tests
-----

Documentation
-------------

Mac
---

New platforms
-------------

Tools/Demos
-----------

**(For information about older versions, consult the HISTORY file.)**
