blob: f72f5449ef05cffca16b9e57a9ccb1844ad66786 [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
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200256* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
257 encoding and decoding unless the ``surrogatepass`` error handler is used,
258 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
259 and the UTF-16 encoder that produces them while encoding non-BMP characters.
260 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
261 :issue:`12892`.
262
Georg Brandlb80f5112012-09-30 09:11:58 +0200263
264New Modules
265===========
266
Nick Coghlan0acceb72013-10-20 13:22:21 +1000267
268asyncio
269-------
270
271The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
272pluggable event loop model for Python, providing solid asynchronous IO
273support in the standard library, and making it easier for other event loop
274implementations to interoperate with the standard library and each other.
275
276For Python 3.4, this module is considered a :term:`provisional API`.
277
Nick Coghlan367df122013-10-27 01:57:34 +1000278.. seealso::
279
280 :pep:`3156` - Asynchronous IO Support Rebooted: the "asyncio" Module
281 PEP written and implementation led by Guido van Rossum.
282
Nick Coghlan0acceb72013-10-20 13:22:21 +1000283enum
284----
285
Nick Coghlan367df122013-10-27 01:57:34 +1000286The new :mod:`enum` module (defined in :pep:`435`) provides a standard
287implementation of enumeration types, allowing other modules (such as
288:mod:`socket`) to provide more informative error messages and better
289debugging support by replacing opaque integer constants with backwards
290compatible enumeration values.
291
292.. seealso::
293
294 :pep:`435` - Adding an Enum type to the Python standard library
295 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
296 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000297
298
Charles-François Natali243d8d82013-09-04 19:02:49 +0200299selectors
300---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200301
Nick Coghlan0acceb72013-10-20 13:22:21 +1000302The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
303allows high-level and efficient I/O multiplexing, built upon the
304:mod:`select` module primitives.
305
306
307statistics
308----------
309
310The new :mod:`statistics` module (defined in :pep:`450`) offers some core
311statistics functionality directly in the standard library. This module
312supports calculation of the mean, median, mode, variance and standard
313deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200314
Nick Coghlan367df122013-10-27 01:57:34 +1000315.. seealso::
316
317 :pep:`450` - Adding A Statistics Module To The Standard Library
318 PEP written and implemented by Steven D'Aprano
319
Georg Brandlb80f5112012-09-30 09:11:58 +0200320
321Improved Modules
322================
323
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200324aifc
325----
326
327The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
328plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
329
330
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300331audioop
332-------
333
334Added support for 24-bit samples (:issue:`12866`).
335
336
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000337base64
338------
339
340The encoding and decoding functions in :mod:`base64` now accept any
341:term:`bytes-like object` in cases where it previously required a
342:class:`bytes` or :class:`bytearray` instance (:issue`17839`)
343
344
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200345colorsys
346--------
347
348The number of digits in the coefficients for the RGB --- YIQ conversions have
349been expanded so that they match the FCC NTSC versions. The change in
350results should be less than 1% and may better match results found elsewhere.
351
R David Murray8e37d5d2013-04-13 14:49:48 -0400352
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000353contextlib
354----------
355
Nick Coghlan240f86d2013-10-17 23:40:57 +1000356The new :class:`contextlib.suppress` context manager helps to clarify the
357intent of code that deliberately suppresses exceptions from a single
358statement. (Contributed by Raymond Hettinger in :issue:`15806` and
359Zero Piraeus in :issue:`19266`)
360
Victor Stinner6633c392013-10-21 13:27:11 +0200361The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000362for utility scripts to handle inflexible APIs that don't provide any
363options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000364other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
365this context manager is also useful for checking expected output from
366command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
367
368The :mod:`contextlib` documentation has also been updated to include a
369:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
370differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000371
372
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000373dis
374---
375
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300376The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
377that provides details of individual bytecode operations and a
378:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000379given piece of Python code. The various display tools in the :mod:`dis`
380module have been updated to be based on these new components.
381
382The new :class:`dis.Bytecode` class provides an object-oriented API for
383inspecting bytecode, both in human-readable form and for iterating over
384instructions.
385
386(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`)
387
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200388
R David Murray5a9d7062012-11-21 15:09:21 -0500389doctest
390-------
391
R David Murray5707d502013-06-23 14:24:13 -0400392Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
393failure is detected. (Contributed by R. David Murray and Daniel Urban in
394:issue:`16522`.)
395
396Updated the doctest command line interface to use :mod:`argparse`, and added
397``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
398be specified on the command line, and ``-f`` is a shorthand for ``-o
399FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
400CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200401
R David Murray8e37d5d2013-04-13 14:49:48 -0400402
R David Murraybb17d2b2013-08-09 16:15:28 -0400403email
404-----
405
406:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
407override the default policy of the message when generating a string
408representation of it. This means that ``as_string`` can now be used in more
409circumstances, instead of having to create and use a :mod:`~email.generator` in
410order to pass formatting parameters to its ``flatten`` method.
411
412New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
413representation of the message in a fashion similar to how ``as_string``
414produces a string representation. It does not accept the *maxheaderlen*
415argument, but does accept the *unixfrom* and *policy* arguments. The
416:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
417calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
418result: a bytes object containing the fully formatted message.
419
420(Contributed by R. David Murray in :issue:`18600`.)
421
R David Murray3da240f2013-10-16 22:48:40 -0400422A pair of new subclasses of :class:`~email.message.Message` have been added,
423along with a new sub-module, :mod:`~email.contentmanager`. All documentation
424is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000425:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400426number of new methods that make extracting content from and inserting content
427into email messages much easier. See the :mod:`~email.contentmanager`
428documentation for details.
429
430These API additions complete the bulk of the work that was planned as part of
431the email6 project. The currently provisional API is scheduled to become final
432in Python 3.5 (possibly with a few minor additions in the area of error
433handling).
434
435(Contributed by R. David Murray in :issue:`18891`.)
436
R David Murraybb17d2b2013-08-09 16:15:28 -0400437
Victor Stinner854ffcb2013-06-21 00:36:30 +0200438functools
439---------
440
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000441The new :func:`~functools.partialmethod` descriptor bring partial argument
442application to descriptors, just as :func:`~functools.partial` provides
443for normal callables. The new descriptor also makes it easier to get
444arbitrary callables (including :func:`~functools.partial` instances)
445to behave like normal instance methods when included in a class definition.
446
447(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
448
449The new :func:`~functools.singledispatch` decorator brings support for
450single-dispatch generic functions to the Python standard library. Where
451object oriented programming focuses on grouping multiple operations on a
452common set of data into a class, a generic function focuses on grouping
453multiple implementations of an operation that allows it to work with
454*different* kinds of data.
455
456.. seealso::
457
458 :pep:`443` - Single-dispatch generic functions
459 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200460
Nick Coghlane8c45d62013-07-28 20:00:01 +1000461
Christian Heimese92ef132013-10-13 00:52:43 +0200462hashlib
463-------
464
465New :func:`hashlib.pbkdf2_hmac` function.
466
467(Contributed by Christian Heimes in :issue:`18582`)
468
469
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200470inspect
471-------
472
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000473
Nick Coghlan367df122013-10-27 01:57:34 +1000474The inspect module now offers a basic :ref:`command line interface
475<inspect-module-cli>` to quickly display source code and other
476information for modules, classes and functions. (Contributed by Claudiu Popa
477and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000478
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200479:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
480created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000481``__wrapped__`` attribute on a wrapper function). (Contributed by
482Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
483
484As part of the implementation of the new :mod:`enum` module, the
485:mod:`inspect` module now has substantially better support for custom
486``__dir__`` methods and dynamic class attributes provided through
487metaclasses (Contributed by Ethan Furman in :issue:`18929` and
488:issue:`19030`)
489
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200490
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200491mmap
492----
493
494mmap objects can now be weakref'ed.
495
496(Contributed by Valerie Lambert in :issue:`4885`.)
497
498
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100499multiprocessing
500---------------
501
502On Unix two new *start methods* have been added for starting processes
503using :mod:`multiprocessing`. These make the mixing of processes with
504threads more robust. See :issue:`8713`.
505
506Also, except when using the old *fork* start method, child processes
507will no longer inherit unneeded handles/file descriptors from their parents.
508
509
Victor Stinnerdaf45552013-08-28 00:53:59 +0200510os
511--
512
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200513New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200514descriptors or a Windows handle:
515
516* :func:`os.get_inheritable`, :func:`os.set_inheritable`
517* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
518
519
R David Murray78d692f2013-10-10 17:23:26 -0400520pdb
521---
522
523The ``print`` command has been removed from :mod:`pdb`, restoring access to the
524``print`` function.
525
526Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
527entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
528mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
529prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
530command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
531``print`` function, making it inaccessible at the ``pdb`` prompt.
532
533(Contributed by Connor Osborn in :issue:`18764`.)
534
535
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200536poplib
537------
538
539New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
540an encrypted POP3 session.
541
542New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
543POP3 server.
544
545(Contributed by Lorenzo Catucci in :issue:`4473`.)
546
547
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300548pprint
549------
550
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200551The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300552sequences (:issue:`19132`).
553
554
Nick Coghlan367df122013-10-27 01:57:34 +1000555pydoc
556-----
557
558While significant changes have not been made to :mod:`pydoc` directly,
559its handling of custom ``__dir__`` methods and various descriptor
560behaviours has been improved substantially by the underlying changes in
561the :mod:`inspect` module.
562
563
Christian Heimesb7bd5df2013-10-22 11:21:54 +0200564resource
565--------
566
567New :func:`resource.prlimit` function and Linux specific constants.
568(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
569
R David Murray8e37d5d2013-04-13 14:49:48 -0400570smtplib
571-------
572
R David Murray8a345962013-04-14 06:46:35 -0400573:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400574both socket level errors and SMTP protocol level errors to be caught in one
575try/except statement by code that only cares whether or not an error occurred.
576(:issue:`2118`).
577
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200578
Victor Stinnerdaf45552013-08-28 00:53:59 +0200579socket
580------
581
Georg Brandl5642ff92013-09-15 10:37:57 +0200582Socket objects have new methods to get or set their :ref:`inheritable flag
583<fd_inheritance>`:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200584
585* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
586
Eli Bendersky34567ec2013-08-31 15:18:48 -0700587The ``socket.AF_*`` and ``socket.SOCK_*`` constants are enumeration values,
588using the new :mod:`enum` module. This allows descriptive reporting during
589debugging, instead of seeing integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200590
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200591ssl
592---
593
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200594TLSv1.1 and TLSv1.2 support.
Christian Heimes70833a82013-06-22 19:34:17 +0200595
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200596(Contributed by Michele Orrù and Antoine Pitrou in :issue:`16692`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200597
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200598* New diagnostic functions :func:`~ssl.get_default_verify_paths`,
599 :meth:`~ssl.SSLContext.cert_store_stats` and
600 :meth:`~ssl.SSLContext.get_ca_certs`
601
602* Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
603 cert store.
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200604
605(Contributed by Christian Heimes in :issue:`18143`, :issue:`18147` and
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200606 :issue:`17134`.)
607
608Support for server-side SNI using the new
609:meth:`ssl.SSLContext.set_servername_callback` method.
610
611(Contributed by Daniel Black in :issue:`8109`.)
612
613
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200614stat
615----
616
617The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
618implementation is required as most of the values aren't standardized and
619platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
620
621The module supports new file types: door, event port and whiteout.
622
623
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200624struct
625------
626
627Streaming struct unpacking using :func:`struct.iter_unpack`.
628
629(Contributed by Antoine Pitrou in :issue:`17804`.)
630
631
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300632sunau
633-----
634
635The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
636plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
637
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300638:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
639
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300640
Andrew Kuchling173a1572013-09-15 18:15:56 -0400641traceback
642---------
643
644A new :func:`traceback.clear_frames` function takes a traceback object
645and clears the local variables in all of the frames it references,
646reducing the amount of memory consumed (:issue:`1565525`).
647
648
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200649urllib
650------
651
652Add support.for ``data:`` URLs in :mod:`urllib.request`.
653
654(Contributed by Mathias Panzenböck in :issue:`16423`.)
655
656
657unittest
658--------
659
660Support for easy dynamically-generated subtests using the
661:meth:`~unittest.TestCase.subTest` context manager.
662
663(Contributed by Antoine Pitrou in :issue:`16997`.)
664
R David Murray8e37d5d2013-04-13 14:49:48 -0400665
R David Murray671cd322013-04-10 12:31:43 -0400666wave
667----
668
669The :meth:`~wave.getparams` method now returns a namedtuple rather than a
670plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
671
R David Murrayc91d5ee2013-07-31 13:46:08 -0400672:meth:`wave.open` now supports the context manager protocol. (Contributed
673by Claudiu Popa in :issue:`17616`.)
674
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200675
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200676weakref
677-------
678
679New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000680methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200681
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000682New :class:`~weakref.finalize` class makes it possible to register a callback
683to be invoked when an object is garbage collected, without needing to
684carefully manage the lifecycle of the weak reference itself. (Contributed by
685Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200686
687
688xml.etree
689---------
690
691Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -0700692:class:`~xml.etree.ElementTree.XMLPullParser`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200693
Eli Benderskyb5869342013-08-30 05:51:20 -0700694(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200695
Christian Tismer59202e52013-10-21 03:59:23 +0200696
697zipfile.PyZipfile
698-----------------
699
700Add a filter function to ignore some packages (tests for instance),
701:meth:`~zipfile.PyZipFile.writepy`.
702
703(Contributed by Christian Tismer in :issue:`19274`.)
704
705
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200706Other improvements
707==================
708
709Tab-completion is now enabled by default in the interactive interpreter.
710
711(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
712
Eli Bendersky96d848a2013-09-06 06:55:58 -0700713Python invocation changes
714=========================
715
716Invoking the Python interpreter with ``--version`` now outputs the version to
717standard output instead of standard error (:issue:`18338`). Similar changes
718were made to :mod:`argparse` (:issue:`18920`) and other modules that have
719script-like invocation capabilities (:issue:`18922`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200720
Georg Brandlb80f5112012-09-30 09:11:58 +0200721Optimizations
722=============
723
724Major performance enhancements have been added:
725
Victor Stinnere64322e2012-10-30 23:12:47 +0100726* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200727
Raymond Hettingerc301b552013-08-19 09:12:20 -0700728* The cost of hash collisions for sets is now reduced. Each hash table
Raymond Hettinger8408dc52013-09-15 14:57:15 -0700729 probe now checks a series of consecutive, adjacent key/hash pairs before
730 continuing to make random probes through the hash table. This exploits
731 cache locality to make collision resolution less expensive.
732
733 The collision resolution scheme can be described as a hybrid of linear
734 probing and open addressing. The number of additional linear probes
735 defaults to nine. This can be changed at compile-time by defining
736 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
737 linear probing entirely.
Raymond Hettingerc301b552013-08-19 09:12:20 -0700738
Christian Heimes086b1af2013-10-22 11:49:34 +0200739 (Contributed by Raymond Hettinger in :issue:`18771`.)
Raymond Hettingerc301b552013-08-19 09:12:20 -0700740
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200741* The interpreter starts about 30% faster. A couple of measures lead to the
Eric V. Smith57841dd2013-10-13 00:36:08 -0400742 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200743 :mod:`collections` and :mod:`locale` modules and their dependencies are no
744 longer imported by default. The marshal module has been improved to load
745 compiled Python code faster.
746
747 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
748 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
749 :issue:`9548`)
750
751
Nick Coghlan367df122013-10-27 01:57:34 +1000752CPython Implementation Changes
753==============================
754
755
756.. _pep-445:
757
758PEP 445: Customization of CPython memory allocators
759---------------------------------------------------
760
761:pep:`445` adds new C level interfaces to customize memory allocation in
762the CPython interpreter.
763
764.. seealso::
765
766 :pep:`445` - Add new APIs to customize Python memory allocators
767 PEP written and implemented by Victor Stinner.
768
769
770.. _pep-442:
771
772PEP 442: Safe object finalization
773---------------------------------
774
775:pep:`442` removes the current limitations and quirks of object finalization
776in CPython. With it, objects with :meth:`__del__` methods, as well as
777generators with :keyword:`finally` clauses, can be finalized when they are
778part of a reference cycle.
779
780As part of this change, module globals are no longer forcibly set to
781:const:`None` during interpreter shutdown in most cases, instead relying
782on the normal operation of the cyclic garbage collector.
783
784.. seealso::
785
786 :pep:`442` - Safe object finalization
787 PEP written and implemented by Antoine Pitrou.
788
789
790Other build and C API changes
791-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200792
793Changes to Python's build process and to the C API include:
794
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000795* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
796 allows applications embedding the CPython interpreter to reliably force
797 a particular encoding and error handler for the standard streams
798 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200799
Nick Coghlan0acceb72013-10-20 13:22:21 +1000800* Most Python C APIs that don't mutate string arguments are now correctly
801 marked as accepting ``const char *`` rather than ``char *`` (Contributed
802 by Serhiy Storchaka in :issue:`1772673`).
803
804* "Argument Clinic" (:pep:`436`) is now part of the CPython build process
805 and can be used to simplify the process of defining and maintaining
806 accurate signatures for builtins and standard library extension modules
807 implemented in C.
808
Nick Coghlan367df122013-10-27 01:57:34 +1000809 .. note::
810 The Argument Clinic PEP is not fully up to date with the state of the
811 implementation. This has been deemed acceptable by the release manager
812 and core development team in this case, as Argument Clinic will not
813 be made available as a public API for third party use in Python 3.4.
814
Georg Brandlb80f5112012-09-30 09:11:58 +0200815
816Deprecated
817==========
818
819Unsupported Operating Systems
820-----------------------------
821
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200822* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200823* Windows 2000
Georg Brandlb80f5112012-09-30 09:11:58 +0200824
825
826Deprecated Python modules, functions and methods
827------------------------------------------------
828
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -0400829* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -0400830 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
831 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +0200832
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400833* :func:`importlib.util.module_for_loader` is pending deprecation. Using
834 :func:`importlib.util.module_to_load` and
835 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
836 to more easily customize module loading.
837
Brett Cannone4f41de2013-06-16 13:13:40 -0400838* The :mod:`imp` module is pending deprecation. To keep compatibility with
839 Python 2/3 code bases, the module's removal is currently not scheduled.
840
Brett Cannon1448ecf2013-10-04 11:38:59 -0400841* The :mod:`formatter` module is pending deprecation and is slated for removal
842 in Python 3.6.
843
Georg Brandlb80f5112012-09-30 09:11:58 +0200844
845Deprecated functions and types of the C API
846-------------------------------------------
847
Victor Stinner3dd263f2013-10-23 18:54:43 +0200848* The ``PyThreadState.tick_counter`` field has been removed: its value was
849 meaningless since Python 3.2 ("new GIL").
Georg Brandlb80f5112012-09-30 09:11:58 +0200850
851
852Deprecated features
853-------------------
854
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +0200855* The site module adding a "site-python" directory to sys.path, if it
856 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200857
858
Benjamin Peterson88f3b232012-10-04 12:45:10 -0400859Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +0200860=====================
861
862This section lists previously described changes and other bugfixes
863that may require changes to your code.
864
Brett Cannon777622b2013-04-09 17:03:10 -0400865* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
866 exception or return a default value instead of raising
867 :exc:`NotImplementedError` blindly. This will only affect code calling
868 :func:`super` and falling through all the way to the ABCs. For compatibility,
869 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -0400870
871* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
872 attributes to ``None`` by default. To determine if these attributes were set
873 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -0400874 ``getattr(module, '__loader__', None) is not None``.
875
876* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
877 ``__package__`` unconditionally to properly support reloading. If this is not
878 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -0400879 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -0400880
881* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
882 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
883
Brett Cannon1448ecf2013-10-04 11:38:59 -0400884* Frozen packages no longer set ``__path__`` to a list containing the package
885 name but an empty list instead. Determing if a module is a package should be
886 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -0400887
888* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
Brett Cannon82da8882013-07-04 17:48:16 -0400889 argument is not set. Previously only ``NULL`` was returned with no exception
890 set.
Brett Cannon33915eb2013-06-14 18:33:00 -0400891
892* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
893 it would write to is a symlink or a non-regular file. This is to act as a
894 warning that import will overwrite those files with a regular file regardless
895 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -0400896
897* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
898 :exc:`ImportError` when the source code being loaded triggers a
899 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
900 meant to be raised only when source code cannot be found but it should, it was
901 felt to be over-reaching/overloading of that meaning when the source code is
902 found but improperly structured. If you were catching ImportError before and
903 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +0200904 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +1000905
906* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
Nick Coghlan367df122013-10-27 01:57:34 +1000907 set the ``__wrapped__`` attribute to the function being wrapper, even if
908 that function also had its ``__wrapped__`` attribute set. This means
909 ``__wrapped__`` attributes now correctly link a stack of decorated
910 functions rather than every ``__wrapped__`` attribute in the chain
911 referring to the innermost function. Introspection libraries that
912 assumed the previous behaviour was intentional can use
913 :func:`inspect.unwrap` to access the first function in the chain that has
914 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +0200915
Georg Brandlc2228c82013-10-12 13:24:55 +0200916* (C API) The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
Victor Stinner2fe9bac2013-10-10 16:18:20 +0200917 now be a string allocated by :c:func:`PyMem_RawMalloc` or
918 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
919 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
920
Georg Brandl0f5bff22013-10-19 17:46:38 +0200921* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -0400922 directory to objects in :data:`sys.path_hooks` for the empty string. This
923 results in :data:`sys.path_importer_cache` never containing ``''``, thus
924 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
925 will not find all keys. A module's ``__file__`` when imported in the current
926 working directory will also now have an absolute path, including when using
927 ``-m`` with the interpreter (this does not influence when the path to a file
928 is specified on the command-line).