mirror of https://github.com/python/cpython
263 lines
7.0 KiB
Plaintext
263 lines
7.0 KiB
Plaintext
+++++++++++
|
|
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.
|
|
|
|
- Weed really old/weird stuff from the library.
|
|
|
|
- Use io.py instead of C stdio everywhere.
|
|
|
|
- Make strings all Unicode (see branches/py3k-struni).
|
|
|
|
- Get rid of various compatibility-related flags (e.g. division flags).
|
|
|
|
|
|
Core and Builtins
|
|
-----------------
|
|
|
|
- PEP 3131: Support non-ASCII identifiers.
|
|
|
|
- PEP 3120: Change default encoding to UTF-8.
|
|
|
|
- PEP 3123: Use proper C inheritance for PyObject.
|
|
|
|
- Removed the __oct__ and __hex__ special methods and added a bin()
|
|
builtin function.
|
|
|
|
- PEP 3127: octal literals now start with "0o". Old-style octal literals
|
|
are invalid. There are binary literals with a prefix of "0b".
|
|
This also affects int(x, 0).
|
|
|
|
- None, True, False are now keywords.
|
|
|
|
- PEP 3119: isinstance() and issubclass() can be overridden.
|
|
|
|
- Remove BaseException.message.
|
|
|
|
- Remove tuple parameter unpacking (PEP 3113).
|
|
|
|
- Remove the f_restricted attribute from frames. This naturally leads to teh
|
|
removal of PyEval_GetRestricted() and PyFrame_IsRestricted().
|
|
|
|
- PEP 3132 was accepted. That means that you can do ``a, *b = range(5)``
|
|
to assign 0 to a and [1, 2, 3, 4] to b.
|
|
|
|
- range() now returns an iterator rather than a list. Floats are not allowed.
|
|
xrange() is no longer defined.
|
|
|
|
- Patch #1660500: hide iteration variable in list comps, add set comps
|
|
and use common code to handle compilation of iterative expressions
|
|
|
|
- By default, != returns the opposite of ==, unless the latter returns
|
|
NotImplemented.
|
|
|
|
- Patch #1680961: sys.exitfunc has been removed and replaced with a private
|
|
C-level API.
|
|
|
|
- PEP 3115: new metaclasses: the metaclass is now specified as a
|
|
keyword arg in the class statement, which can now use the full syntax of
|
|
a parameter list. Also, the metaclass can implement a __prepare__ function
|
|
which will be called to create the dictionary for the new class namespace.
|
|
|
|
- The long-deprecated argument "pend" of PyFloat_FromString() has been
|
|
removed.
|
|
|
|
- The dir() function has been extended to call the __dir__() method on
|
|
its argument, if it exists. If not, it will work like before. This allows
|
|
customizing the output of dir() in the presence of a __getattr__().
|
|
|
|
- Removed support for __members__ and __methods__.
|
|
|
|
- Removed indexing/slicing on BaseException.
|
|
|
|
- input() became raw_input(): the name input() now implements the
|
|
functionality formerly known as raw_input(); the name raw_input()
|
|
is no longer defined.
|
|
|
|
- Classes listed in an 'except' clause must inherit from BaseException.
|
|
|
|
- PEP 3106: dict.iterkeys(), .iteritems(), .itervalues() are now gone;
|
|
and .keys(), .items(), .values() return dict views.
|
|
|
|
- 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 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.
|
|
|
|
- Added nonlocal declaration from PEP 3104
|
|
|
|
>>> def f(x):
|
|
... def inc():
|
|
... nonlocal x
|
|
... x += 1
|
|
... return x
|
|
... return inc
|
|
...
|
|
>>> inc = f(0)
|
|
>>> inc()
|
|
1
|
|
>>> inc()
|
|
2
|
|
|
|
- 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 (ie, `x`), <>
|
|
|
|
- Removed these Python builtins:
|
|
apply(), callable(), coerce(), execfile(), file(), reduce(), reload()
|
|
|
|
- Removed these Python methods:
|
|
{}.has_key
|
|
|
|
- Removed these opcodes:
|
|
BINARY_DIVIDE, INPLACE_DIVIDE, UNARY_CONVERT
|
|
|
|
- Remove C API support for restricted execution.
|
|
|
|
- zip returns an iterator
|
|
|
|
- Additions:
|
|
set literals, ellipsis literal
|
|
|
|
- Added class decorators per PEP 3129.
|
|
|
|
|
|
Extension Modules
|
|
-----------------
|
|
|
|
- Remove the imageop module. Obsolete long with its unit tests becoming
|
|
useless from the removal of rgbimg and imgfile.
|
|
|
|
- Removed these attributes from Python modules:
|
|
* operator module: div, idiv, __div__, __idiv__, isCallable, sequenceIncludes
|
|
* sys module: exc_clear(), exc_type, exc_value, exc_traceback
|
|
|
|
|
|
Library
|
|
-------
|
|
|
|
- Remove the compiler package. Use of the _ast module and (an eventual)
|
|
AST -> bytecode mechanism.
|
|
|
|
- Removed these modules:
|
|
* audiodev, Bastion, bsddb185, exceptions, linuxaudiodev,
|
|
md5, MimeWriter, mimify, popen2,
|
|
rexec, sets, sha, stringold, strop, sunaudiodev, timing, xmllib.
|
|
|
|
- Moved these modules to Tools/Demos:
|
|
* toaiff
|
|
|
|
- Remove obsolete IRIX modules: al/AL, cd/CD, cddb, cdplayer, cl/CL, DEVICE,
|
|
ERRNO, FILE, fl/FL, flp, fm, GET, gl/GL, GLWS, IN, imgfile, IOCTL, jpeg,
|
|
panel, panelparser, readcd, sgi, sv/SV, torgb, WAIT.
|
|
|
|
- Remove obsolete functions:
|
|
* commands.getstatus(), os.popen*,
|
|
|
|
- Remove functions in the string module that are also string methods;
|
|
Remove string.{letters, lowercase, uppercase}.
|
|
|
|
- Remove support for long obsolete platforms: plat-aix3, plat-irix5.
|
|
|
|
- Remove xmlrpclib.SlowParser. It was based on xmllib.
|
|
|
|
- Patch #1680961: atexit has been reimplemented in C.
|
|
|
|
- Add new codecs for UTF-32, UTF-32-LE and UTF-32-BE.
|
|
|
|
|
|
Build
|
|
-----
|
|
|
|
C API
|
|
-----
|
|
|
|
- Removed these Python slots:
|
|
__coerce__, __div__, __idiv__, __rdiv__
|
|
|
|
- Removed these C APIs:
|
|
PyNumber_Coerce(), PyNumber_CoerceEx(), PyMember_Get, PyMember_Set
|
|
|
|
- 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,
|
|
memberlist
|
|
|
|
|
|
Tests
|
|
-----
|
|
|
|
Documentation
|
|
-------------
|
|
|
|
Mac
|
|
---
|
|
|
|
- The cfmfile was removed.
|
|
|
|
|
|
New platforms
|
|
-------------
|
|
|
|
Tools/Demos
|
|
-----------
|
|
|
|
**(For information about older versions, consult the HISTORY file.)**
|
|
|