| +++++++++++ |
| 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.)** |
| |