blob: a04aee8a8b640ed0836babfc72c5f9e6175de536 [file] [log] [blame]
Georg Brandlb80f5112012-09-30 09:11:58 +02001****************************
2 What's New In Python 3.4
3****************************
4
Georg Brandl3b80d342012-10-28 13:37:54 +01005.. :Author: Someone <email>
6 (uncomment if there is a principal author)
Georg Brandlb80f5112012-09-30 09:11:58 +02007
8.. Rules for maintenance:
9
Nick Coghlan03074fd2012-09-30 18:51:53 +053010 * Anyone can add text to this document, but the maintainer reserves the
11 right to rewrite any additions. In particular, for obscure or esoteric
12 features, the maintainer may reduce any addition to a simple reference to
13 the new documentation rather than explaining the feature inline.
Georg Brandlb80f5112012-09-30 09:11:58 +020014
Nick Coghlan03074fd2012-09-30 18:51:53 +053015 * While the maintainer will periodically go through Misc/NEWS
16 and add changes, it's best not to rely on this. We know from experience
17 that any changes that aren't in the What's New documentation around the
18 time of the original release will remain largely unknown to the community
19 for years, even if they're added later. We also know from experience that
20 other priorities can arise, and the maintainer will run out of time to do
21 updates - in such cases, end users will be much better served by partial
22 notifications that at least give a hint about new features to
23 investigate.
Georg Brandlb80f5112012-09-30 09:11:58 +020024
25 * This is not a complete list of every single change; completeness
Nick Coghlan03074fd2012-09-30 18:51:53 +053026 is the purpose of Misc/NEWS. The What's New should focus on changes that
27 are visible to Python *users* and that *require* a feature release (i.e.
28 most bug fixes should only be recorded in Misc/NEWS)
29
30 * PEPs should not be marked Final until they have an entry in What's New.
31 A placeholder entry that is just a section header and a link to the PEP
32 (e.g ":pep:`397` has been implemented") is acceptable. If a PEP has been
33 implemented and noted in What's New, don't forget to mark it as Final!
Georg Brandlb80f5112012-09-30 09:11:58 +020034
35 * If you want to draw your new text to the attention of the
36 maintainer, add 'XXX' to the beginning of the paragraph or
37 section.
38
Nick Coghlan03074fd2012-09-30 18:51:53 +053039 * It's OK to add just a very brief note about a change. For
40 example: "The :ref:`~socket.transmogrify()` function was added to the
41 :mod:`socket` module." The maintainer will research the change and
42 write the necessary text (if appropriate). The advantage of doing this
43 is that even if no more descriptive text is ever added, readers will at
44 least have a notification that the new feature exists and a link to the
45 relevant documentation.
Georg Brandlb80f5112012-09-30 09:11:58 +020046
47 * You can comment out your additions if you like, but it's not
48 necessary (especially when a final release is some months away).
49
50 * Credit the author of a patch or bugfix. Just the name is
51 sufficient; the e-mail address isn't necessary.
52
53 * It's helpful to add the bug/patch number as a comment:
54
Nick Coghlan03074fd2012-09-30 18:51:53 +053055 The :ref:`~socket.transmogrify()` function was added to the
56 :mod:`socket` module. (Contributed by P.Y. Developer in :issue:`12345`.)
Georg Brandlb80f5112012-09-30 09:11:58 +020057
58 This saves the maintainer the effort of going through the Mercurial log
59 when researching a change.
60
Nick Coghlan03074fd2012-09-30 18:51:53 +053061 * Cross referencing tip: :ref:`mod.attr` will display as ``mod.attr``,
62 while :ref:`~mod.attr` will display as ``attr``.
63
Georg Brandlb80f5112012-09-30 09:11:58 +020064This article explains the new features in Python 3.4, compared to 3.3.
65
Nick Coghlan03074fd2012-09-30 18:51:53 +053066.. Python 3.4 was released on TBD.
Georg Brandlb80f5112012-09-30 09:11:58 +020067
Ezio Melotti25bbe5e2012-11-17 19:30:48 +020068For full details, see the
69`changelog <http://docs.python.org/3.4/whatsnew/changelog.html>`_.
Georg Brandlb80f5112012-09-30 09:11:58 +020070
71.. note:: Prerelease users should be aware that this document is currently in
72 draft form. It will be updated substantially as Python 3.4 moves towards
73 release, so it's worth checking back even after reading earlier versions.
74
75
76.. seealso::
77
Nick Coghlan367df122013-10-27 01:57:34 +100078 :pep:`429` - Python 3.4 Release Schedule
Georg Brandlb80f5112012-09-30 09:11:58 +020079
80
81Summary -- Release highlights
82=============================
83
Kristjan Valur Jonssona1e82442013-03-26 13:56:14 +000084.. This section singles out the most important changes in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020085 Brevity is key.
86
87New syntax features:
88
Nick Coghlan0acceb72013-10-20 13:22:21 +100089* No new syntax features are planned for Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020090
91New library modules:
92
Nick Coghlan0acceb72013-10-20 13:22:21 +100093* :mod:`asyncio`: New provisonal API for asynchronous IO (:pep:`3156`).
94* :mod:`enum`: Support for enumeration types (:pep:`435`).
Nick Coghland0cf0632013-11-11 22:11:55 +100095* :mod:`ensurepip`: Bootstrapping the pip installer (:pep:`453`).
Victor Stinner4aea4a02013-09-04 20:30:34 +020096* :mod:`selectors`: High-level and efficient I/O multiplexing, built upon the
97 :mod:`select` module primitives.
Nick Coghlan0acceb72013-10-20 13:22:21 +100098* :mod:`statistics`: A basic numerically stable statistics library (:pep:`450`).
Georg Brandlb80f5112012-09-30 09:11:58 +020099
Nick Coghlan367df122013-10-27 01:57:34 +1000100New expected features for Python implementations:
Georg Brandlb80f5112012-09-30 09:11:58 +0200101
Victor Stinnerdaf45552013-08-28 00:53:59 +0200102* :ref:`PEP 446: Make newly created file descriptors non-inheritable <pep-446>`.
Nick Coghlan367df122013-10-27 01:57:34 +1000103* command line option for :ref:`isolated mode <using-on-misc-options>`,
104 (:issue:`16499`).
Nick Coghlan8b097b42013-11-13 23:49:21 +1000105* improvements to handling of non-Unicode codecs
Georg Brandlb80f5112012-09-30 09:11:58 +0200106
107Significantly Improved Library Modules:
108
Nick Coghlan367df122013-10-27 01:57:34 +1000109* Single-dispatch generic functions in :mod:`functoools` (:pep:`443`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200110* SHA-3 (Keccak) support for :mod:`hashlib`.
111* TLSv1.1 and TLSv1.2 support for :mod:`ssl`.
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100112* :mod:`multiprocessing` now has option to avoid using :func:`os.fork`
113 on Unix (:issue:`8713`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200114
Nick Coghlan367df122013-10-27 01:57:34 +1000115CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200116
Nick Coghlan367df122013-10-27 01:57:34 +1000117* :ref:`PEP 442: Safe object finalization <pep-442>`
118* :ref:`PEP 445: Configurable memory allocators <pep-445>`
119* Improve finalization of Python modules to avoid setting their globals
120 to None, in most cases (:issue:`18214`).
121* A more efficient :mod:`marshal` format (:issue:`16475`).
122* "Argument Clinic", an initial step towards providing improved introspection
123 support for builtin and standard library extension types implemented in C
124 (:pep:`436`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200125
126Please read on for a comprehensive list of user-facing changes.
127
Nick Coghland0cf0632013-11-11 22:11:55 +1000128
129PEP 453: Explicit bootstrapping of pip in Python installations
130==============================================================
131
132The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
133cross-platform mechanism to boostrap the pip installer into Python
134installations and virtual environments.
135
136.. note::
137
138 Only the first phase of PEP 453 has been implemented at this point.
139 This section will be fleshed out with additional details once those
140 other changes are implemented.
141
142 Refer to :issue:`19347` for the progress on additional steps:
143
144 * ``make install`` and ``make altinstall`` integration
145 * Windows installer integration
146 * Mac OS X installer integration
147 * :mod:`venv` module and :command:`pyvenv` integration
148
149.. seealso::
150
151 :pep:`453` - Explicit bootstrapping of pip in Python installations
152 PEP written by Donald Stufft and Nick Coghlan, implemented by
153 Donald Stufft, Nick Coghlan (and ...).
154
155
Victor Stinnerdaf45552013-08-28 00:53:59 +0200156.. _pep-446:
157
158PEP 446: Make newly created file descriptors non-inheritable
159============================================================
160
Nick Coghlan367df122013-10-27 01:57:34 +1000161:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200162<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200163
164* :func:`os.get_inheritable`, :func:`os.set_inheritable`
165* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
166* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
167
Antoine Pitrou796564c2013-07-30 19:59:21 +0200168.. seealso::
169
Nick Coghlan367df122013-10-27 01:57:34 +1000170 :pep:`446` - Make newly created file descriptors non-inheritable
171 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200172
Georg Brandlb80f5112012-09-30 09:11:58 +0200173
Nick Coghlan8b097b42013-11-13 23:49:21 +1000174Improvements to handling of non-Unicode codecs
175==============================================
176
177Since it was first introduced, the :mod:`codecs` module has always been
178intended to operate as a type-neutral dynamic encoding and decoding
179system. However, its close coupling with the Python text model, especially
180the type restricted convenience methods on the builtin :class:`str`,
181:class:`bytes` and :class:`bytearray` types, has historically obscured that
182fact.
183
184As a key step in clarifying the situation, the :meth:`codecs.encode` and
185:meth:`codecs.decode` convenience functions are now properly documented in
186Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
187module and have been covered by the regression test suite since Python 2.4,
188but were previously only discoverable through runtime introspection.
189
190Unlike the convenience methods on :class:`str`, :class:`bytes` and
191:class:`bytearray`, these convenience functions support arbitrary codecs
192in both Python 2 and Python 3, rather than being limited to Unicode text
193encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
194(in Python 2).
195
196In Python 3.4, the errors raised by the convenience methods when a codec
197produces the incorrect output type have also been updated to direct users
198towards these general purpose convenience functions::
199
200 >>> import codecs
201
202 >>> codecs.encode(b"hello", "bz2_codec").decode("bz2_codec")
203 Traceback (most recent call last):
204 File "<stdin>", line 1, in <module>
205 TypeError: 'bz2_codec' decoder returned 'bytes' instead of 'str'; use codecs.decode() to decode to arbitrary types
206
207 >>> "hello".encode("rot_13")
208 Traceback (most recent call last):
209 File "<stdin>", line 1, in <module>
210 TypeError: 'rot_13' encoder returned 'str' instead of 'bytes'; use codecs.encode() to encode to arbitrary types
211
212In a related change, whenever it is feasible without breaking backwards
213compatibility, exceptions raised during encoding and decoding operations
214will be wrapped in a chained exception of the same type that mentions the
215name of the codec responsible for producing the error::
216
217 >>> b"hello".decode("uu_codec")
218 ValueError: Missing "begin" line in input data
219
220 The above exception was the direct cause of the following exception:
221
222 Traceback (most recent call last):
223 File "<stdin>", line 1, in <module>
224 ValueError: decoding with 'uu_codec' codec failed (ValueError: Missing "begin" line in input data)
225
226 >>> "hello".encode("bz2_codec")
227 TypeError: 'str' does not support the buffer interface
228
229 The above exception was the direct cause of the following exception:
230
231 Traceback (most recent call last):
232 File "<stdin>", line 1, in <module>
233 TypeError: encoding with 'bz2_codec' codec failed (TypeError: 'str' does not support the buffer interface)
234
235(Contributed by Nick Coghlan in :issue:`17827` and :issue:`17828`)
236
237
Georg Brandlb80f5112012-09-30 09:11:58 +0200238Other Language Changes
239======================
240
241Some smaller changes made to the core Python language are:
242
Ezio Melotti34808e22013-10-12 16:36:13 +0300243* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200244
R David Murray9a2f1392013-06-28 13:31:19 -0400245* :func:`min` and :func:`max` now accept a *default* argument that can be used
246 to specify the value they return if the iterable they are evaluating has no
247 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200248
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200249* Module objects are now :mod:`weakref`'able.
250
Nick Coghlan0acceb72013-10-20 13:22:21 +1000251* Module ``__file__`` attributes (and related values) should now always
252 contain absolute paths by default, with the sole exception of
253 ``__main__.__file__`` when a script has been executed directly using
254 a relative path (Contributed by Brett Cannon in :issue:`18416`).
255
Georg Brandlb80f5112012-09-30 09:11:58 +0200256
257New Modules
258===========
259
Nick Coghlan0acceb72013-10-20 13:22:21 +1000260
261asyncio
262-------
263
264The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
265pluggable event loop model for Python, providing solid asynchronous IO
266support in the standard library, and making it easier for other event loop
267implementations to interoperate with the standard library and each other.
268
269For Python 3.4, this module is considered a :term:`provisional API`.
270
Nick Coghlan367df122013-10-27 01:57:34 +1000271.. seealso::
272
273 :pep:`3156` - Asynchronous IO Support Rebooted: the "asyncio" Module
274 PEP written and implementation led by Guido van Rossum.
275
Nick Coghlan0acceb72013-10-20 13:22:21 +1000276enum
277----
278
Nick Coghlan367df122013-10-27 01:57:34 +1000279The new :mod:`enum` module (defined in :pep:`435`) provides a standard
280implementation of enumeration types, allowing other modules (such as
281:mod:`socket`) to provide more informative error messages and better
282debugging support by replacing opaque integer constants with backwards
283compatible enumeration values.
284
285.. seealso::
286
287 :pep:`435` - Adding an Enum type to the Python standard library
288 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
289 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000290
291
Charles-François Natali243d8d82013-09-04 19:02:49 +0200292selectors
293---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200294
Nick Coghlan0acceb72013-10-20 13:22:21 +1000295The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
296allows high-level and efficient I/O multiplexing, built upon the
297:mod:`select` module primitives.
298
299
300statistics
301----------
302
303The new :mod:`statistics` module (defined in :pep:`450`) offers some core
304statistics functionality directly in the standard library. This module
305supports calculation of the mean, median, mode, variance and standard
306deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200307
Nick Coghlan367df122013-10-27 01:57:34 +1000308.. seealso::
309
310 :pep:`450` - Adding A Statistics Module To The Standard Library
311 PEP written and implemented by Steven D'Aprano
312
Georg Brandlb80f5112012-09-30 09:11:58 +0200313
314Improved Modules
315================
316
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200317aifc
318----
319
320The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
321plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
322
323
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300324audioop
325-------
326
327Added support for 24-bit samples (:issue:`12866`).
328
329
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200330colorsys
331--------
332
333The number of digits in the coefficients for the RGB --- YIQ conversions have
334been expanded so that they match the FCC NTSC versions. The change in
335results should be less than 1% and may better match results found elsewhere.
336
R David Murray8e37d5d2013-04-13 14:49:48 -0400337
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000338contextlib
339----------
340
Nick Coghlan240f86d2013-10-17 23:40:57 +1000341The new :class:`contextlib.suppress` context manager helps to clarify the
342intent of code that deliberately suppresses exceptions from a single
343statement. (Contributed by Raymond Hettinger in :issue:`15806` and
344Zero Piraeus in :issue:`19266`)
345
Victor Stinner6633c392013-10-21 13:27:11 +0200346The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000347for utility scripts to handle inflexible APIs that don't provide any
348options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000349other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
350this context manager is also useful for checking expected output from
351command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
352
353The :mod:`contextlib` documentation has also been updated to include a
354:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
355differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000356
357
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000358dis
359---
360
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300361The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
362that provides details of individual bytecode operations and a
363:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000364given piece of Python code. The various display tools in the :mod:`dis`
365module have been updated to be based on these new components.
366
367The new :class:`dis.Bytecode` class provides an object-oriented API for
368inspecting bytecode, both in human-readable form and for iterating over
369instructions.
370
371(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`)
372
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200373
R David Murray5a9d7062012-11-21 15:09:21 -0500374doctest
375-------
376
R David Murray5707d502013-06-23 14:24:13 -0400377Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
378failure is detected. (Contributed by R. David Murray and Daniel Urban in
379:issue:`16522`.)
380
381Updated the doctest command line interface to use :mod:`argparse`, and added
382``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
383be specified on the command line, and ``-f`` is a shorthand for ``-o
384FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
385CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200386
R David Murray8e37d5d2013-04-13 14:49:48 -0400387
R David Murraybb17d2b2013-08-09 16:15:28 -0400388email
389-----
390
391:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
392override the default policy of the message when generating a string
393representation of it. This means that ``as_string`` can now be used in more
394circumstances, instead of having to create and use a :mod:`~email.generator` in
395order to pass formatting parameters to its ``flatten`` method.
396
397New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
398representation of the message in a fashion similar to how ``as_string``
399produces a string representation. It does not accept the *maxheaderlen*
400argument, but does accept the *unixfrom* and *policy* arguments. The
401:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
402calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
403result: a bytes object containing the fully formatted message.
404
405(Contributed by R. David Murray in :issue:`18600`.)
406
R David Murray3da240f2013-10-16 22:48:40 -0400407A pair of new subclasses of :class:`~email.message.Message` have been added,
408along with a new sub-module, :mod:`~email.contentmanager`. All documentation
409is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000410:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400411number of new methods that make extracting content from and inserting content
412into email messages much easier. See the :mod:`~email.contentmanager`
413documentation for details.
414
415These API additions complete the bulk of the work that was planned as part of
416the email6 project. The currently provisional API is scheduled to become final
417in Python 3.5 (possibly with a few minor additions in the area of error
418handling).
419
420(Contributed by R. David Murray in :issue:`18891`.)
421
R David Murraybb17d2b2013-08-09 16:15:28 -0400422
Victor Stinner854ffcb2013-06-21 00:36:30 +0200423functools
424---------
425
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000426The new :func:`~functools.partialmethod` descriptor bring partial argument
427application to descriptors, just as :func:`~functools.partial` provides
428for normal callables. The new descriptor also makes it easier to get
429arbitrary callables (including :func:`~functools.partial` instances)
430to behave like normal instance methods when included in a class definition.
431
432(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
433
434The new :func:`~functools.singledispatch` decorator brings support for
435single-dispatch generic functions to the Python standard library. Where
436object oriented programming focuses on grouping multiple operations on a
437common set of data into a class, a generic function focuses on grouping
438multiple implementations of an operation that allows it to work with
439*different* kinds of data.
440
441.. seealso::
442
443 :pep:`443` - Single-dispatch generic functions
444 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200445
Nick Coghlane8c45d62013-07-28 20:00:01 +1000446
Christian Heimese92ef132013-10-13 00:52:43 +0200447hashlib
448-------
449
450New :func:`hashlib.pbkdf2_hmac` function.
451
452(Contributed by Christian Heimes in :issue:`18582`)
453
454
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200455inspect
456-------
457
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000458
Nick Coghlan367df122013-10-27 01:57:34 +1000459The inspect module now offers a basic :ref:`command line interface
460<inspect-module-cli>` to quickly display source code and other
461information for modules, classes and functions. (Contributed by Claudiu Popa
462and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000463
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200464:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
465created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000466``__wrapped__`` attribute on a wrapper function). (Contributed by
467Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
468
469As part of the implementation of the new :mod:`enum` module, the
470:mod:`inspect` module now has substantially better support for custom
471``__dir__`` methods and dynamic class attributes provided through
472metaclasses (Contributed by Ethan Furman in :issue:`18929` and
473:issue:`19030`)
474
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200475
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200476mmap
477----
478
479mmap objects can now be weakref'ed.
480
481(Contributed by Valerie Lambert in :issue:`4885`.)
482
483
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100484multiprocessing
485---------------
486
487On Unix two new *start methods* have been added for starting processes
488using :mod:`multiprocessing`. These make the mixing of processes with
489threads more robust. See :issue:`8713`.
490
491Also, except when using the old *fork* start method, child processes
492will no longer inherit unneeded handles/file descriptors from their parents.
493
494
Victor Stinnerdaf45552013-08-28 00:53:59 +0200495os
496--
497
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200498New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200499descriptors or a Windows handle:
500
501* :func:`os.get_inheritable`, :func:`os.set_inheritable`
502* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
503
504
R David Murray78d692f2013-10-10 17:23:26 -0400505pdb
506---
507
508The ``print`` command has been removed from :mod:`pdb`, restoring access to the
509``print`` function.
510
511Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
512entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
513mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
514prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
515command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
516``print`` function, making it inaccessible at the ``pdb`` prompt.
517
518(Contributed by Connor Osborn in :issue:`18764`.)
519
520
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200521poplib
522------
523
524New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
525an encrypted POP3 session.
526
527New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
528POP3 server.
529
530(Contributed by Lorenzo Catucci in :issue:`4473`.)
531
532
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300533pprint
534------
535
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200536The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300537sequences (:issue:`19132`).
538
539
Nick Coghlan367df122013-10-27 01:57:34 +1000540pydoc
541-----
542
543While significant changes have not been made to :mod:`pydoc` directly,
544its handling of custom ``__dir__`` methods and various descriptor
545behaviours has been improved substantially by the underlying changes in
546the :mod:`inspect` module.
547
548
Christian Heimesb7bd5df2013-10-22 11:21:54 +0200549resource
550--------
551
552New :func:`resource.prlimit` function and Linux specific constants.
553(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
554
R David Murray8e37d5d2013-04-13 14:49:48 -0400555smtplib
556-------
557
R David Murray8a345962013-04-14 06:46:35 -0400558:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400559both socket level errors and SMTP protocol level errors to be caught in one
560try/except statement by code that only cares whether or not an error occurred.
561(:issue:`2118`).
562
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200563
Victor Stinnerdaf45552013-08-28 00:53:59 +0200564socket
565------
566
Georg Brandl5642ff92013-09-15 10:37:57 +0200567Socket objects have new methods to get or set their :ref:`inheritable flag
568<fd_inheritance>`:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200569
570* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
571
Eli Bendersky34567ec2013-08-31 15:18:48 -0700572The ``socket.AF_*`` and ``socket.SOCK_*`` constants are enumeration values,
573using the new :mod:`enum` module. This allows descriptive reporting during
574debugging, instead of seeing integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200575
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200576ssl
577---
578
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200579TLSv1.1 and TLSv1.2 support.
Christian Heimes70833a82013-06-22 19:34:17 +0200580
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200581(Contributed by Michele Orrù and Antoine Pitrou in :issue:`16692`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200582
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200583* New diagnostic functions :func:`~ssl.get_default_verify_paths`,
584 :meth:`~ssl.SSLContext.cert_store_stats` and
585 :meth:`~ssl.SSLContext.get_ca_certs`
586
587* Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
588 cert store.
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200589
590(Contributed by Christian Heimes in :issue:`18143`, :issue:`18147` and
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200591 :issue:`17134`.)
592
593Support for server-side SNI using the new
594:meth:`ssl.SSLContext.set_servername_callback` method.
595
596(Contributed by Daniel Black in :issue:`8109`.)
597
598
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200599stat
600----
601
602The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
603implementation is required as most of the values aren't standardized and
604platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
605
606The module supports new file types: door, event port and whiteout.
607
608
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200609struct
610------
611
612Streaming struct unpacking using :func:`struct.iter_unpack`.
613
614(Contributed by Antoine Pitrou in :issue:`17804`.)
615
616
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300617sunau
618-----
619
620The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
621plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
622
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300623:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
624
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300625
Andrew Kuchling173a1572013-09-15 18:15:56 -0400626traceback
627---------
628
629A new :func:`traceback.clear_frames` function takes a traceback object
630and clears the local variables in all of the frames it references,
631reducing the amount of memory consumed (:issue:`1565525`).
632
633
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200634urllib
635------
636
637Add support.for ``data:`` URLs in :mod:`urllib.request`.
638
639(Contributed by Mathias Panzenböck in :issue:`16423`.)
640
641
642unittest
643--------
644
645Support for easy dynamically-generated subtests using the
646:meth:`~unittest.TestCase.subTest` context manager.
647
648(Contributed by Antoine Pitrou in :issue:`16997`.)
649
R David Murray8e37d5d2013-04-13 14:49:48 -0400650
R David Murray671cd322013-04-10 12:31:43 -0400651wave
652----
653
654The :meth:`~wave.getparams` method now returns a namedtuple rather than a
655plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
656
R David Murrayc91d5ee2013-07-31 13:46:08 -0400657:meth:`wave.open` now supports the context manager protocol. (Contributed
658by Claudiu Popa in :issue:`17616`.)
659
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200660
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200661weakref
662-------
663
664New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000665methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200666
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000667New :class:`~weakref.finalize` class makes it possible to register a callback
668to be invoked when an object is garbage collected, without needing to
669carefully manage the lifecycle of the weak reference itself. (Contributed by
670Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200671
672
673xml.etree
674---------
675
676Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -0700677:class:`~xml.etree.ElementTree.XMLPullParser`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200678
Eli Benderskyb5869342013-08-30 05:51:20 -0700679(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200680
Christian Tismer59202e52013-10-21 03:59:23 +0200681
682zipfile.PyZipfile
683-----------------
684
685Add a filter function to ignore some packages (tests for instance),
686:meth:`~zipfile.PyZipFile.writepy`.
687
688(Contributed by Christian Tismer in :issue:`19274`.)
689
690
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200691Other improvements
692==================
693
694Tab-completion is now enabled by default in the interactive interpreter.
695
696(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
697
Eli Bendersky96d848a2013-09-06 06:55:58 -0700698Python invocation changes
699=========================
700
701Invoking the Python interpreter with ``--version`` now outputs the version to
702standard output instead of standard error (:issue:`18338`). Similar changes
703were made to :mod:`argparse` (:issue:`18920`) and other modules that have
704script-like invocation capabilities (:issue:`18922`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200705
Georg Brandlb80f5112012-09-30 09:11:58 +0200706Optimizations
707=============
708
709Major performance enhancements have been added:
710
Victor Stinnere64322e2012-10-30 23:12:47 +0100711* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200712
Raymond Hettingerc301b552013-08-19 09:12:20 -0700713* The cost of hash collisions for sets is now reduced. Each hash table
Raymond Hettinger8408dc52013-09-15 14:57:15 -0700714 probe now checks a series of consecutive, adjacent key/hash pairs before
715 continuing to make random probes through the hash table. This exploits
716 cache locality to make collision resolution less expensive.
717
718 The collision resolution scheme can be described as a hybrid of linear
719 probing and open addressing. The number of additional linear probes
720 defaults to nine. This can be changed at compile-time by defining
721 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
722 linear probing entirely.
Raymond Hettingerc301b552013-08-19 09:12:20 -0700723
Christian Heimes086b1af2013-10-22 11:49:34 +0200724 (Contributed by Raymond Hettinger in :issue:`18771`.)
Raymond Hettingerc301b552013-08-19 09:12:20 -0700725
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200726* The interpreter starts about 30% faster. A couple of measures lead to the
Eric V. Smith57841dd2013-10-13 00:36:08 -0400727 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200728 :mod:`collections` and :mod:`locale` modules and their dependencies are no
729 longer imported by default. The marshal module has been improved to load
730 compiled Python code faster.
731
732 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
733 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
734 :issue:`9548`)
735
736
Nick Coghlan367df122013-10-27 01:57:34 +1000737CPython Implementation Changes
738==============================
739
740
741.. _pep-445:
742
743PEP 445: Customization of CPython memory allocators
744---------------------------------------------------
745
746:pep:`445` adds new C level interfaces to customize memory allocation in
747the CPython interpreter.
748
749.. seealso::
750
751 :pep:`445` - Add new APIs to customize Python memory allocators
752 PEP written and implemented by Victor Stinner.
753
754
755.. _pep-442:
756
757PEP 442: Safe object finalization
758---------------------------------
759
760:pep:`442` removes the current limitations and quirks of object finalization
761in CPython. With it, objects with :meth:`__del__` methods, as well as
762generators with :keyword:`finally` clauses, can be finalized when they are
763part of a reference cycle.
764
765As part of this change, module globals are no longer forcibly set to
766:const:`None` during interpreter shutdown in most cases, instead relying
767on the normal operation of the cyclic garbage collector.
768
769.. seealso::
770
771 :pep:`442` - Safe object finalization
772 PEP written and implemented by Antoine Pitrou.
773
774
775Other build and C API changes
776-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200777
778Changes to Python's build process and to the C API include:
779
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000780* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
781 allows applications embedding the CPython interpreter to reliably force
782 a particular encoding and error handler for the standard streams
783 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200784
Nick Coghlan0acceb72013-10-20 13:22:21 +1000785* Most Python C APIs that don't mutate string arguments are now correctly
786 marked as accepting ``const char *`` rather than ``char *`` (Contributed
787 by Serhiy Storchaka in :issue:`1772673`).
788
789* "Argument Clinic" (:pep:`436`) is now part of the CPython build process
790 and can be used to simplify the process of defining and maintaining
791 accurate signatures for builtins and standard library extension modules
792 implemented in C.
793
Nick Coghlan367df122013-10-27 01:57:34 +1000794 .. note::
795 The Argument Clinic PEP is not fully up to date with the state of the
796 implementation. This has been deemed acceptable by the release manager
797 and core development team in this case, as Argument Clinic will not
798 be made available as a public API for third party use in Python 3.4.
799
Georg Brandlb80f5112012-09-30 09:11:58 +0200800
801Deprecated
802==========
803
804Unsupported Operating Systems
805-----------------------------
806
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200807* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200808* Windows 2000
Georg Brandlb80f5112012-09-30 09:11:58 +0200809
810
811Deprecated Python modules, functions and methods
812------------------------------------------------
813
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -0400814* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -0400815 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
816 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +0200817
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400818* :func:`importlib.util.module_for_loader` is pending deprecation. Using
819 :func:`importlib.util.module_to_load` and
820 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
821 to more easily customize module loading.
822
Brett Cannone4f41de2013-06-16 13:13:40 -0400823* The :mod:`imp` module is pending deprecation. To keep compatibility with
824 Python 2/3 code bases, the module's removal is currently not scheduled.
825
Brett Cannon1448ecf2013-10-04 11:38:59 -0400826* The :mod:`formatter` module is pending deprecation and is slated for removal
827 in Python 3.6.
828
Georg Brandlb80f5112012-09-30 09:11:58 +0200829
830Deprecated functions and types of the C API
831-------------------------------------------
832
Victor Stinner3dd263f2013-10-23 18:54:43 +0200833* The ``PyThreadState.tick_counter`` field has been removed: its value was
834 meaningless since Python 3.2 ("new GIL").
Georg Brandlb80f5112012-09-30 09:11:58 +0200835
836
837Deprecated features
838-------------------
839
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +0200840* The site module adding a "site-python" directory to sys.path, if it
841 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200842
843
Benjamin Peterson88f3b232012-10-04 12:45:10 -0400844Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +0200845=====================
846
847This section lists previously described changes and other bugfixes
848that may require changes to your code.
849
Brett Cannon777622b2013-04-09 17:03:10 -0400850* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
851 exception or return a default value instead of raising
852 :exc:`NotImplementedError` blindly. This will only affect code calling
853 :func:`super` and falling through all the way to the ABCs. For compatibility,
854 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -0400855
856* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
857 attributes to ``None`` by default. To determine if these attributes were set
858 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -0400859 ``getattr(module, '__loader__', None) is not None``.
860
861* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
862 ``__package__`` unconditionally to properly support reloading. If this is not
863 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -0400864 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -0400865
866* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
867 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
868
Brett Cannon1448ecf2013-10-04 11:38:59 -0400869* Frozen packages no longer set ``__path__`` to a list containing the package
870 name but an empty list instead. Determing if a module is a package should be
871 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -0400872
873* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
Brett Cannon82da8882013-07-04 17:48:16 -0400874 argument is not set. Previously only ``NULL`` was returned with no exception
875 set.
Brett Cannon33915eb2013-06-14 18:33:00 -0400876
877* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
878 it would write to is a symlink or a non-regular file. This is to act as a
879 warning that import will overwrite those files with a regular file regardless
880 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -0400881
882* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
883 :exc:`ImportError` when the source code being loaded triggers a
884 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
885 meant to be raised only when source code cannot be found but it should, it was
886 felt to be over-reaching/overloading of that meaning when the source code is
887 found but improperly structured. If you were catching ImportError before and
888 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +0200889 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +1000890
891* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
Nick Coghlan367df122013-10-27 01:57:34 +1000892 set the ``__wrapped__`` attribute to the function being wrapper, even if
893 that function also had its ``__wrapped__`` attribute set. This means
894 ``__wrapped__`` attributes now correctly link a stack of decorated
895 functions rather than every ``__wrapped__`` attribute in the chain
896 referring to the innermost function. Introspection libraries that
897 assumed the previous behaviour was intentional can use
898 :func:`inspect.unwrap` to access the first function in the chain that has
899 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +0200900
Georg Brandlc2228c82013-10-12 13:24:55 +0200901* (C API) The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
Victor Stinner2fe9bac2013-10-10 16:18:20 +0200902 now be a string allocated by :c:func:`PyMem_RawMalloc` or
903 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
904 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
905
Georg Brandl0f5bff22013-10-19 17:46:38 +0200906* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -0400907 directory to objects in :data:`sys.path_hooks` for the empty string. This
908 results in :data:`sys.path_importer_cache` never containing ``''``, thus
909 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
910 will not find all keys. A module's ``__file__`` when imported in the current
911 working directory will also now have an absolute path, including when using
912 ``-m`` with the interpreter (this does not influence when the path to a file
913 is specified on the command-line).