blob: cef55d5a43ee8e14e8811dd60cda44600a0ab85f [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
R David Murray061efb12013-12-24 12:35:59 -050021 updates -- in such cases, end users will be much better served by partial
Nick Coghlan03074fd2012-09-30 18:51:53 +053022 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
R David Murray061efb12013-12-24 12:35:59 -050078 :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
R David Murraye0f7a782013-12-20 16:04:29 -050089* No new syntax features were added in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020090
R David Murray809487e2013-12-22 20:49:40 -050091New expected features for Python implementations:
92
R David Murray68790662013-12-23 11:17:51 -050093* :ref:`pip should always be "available" <whatsnew-pep-453>` (:pep:`453`).
R David Murray809487e2013-12-22 20:49:40 -050094* :ref:`Make newly created file descriptors non-inheritable <whatsnew-pep-446>`
95 (:pep:`446`).
96* command line option for :ref:`isolated mode <using-on-misc-options>`,
97 (:issue:`16499`).
R David Murray8d856782013-12-23 10:28:57 -050098* :ref:`improvements in the handling of codecs <codec-handling-improvements>`
99 that are not text encodings (multiple issues).
R David Murray809487e2013-12-22 20:49:40 -0500100* :ref:`A ModuleSpec Type <whatsnew-pep-451>` for the Import System
R David Murraye9b74d42013-12-22 21:05:04 -0500101 (:pep:`451`). (Affects importer authors.)
R David Murray809487e2013-12-22 20:49:40 -0500102
Georg Brandlb80f5112012-09-30 09:11:58 +0200103New library modules:
104
R David Murray9217dad2013-12-23 21:08:28 -0500105* :mod:`asyncio`: :ref:`New provisional API for asynchronous IO
106 <whatsnew-asyncio>` (:pep:`3156`).
107* :mod:`ensurepip`: :ref:`Bootstrapping the pip installer <whatsnew-ensurepip>`
108 (:pep:`453`).
109* :mod:`enum`: :ref:`Support for enumeration types <whatsnew-enum>`
110 (:pep:`435`).
111* :mod:`pathlib`: :ref:`Object-oriented filesystem paths <whatsnew-pathlib>`
112 (:pep:`428`).
R David Murrayf9976e72013-12-23 10:32:02 -0500113* :mod:`selectors`: :ref:`High-level and efficient I/O multiplexing
114 <whatsnew-selectors>`, built upon the :mod:`select` module primitives (part
115 of :pep:`3156`).
R David Murray9217dad2013-12-23 21:08:28 -0500116* :mod:`statistics`: A basic :ref:`numerically stable statistics library
117 <whatsnew-statistics>` (:pep:`450`).
118* :mod:`tracemalloc`: :ref:`Trace Python memory allocations
119 <whatsnew-tracemalloc>` (:pep:`454`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200120
Georg Brandlb80f5112012-09-30 09:11:58 +0200121Significantly Improved Library Modules:
122
R David Murray0a102162013-12-20 15:00:54 -0500123* :ref:`Single-dispatch generic functions <whatsnew-singledispatch>` in
R David Murray8d856782013-12-23 10:28:57 -0500124 :mod:`functools` (:pep:`443`).
125* New :mod:`pickle` :ref:`protocol 4 <whatsnew-protocol-4>` (:pep:`3154`).
126* :ref:`SHA-3 (Keccak) support <whatsnew-sha3>` for :mod:`hashlib`
127 (:issue:`16113`).
128* :ref:`TLSv1.1 and TLSv1.2 support <whatsnew-tls-11-12>` for :mod:`ssl`
129 (:issue:`16692`).
R David Murrayac186222013-12-20 17:23:57 -0500130* :mod:`multiprocessing` now has :ref:`an option to avoid using os.fork
131 on Unix <whatsnew-multiprocessing-no-fork>` (:issue:`8713`).
R David Murray6adb4542013-12-20 13:10:43 -0500132* :mod:`email` has a new submodule, :mod:`~email.contentmanager`, and
133 a new :mod:`~email.message.Message` subclass
R David Murray26b80cfd2013-12-20 17:26:52 -0500134 (:class:`~email.contentmanager.EmailMessage`) that :ref:`simplify MIME
R David Murray8d856782013-12-23 10:28:57 -0500135 handling <whatsnew_email_contentmanager>` (:issue:`18891`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200136
Nick Coghlan367df122013-10-27 01:57:34 +1000137CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200138
R David Murraya93ca972013-12-22 14:10:21 -0500139* :ref:`Safe object finalization <whatsnew-pep-442>` (:pep:`442`).
R David Murrayca794612013-12-22 14:05:11 -0500140* Leveraging :pep:`442`, :ref:`module globals are no longer set to None
141 during finalization <whatsnew-pep-442>`, in most cases (:issue:`18214`).
R David Murraya93ca972013-12-22 14:10:21 -0500142* :ref:`Configurable memory allocators <whatsnew-pep-445>` (:pep:`445`).
143* :ref:`Secure and interchangeable hash algorithm <whatsnew-pep-456>`
144 (:pep:`456`).
145* :ref:`Argument Clinic <whatsnew-pep-436>` (:pep:`436`).
R David Murray8f7664a2013-12-22 20:40:11 -0500146* The :mod:`marshal` format has been made :ref:`more compact and efficient
147 <whatsnew-marshal-3>` (:issue:`16475`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200148
R David Murray347f9c72013-12-23 21:30:06 -0500149Please read on for a comprehensive list of user-facing changes, including many
150other smaller improvements, CPython optimizations, deprecations, and potential
151porting issues.
Georg Brandlb80f5112012-09-30 09:11:58 +0200152
Nick Coghland0cf0632013-11-11 22:11:55 +1000153
R David Murray809487e2013-12-22 20:49:40 -0500154New expected features for Python implementations
155================================================
156
R David Murray68790662013-12-23 11:17:51 -0500157.. _whatsnew-pep-453:
158
Nick Coghland0cf0632013-11-11 22:11:55 +1000159PEP 453: Explicit bootstrapping of pip in Python installations
R David Murray809487e2013-12-22 20:49:40 -0500160--------------------------------------------------------------
Nick Coghland0cf0632013-11-11 22:11:55 +1000161
162The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
163cross-platform mechanism to boostrap the pip installer into Python
164installations and virtual environments.
165
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000166The :mod:`venv` module and the :command:`pyvenv` utility make use of this
167module to make ``pip`` readily available in virtual environments. When
168using the command line interface, ``pip`` is installed by default, while
169for the module API installation of ``pip`` must be requested explicitly.
170
171For CPython source builds on POSIX systems, the ``make install`` and
172``make altinstall`` commands bootstrap ``pip`` by default. This behaviour
173can be controlled through configure options, and overridden through
174Makefile options.
175
Ned Deily44a0db02013-11-22 22:39:09 -0800176On Windows and Mac OS X, the CPython installers now offer the option to
177install ``pip`` along with CPython itself.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000178
R David Murray68790662013-12-23 11:17:51 -0500179As `discussed in the PEP`__, platform packagers may choose not to install
180``pip`` by default, as long as the command ``pip``, when invoked, provides
181clear and simple directions on how to install ``pip`` on the platform.
182
183__ http://www.python.org/dev/peps/pep-0453/#recommendations-for-downstream-distributors
184
Nick Coghland0cf0632013-11-11 22:11:55 +1000185.. note::
186
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000187 The implementation of PEP 453 is still a work in progress. Refer to
188 :issue:`19347` for the progress on additional steps:
Nick Coghland0cf0632013-11-11 22:11:55 +1000189
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000190 * Having the binary installers install ``pip`` by default
191 * Recommending the use of ``pip`` in the "Installing Python Module"
192 documentation.
Nick Coghland0cf0632013-11-11 22:11:55 +1000193
194.. seealso::
195
R David Murray061efb12013-12-24 12:35:59 -0500196 :pep:`453` -- Explicit bootstrapping of pip in Python installations
Nick Coghland0cf0632013-11-11 22:11:55 +1000197 PEP written by Donald Stufft and Nick Coghlan, implemented by
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000198 Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily.
Nick Coghland0cf0632013-11-11 22:11:55 +1000199
200
R David Murrayf9909c22013-12-20 14:50:12 -0500201.. _whatsnew-pep-446:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200202
203PEP 446: Make newly created file descriptors non-inheritable
R David Murray809487e2013-12-22 20:49:40 -0500204------------------------------------------------------------
Victor Stinnerdaf45552013-08-28 00:53:59 +0200205
Nick Coghlan367df122013-10-27 01:57:34 +1000206:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200207<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200208
209* :func:`os.get_inheritable`, :func:`os.set_inheritable`
210* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
211* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
212
Antoine Pitrou796564c2013-07-30 19:59:21 +0200213.. seealso::
214
R David Murray061efb12013-12-24 12:35:59 -0500215 :pep:`446` -- Make newly created file descriptors non-inheritable
Nick Coghlan367df122013-10-27 01:57:34 +1000216 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200217
Georg Brandlb80f5112012-09-30 09:11:58 +0200218
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000219.. _codec-handling-improvements:
220
221Improvements to codec handling
R David Murray809487e2013-12-22 20:49:40 -0500222------------------------------
Nick Coghlan8b097b42013-11-13 23:49:21 +1000223
224Since it was first introduced, the :mod:`codecs` module has always been
225intended to operate as a type-neutral dynamic encoding and decoding
226system. However, its close coupling with the Python text model, especially
227the type restricted convenience methods on the builtin :class:`str`,
228:class:`bytes` and :class:`bytearray` types, has historically obscured that
229fact.
230
231As a key step in clarifying the situation, the :meth:`codecs.encode` and
232:meth:`codecs.decode` convenience functions are now properly documented in
233Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000234module (and have been covered by the regression test suite) since Python 2.4,
Nick Coghlan8b097b42013-11-13 23:49:21 +1000235but were previously only discoverable through runtime introspection.
236
237Unlike the convenience methods on :class:`str`, :class:`bytes` and
238:class:`bytearray`, these convenience functions support arbitrary codecs
239in both Python 2 and Python 3, rather than being limited to Unicode text
240encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
241(in Python 2).
242
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000243In Python 3.4, the interpreter is able to identify the known non-text
244encodings provided in the standard library and direct users towards these
245general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000246
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000247 >>> b"abcdef".decode("hex")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000248 Traceback (most recent call last):
249 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000250 LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000251
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000252 >>> "hello".encode("rot13")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000253 Traceback (most recent call last):
254 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000255 LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000256
257In a related change, whenever it is feasible without breaking backwards
258compatibility, exceptions raised during encoding and decoding operations
259will be wrapped in a chained exception of the same type that mentions the
260name of the codec responsible for producing the error::
261
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000262 >>> import codecs
263
264 >>> codecs.decode(b"abcdefgh", "hex")
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000265 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000266
267 The above exception was the direct cause of the following exception:
268
269 Traceback (most recent call last):
270 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000271 binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000272
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000273 >>> codecs.encode("hello", "bz2")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000274 TypeError: 'str' does not support the buffer interface
275
276 The above exception was the direct cause of the following exception:
277
278 Traceback (most recent call last):
279 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000280 TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not support the buffer interface)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000281
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000282Finally, as the examples above show, these improvements have permitted
283the restoration of the convenience aliases for the non-Unicode codecs that
284were themselves restored in Python 3.2. This means that encoding binary data
285to and from its hexadecimal representation (for example) can now be written
286as::
287
288 >>> from codecs import encode, decode
289 >>> encode(b"hello", "hex")
290 b'68656c6c6f'
291 >>> decode(b"68656c6c6f", "hex")
292 b'hello'
293
294The binary and text transforms provided in the standard library are detailed
295in :ref:`binary-transforms` and :ref:`text-transforms`.
296
R David Murray9217dad2013-12-23 21:08:28 -0500297(Contributed by Nick Coghlan in :issue:`7475`, , :issue:`17827`,
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000298:issue:`17828` and :issue:`19619`)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000299
R David Murray809487e2013-12-22 20:49:40 -0500300.. _whatsnew-pep-451:
Eric Snowb523f842013-11-22 09:05:39 -0700301
302PEP 451: A ModuleSpec Type for the Import System
R David Murray809487e2013-12-22 20:49:40 -0500303------------------------------------------------
Eric Snowb523f842013-11-22 09:05:39 -0700304
R David Murrayf85b2a82013-12-22 21:06:13 -0500305:pep:`451` provides an encapsulation of the information about a module that the
306import machinery will use to load it (that is, a module specification). This
307helps simplify both the import implementation and several import-related APIs.
308The change is also a stepping stone for `several future import-related
309improvements`__.
Eric Snowb523f842013-11-22 09:05:39 -0700310
R David Murraye9b74d42013-12-22 21:05:04 -0500311__ https://mail.python.org/pipermail/python-dev/2013-November/130111.html
Eric Snowb523f842013-11-22 09:05:39 -0700312
313The public-facing changes from the PEP are entirely backward-compatible.
R David Murrayf85b2a82013-12-22 21:06:13 -0500314Furthermore, they should be transparent to everyone but importer authors. Key
315finder and loader methods have been deprecated, but they will continue working.
316New importers should use the new methods described in the PEP. Existing
317importers should be updated to implement the new methods.
Eric Snowb523f842013-11-22 09:05:39 -0700318
Nick Coghlan8b097b42013-11-13 23:49:21 +1000319
Georg Brandlb80f5112012-09-30 09:11:58 +0200320Other Language Changes
R David Murray809487e2013-12-22 20:49:40 -0500321----------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200322
323Some smaller changes made to the core Python language are:
324
Ezio Melotti34808e22013-10-12 16:36:13 +0300325* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200326
R David Murray9a2f1392013-06-28 13:31:19 -0400327* :func:`min` and :func:`max` now accept a *default* argument that can be used
328 to specify the value they return if the iterable they are evaluating has no
329 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200330
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200331* Module objects are now :mod:`weakref`'able.
332
Nick Coghlan0acceb72013-10-20 13:22:21 +1000333* Module ``__file__`` attributes (and related values) should now always
334 contain absolute paths by default, with the sole exception of
335 ``__main__.__file__`` when a script has been executed directly using
336 a relative path (Contributed by Brett Cannon in :issue:`18416`).
337
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200338* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
339 encoding and decoding unless the ``surrogatepass`` error handler is used,
340 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
341 and the UTF-16 encoder that produces them while encoding non-BMP characters.
342 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
343 :issue:`12892`.
344
Georg Brandlb80f5112012-09-30 09:11:58 +0200345
346New Modules
347===========
348
Nick Coghlan0acceb72013-10-20 13:22:21 +1000349
R David Murray9217dad2013-12-23 21:08:28 -0500350.. _whatsnew-asyncio:
351
Nick Coghlan0acceb72013-10-20 13:22:21 +1000352asyncio
353-------
354
355The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
356pluggable event loop model for Python, providing solid asynchronous IO
357support in the standard library, and making it easier for other event loop
358implementations to interoperate with the standard library and each other.
359
360For Python 3.4, this module is considered a :term:`provisional API`.
361
Nick Coghlan367df122013-10-27 01:57:34 +1000362.. seealso::
363
R David Murray061efb12013-12-24 12:35:59 -0500364 :pep:`3156` -- Asynchronous IO Support Rebooted: the "asyncio" Module
Nick Coghlan367df122013-10-27 01:57:34 +1000365 PEP written and implementation led by Guido van Rossum.
366
R David Murray68790662013-12-23 11:17:51 -0500367
R David Murray9217dad2013-12-23 21:08:28 -0500368.. _whatsnew-ensurepip:
R David Murray68790662013-12-23 11:17:51 -0500369
370ensurepip
371---------
372
373The new :mod:`ensurepip` module is the primary infrastructure for the
374:pep:`453` implementation. In the normal course of events end users will not
375need to interact with this module, but it can be used to manually bootstrap
376``pip`` if the automated bootstrapping into an installation or virtual
377environment was declined.
378
379:mod:`ensurepip` includes a bundled copy of ``pip``, up-to-date as of the first
380release candidate of the release of CPython with which it ships (this applies
381to both maintenance releases and feature releases). ``ensurepip`` does not
382access the internet. (If the installation has Internet access, it is of course
383possible to upgrade ``pip`` to a release more recent than the bundled ``pip``
384by using the bundled ``pip`` command itself once it is installed.)
385
386The module is named *ensure*\ pip because if called when ``pip`` is already
387installed, it does nothing. It also has an ``--upgrade`` option that will
388cause it to install the bundled copy of ``pip`` if the existing installed
389version of ``pip`` is older than the bundled copy.
390
391
R David Murray9217dad2013-12-23 21:08:28 -0500392.. _whatsnew-enum:
393
Nick Coghlan0acceb72013-10-20 13:22:21 +1000394enum
395----
396
Nick Coghlan367df122013-10-27 01:57:34 +1000397The new :mod:`enum` module (defined in :pep:`435`) provides a standard
398implementation of enumeration types, allowing other modules (such as
399:mod:`socket`) to provide more informative error messages and better
400debugging support by replacing opaque integer constants with backwards
401compatible enumeration values.
402
403.. seealso::
404
R David Murray061efb12013-12-24 12:35:59 -0500405 :pep:`435` -- Adding an Enum type to the Python standard library
Nick Coghlan367df122013-10-27 01:57:34 +1000406 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
407 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000408
409
R David Murray9217dad2013-12-23 21:08:28 -0500410.. _whatsnew-pathlib:
411
Antoine Pitrou31119e42013-11-22 17:38:12 +0100412pathlib
413-------
414
415The new :mod:`pathlib` module offers classes representing filesystem paths
416with semantics appropriate for different operating systems. Path classes are
417divided between *pure paths*, which provide purely computational operations
418without I/O, and *concrete paths*, which inherit from pure paths but also
419provide I/O operations.
420
421For Python 3.4, this module is considered a :term:`provisional API`.
422
423.. seealso::
424
R David Murray061efb12013-12-24 12:35:59 -0500425 :pep:`428` -- The pathlib module -- object-oriented filesystem paths
Antoine Pitrou31119e42013-11-22 17:38:12 +0100426 PEP written and implemented by Antoine Pitrou.
427
428
R David Murrayf9976e72013-12-23 10:32:02 -0500429.. _whatsnew-selectors:
430
Charles-François Natali243d8d82013-09-04 19:02:49 +0200431selectors
432---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200433
Nick Coghlan0acceb72013-10-20 13:22:21 +1000434The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
435allows high-level and efficient I/O multiplexing, built upon the
436:mod:`select` module primitives.
437
438
R David Murray9217dad2013-12-23 21:08:28 -0500439.. _whatsnew-statistics:
440
Nick Coghlan0acceb72013-10-20 13:22:21 +1000441statistics
442----------
443
444The new :mod:`statistics` module (defined in :pep:`450`) offers some core
445statistics functionality directly in the standard library. This module
446supports calculation of the mean, median, mode, variance and standard
447deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200448
Nick Coghlan367df122013-10-27 01:57:34 +1000449.. seealso::
450
R David Murray061efb12013-12-24 12:35:59 -0500451 :pep:`450` -- Adding A Statistics Module To The Standard Library
Nick Coghlan367df122013-10-27 01:57:34 +1000452 PEP written and implemented by Steven D'Aprano
453
R David Murray9217dad2013-12-23 21:08:28 -0500454.. _whatsnew-tracemalloc:
Georg Brandlb80f5112012-09-30 09:11:58 +0200455
Victor Stinnerd2736af2013-11-25 09:40:27 +0100456tracemalloc
457-----------
458
459The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to
460trace memory blocks allocated by Python. It provides the following information:
461
462* Traceback where an object was allocated
463* Statistics on allocated memory blocks per filename and per line number:
464 total size, number and average size of allocated memory blocks
465* Compute the differences between two snapshots to detect memory leaks
466
467.. seealso::
468
R David Murray061efb12013-12-24 12:35:59 -0500469 :pep:`454` -- Add a new tracemalloc module to trace Python memory allocations
Victor Stinnerd2736af2013-11-25 09:40:27 +0100470 PEP written and implemented by Victor Stinner
471
472
Georg Brandlb80f5112012-09-30 09:11:58 +0200473Improved Modules
474================
475
R David Murray72420ff2013-12-24 10:46:44 -0500476
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200477aifc
478----
479
480The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
481plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
482
483
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300484audioop
485-------
486
487Added support for 24-bit samples (:issue:`12866`).
488
Serhiy Storchaka3062c9a2013-11-23 22:26:01 +0200489Added the :func:`~audioop.byteswap` function to convert big-endian samples
490to little-endian and vice versa (:issue:`19641`).
491
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300492
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000493base64
494------
495
496The encoding and decoding functions in :mod:`base64` now accept any
497:term:`bytes-like object` in cases where it previously required a
Georg Brandled007d52013-11-24 16:09:26 +0100498:class:`bytes` or :class:`bytearray` instance (:issue:`17839`).
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000499
500
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200501colorsys
502--------
503
504The number of digits in the coefficients for the RGB --- YIQ conversions have
505been expanded so that they match the FCC NTSC versions. The change in
506results should be less than 1% and may better match results found elsewhere.
507
R David Murray8e37d5d2013-04-13 14:49:48 -0400508
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000509contextlib
510----------
511
Nick Coghlan240f86d2013-10-17 23:40:57 +1000512The new :class:`contextlib.suppress` context manager helps to clarify the
513intent of code that deliberately suppresses exceptions from a single
514statement. (Contributed by Raymond Hettinger in :issue:`15806` and
515Zero Piraeus in :issue:`19266`)
516
Victor Stinner6633c392013-10-21 13:27:11 +0200517The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000518for utility scripts to handle inflexible APIs that don't provide any
519options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000520other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
521this context manager is also useful for checking expected output from
522command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
523
524The :mod:`contextlib` documentation has also been updated to include a
525:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
526differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000527
528
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000529dis
530---
531
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300532The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
533that provides details of individual bytecode operations and a
534:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000535given piece of Python code. The various display tools in the :mod:`dis`
536module have been updated to be based on these new components.
537
538The new :class:`dis.Bytecode` class provides an object-oriented API for
539inspecting bytecode, both in human-readable form and for iterating over
540instructions.
541
Nick Coghlan50c48b82013-11-23 00:57:00 +1000542(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
543and Claudiu Popa in :issue:`17916`)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000544
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200545
R David Murray5a9d7062012-11-21 15:09:21 -0500546doctest
547-------
548
R David Murray5707d502013-06-23 14:24:13 -0400549Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
550failure is detected. (Contributed by R. David Murray and Daniel Urban in
551:issue:`16522`.)
552
553Updated the doctest command line interface to use :mod:`argparse`, and added
554``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
555be specified on the command line, and ``-f`` is a shorthand for ``-o
556FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
557CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200558
R David Murray8e37d5d2013-04-13 14:49:48 -0400559
R David Murraybb17d2b2013-08-09 16:15:28 -0400560email
561-----
562
563:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
564override the default policy of the message when generating a string
565representation of it. This means that ``as_string`` can now be used in more
566circumstances, instead of having to create and use a :mod:`~email.generator` in
567order to pass formatting parameters to its ``flatten`` method.
568
569New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
570representation of the message in a fashion similar to how ``as_string``
571produces a string representation. It does not accept the *maxheaderlen*
572argument, but does accept the *unixfrom* and *policy* arguments. The
573:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
574calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
575result: a bytes object containing the fully formatted message.
576
577(Contributed by R. David Murray in :issue:`18600`.)
578
R David Murray26b80cfd2013-12-20 17:26:52 -0500579.. _whatsnew_email_contentmanager:
580
R David Murray3da240f2013-10-16 22:48:40 -0400581A pair of new subclasses of :class:`~email.message.Message` have been added,
582along with a new sub-module, :mod:`~email.contentmanager`. All documentation
583is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000584:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400585number of new methods that make extracting content from and inserting content
586into email messages much easier. See the :mod:`~email.contentmanager`
587documentation for details.
588
589These API additions complete the bulk of the work that was planned as part of
590the email6 project. The currently provisional API is scheduled to become final
591in Python 3.5 (possibly with a few minor additions in the area of error
592handling).
593
594(Contributed by R. David Murray in :issue:`18891`.)
595
R David Murraybb17d2b2013-08-09 16:15:28 -0400596
Victor Stinner854ffcb2013-06-21 00:36:30 +0200597functools
598---------
599
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000600The new :func:`~functools.partialmethod` descriptor bring partial argument
601application to descriptors, just as :func:`~functools.partial` provides
602for normal callables. The new descriptor also makes it easier to get
603arbitrary callables (including :func:`~functools.partial` instances)
604to behave like normal instance methods when included in a class definition.
605
606(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
607
R David Murray0a102162013-12-20 15:00:54 -0500608.. _whatsnew-singledispatch:
609
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000610The new :func:`~functools.singledispatch` decorator brings support for
611single-dispatch generic functions to the Python standard library. Where
612object oriented programming focuses on grouping multiple operations on a
613common set of data into a class, a generic function focuses on grouping
614multiple implementations of an operation that allows it to work with
615*different* kinds of data.
616
617.. seealso::
618
R David Murray061efb12013-12-24 12:35:59 -0500619 :pep:`443` -- Single-dispatch generic functions
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000620 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200621
Nick Coghlane8c45d62013-07-28 20:00:01 +1000622
Christian Heimese92ef132013-10-13 00:52:43 +0200623hashlib
624-------
625
626New :func:`hashlib.pbkdf2_hmac` function.
Christian Heimese92ef132013-10-13 00:52:43 +0200627(Contributed by Christian Heimes in :issue:`18582`)
628
R David Murraycde1a062013-12-20 16:33:52 -0500629.. _whatsnew-sha3:
630
631New :ref:`hash algorithms <hash-algorithms>` ``sah3_224()``, ``sha3_256()``,
632``sha3_384()``, and ``sha3_512()``. (Contributed by Christian Heimes in
633:issue:`16113`.)
634
Christian Heimese92ef132013-10-13 00:52:43 +0200635
Ezio Melotti250a06c2013-11-25 06:18:47 +0200636html
637----
638
639Added a new :func:`html.unescape` function that converts HTML5 character
640references to the corresponding Unicode characters.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200641(Contributed by Ezio Melotti in :issue:`2927`)
642
643Added a new *convert_charrefs* keyword argument to
644:class:`~html.parser.HTMLParser` that, when ``True``, automatically converts
645all character references. For backward-compatibility, its value defaults
646to ``False``, but it will change to ``True`` in future versions, so you
647are invited to set it explicitly and update your code to use this new feature.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200648(Contributed by Ezio Melotti in :issue:`13633`)
649
650The *strict* argument of :class:`~html.parser.HTMLParser` is now deprecated.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200651(Contributed by Ezio Melotti in :issue:`15114`)
652
653
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200654inspect
655-------
656
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000657
Nick Coghlan367df122013-10-27 01:57:34 +1000658The inspect module now offers a basic :ref:`command line interface
659<inspect-module-cli>` to quickly display source code and other
660information for modules, classes and functions. (Contributed by Claudiu Popa
661and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000662
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200663:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
664created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000665``__wrapped__`` attribute on a wrapper function). (Contributed by
666Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
667
668As part of the implementation of the new :mod:`enum` module, the
669:mod:`inspect` module now has substantially better support for custom
670``__dir__`` methods and dynamic class attributes provided through
671metaclasses (Contributed by Ethan Furman in :issue:`18929` and
672:issue:`19030`)
673
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200674
R David Murray8f7664a2013-12-22 20:40:11 -0500675.. _whatsnew-marshal-3:
676
677marshal
678-------
679
680The default :mod:`marshal` version has been bumped to 3. The code implementing
681the new version restores the Python2 behavior of recording only one copy of
682interned strings and preserving the interning on deserialization, and extends
683this "one copy" ability to any object type (including handling recursive
684references). This reduces both the size of ``.pyc`` files and the amount of
685memory a module occupies in memory when it is loaded from a ``.pyc`` (or
686``.pyo``) file. (Contributed by Kristján Valur Jónsson in :issue:`16475`.)
687
688
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200689mmap
690----
691
692mmap objects can now be weakref'ed.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200693(Contributed by Valerie Lambert in :issue:`4885`.)
694
695
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100696multiprocessing
697---------------
698
R David Murrayac186222013-12-20 17:23:57 -0500699.. _whatsnew-multiprocessing-no-fork:
700
701On Unix, two new :ref:`start methods <multiprocessing-start-methods>`
702(``spawn`` and ``forkserver``) have been added for starting processes using
703:mod:`multiprocessing`. These make the mixing of processes with threads more
704robust, and the ``spawn`` method matches the semantics that multiprocessing has
705always used on Windows. (Contributed by Richard Oudkerk in :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100706
707Also, except when using the old *fork* start method, child processes
R David Murrayac186222013-12-20 17:23:57 -0500708will no longer inherit unneeded handles/file descriptors from their parents
709(part of :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100710
Nick Coghlan9a767352013-12-17 22:17:26 +1000711:mod:`multiprocessing` now relies on :mod:`runpy` (which implements the
712``-m`` switch) to initialise ``__main__`` appropriately in child processes
713when using the ``spawn`` or ``forkserver`` start methods. This resolves some
714edge cases where combining multiprocessing, the ``-m`` command line switch
715and explicit relative imports could cause obscure failures in child
716processes. (Contributed by Nick Coghlan in :issue:`19946`)
717
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100718
Victor Stinnerdaf45552013-08-28 00:53:59 +0200719os
720--
721
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200722New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200723descriptors or a Windows handle:
724
725* :func:`os.get_inheritable`, :func:`os.set_inheritable`
726* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
727
728
R David Murray78d692f2013-10-10 17:23:26 -0400729pdb
730---
731
732The ``print`` command has been removed from :mod:`pdb`, restoring access to the
733``print`` function.
734
735Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
736entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
737mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
738prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
739command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
740``print`` function, making it inaccessible at the ``pdb`` prompt.
741
742(Contributed by Connor Osborn in :issue:`18764`.)
743
744
R David Murray809487e2013-12-22 20:49:40 -0500745.. _whatsnew-protocol-4:
746
747Pickle
748------
749
750protocol 4
751
752:mod:`pickle` now supports (but does not use by default) a new pickle protocol,
753protocol 4. This new protocol addresses a number of issues that were present
754in previous protocols, such as the serialization of nested classes, very large
755strings and containers, or classes whose :meth:`__new__` method takes
756keyword-only arguments. It also provides some efficiency improvements.
757
758.. seealso::
759
R David Murray061efb12013-12-24 12:35:59 -0500760 :pep:`3154` -- Pickle protocol 4
R David Murray809487e2013-12-22 20:49:40 -0500761 PEP written by Antoine Pitrou and implemented by Alexandre Vassalotti.
762
763
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200764poplib
765------
766
767New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
768an encrypted POP3 session.
769
770New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
771POP3 server.
772
773(Contributed by Lorenzo Catucci in :issue:`4473`.)
774
775
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300776pprint
777------
778
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200779The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300780sequences (:issue:`19132`).
781
782
Nick Coghlan367df122013-10-27 01:57:34 +1000783pydoc
784-----
785
786While significant changes have not been made to :mod:`pydoc` directly,
787its handling of custom ``__dir__`` methods and various descriptor
788behaviours has been improved substantially by the underlying changes in
789the :mod:`inspect` module.
790
791
Serhiy Storchaka32eddc12013-11-23 23:20:30 +0200792re
793--
794
795Added :func:`re.fullmatch` function and :meth:`regex.fullmatch` method,
796which anchor the pattern at both ends of the string to match.
797(Contributed by Matthew Barnett in :issue:`16203`.)
798
Ezio Melottidd7e2912013-11-25 23:20:20 +0200799The repr of :ref:`regex objects <re-objects>` now includes the pattern
800and the flags; the repr of :ref:`match objects <match-objects>` now
801includes the start, end, and the part of the string that matched.
Ezio Melottidd7e2912013-11-25 23:20:20 +0200802(Contributed by Serhiy Storchaka in :issue:`13592` and :issue:`17087`.)
803
804
Christian Heimesb7bd5df2013-10-22 11:21:54 +0200805resource
806--------
807
808New :func:`resource.prlimit` function and Linux specific constants.
809(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
810
R David Murray8e37d5d2013-04-13 14:49:48 -0400811smtplib
812-------
813
R David Murray8a345962013-04-14 06:46:35 -0400814:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400815both socket level errors and SMTP protocol level errors to be caught in one
816try/except statement by code that only cares whether or not an error occurred.
817(:issue:`2118`).
818
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200819
Victor Stinnerdaf45552013-08-28 00:53:59 +0200820socket
821------
822
Georg Brandl5642ff92013-09-15 10:37:57 +0200823Socket objects have new methods to get or set their :ref:`inheritable flag
824<fd_inheritance>`:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200825
826* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
827
Eli Bendersky34567ec2013-08-31 15:18:48 -0700828The ``socket.AF_*`` and ``socket.SOCK_*`` constants are enumeration values,
829using the new :mod:`enum` module. This allows descriptive reporting during
830debugging, instead of seeing integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200831
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200832ssl
833---
834
R David Murray748bad22013-12-20 17:08:39 -0500835.. _whatsnew-tls-11-12:
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200836
R David Murray748bad22013-12-20 17:08:39 -0500837:data:`~ssl.PROTOCOL_TLSv1_1` and :data:`~ssl.PROTOCOL_TLSv1_2` (TLSv1.1 and
838TLSv1.2 support) have been added; support for these protocols is only available if
839Python is linked with OpenSSL 1.0.1 or later. (Contributed by Michele Orrù and
840Antoine Pitrou in :issue:`16692`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200841
R David Murray748bad22013-12-20 17:08:39 -0500842New diagnostic functions :func:`~ssl.get_default_verify_paths`,
843:meth:`~ssl.SSLContext.cert_store_stats` and
844:meth:`~ssl.SSLContext.get_ca_certs` (Contributed by Christian Heimes
845in :issue:`18143` and :issue:`18147`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200846
R David Murray748bad22013-12-20 17:08:39 -0500847Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
848cert store. (Contributed by Christian Heimes in :issue:`17134`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200849
850Support for server-side SNI using the new
851:meth:`ssl.SSLContext.set_servername_callback` method.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200852(Contributed by Daniel Black in :issue:`8109`.)
853
854
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200855stat
856----
857
858The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
859implementation is required as most of the values aren't standardized and
860platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
861
862The module supports new file types: door, event port and whiteout.
863
864
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200865struct
866------
867
868Streaming struct unpacking using :func:`struct.iter_unpack`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200869(Contributed by Antoine Pitrou in :issue:`17804`.)
870
871
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300872sunau
873-----
874
875The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
876plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
877
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300878:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
879
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300880
R David Murrayd17aba72013-12-24 14:46:23 -0500881sys
882---
883
884New function :func:`sys.getallocatedblocks` returns the current number of
885blocks allocated by the interpreter (in CPython with the default
886``--with-pymalloc`` setting, this is allocations made through the
887:c:func:`PyObject_Malloc` API). This can be useful for tracking memory leaks,
888especially if automated via a test suite. (Contributed by Antoine Pitrou
889in :issue:`13390`.)
890
891
Andrew Kuchling173a1572013-09-15 18:15:56 -0400892traceback
893---------
894
895A new :func:`traceback.clear_frames` function takes a traceback object
896and clears the local variables in all of the frames it references,
897reducing the amount of memory consumed (:issue:`1565525`).
898
899
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200900urllib
901------
902
903Add support.for ``data:`` URLs in :mod:`urllib.request`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200904(Contributed by Mathias Panzenböck in :issue:`16423`.)
905
906
907unittest
908--------
909
910Support for easy dynamically-generated subtests using the
911:meth:`~unittest.TestCase.subTest` context manager.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200912(Contributed by Antoine Pitrou in :issue:`16997`.)
913
R David Murray8e37d5d2013-04-13 14:49:48 -0400914
R David Murray671cd322013-04-10 12:31:43 -0400915wave
916----
917
918The :meth:`~wave.getparams` method now returns a namedtuple rather than a
919plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
920
R David Murrayc91d5ee2013-07-31 13:46:08 -0400921:meth:`wave.open` now supports the context manager protocol. (Contributed
922by Claudiu Popa in :issue:`17616`.)
923
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200924
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200925weakref
926-------
927
928New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000929methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200930
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000931New :class:`~weakref.finalize` class makes it possible to register a callback
932to be invoked when an object is garbage collected, without needing to
933carefully manage the lifecycle of the weak reference itself. (Contributed by
934Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200935
936
937xml.etree
938---------
939
940Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -0700941:class:`~xml.etree.ElementTree.XMLPullParser`.
Eli Benderskyb5869342013-08-30 05:51:20 -0700942(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200943
Christian Tismer59202e52013-10-21 03:59:23 +0200944
945zipfile.PyZipfile
946-----------------
947
948Add a filter function to ignore some packages (tests for instance),
949:meth:`~zipfile.PyZipFile.writepy`.
Christian Tismer59202e52013-10-21 03:59:23 +0200950(Contributed by Christian Tismer in :issue:`19274`.)
951
952
Nick Coghlan367df122013-10-27 01:57:34 +1000953CPython Implementation Changes
954==============================
955
956
R David Murrayc16dfe12013-12-21 12:32:10 -0500957.. _whatsnew-pep-445:
Nick Coghlan367df122013-10-27 01:57:34 +1000958
959PEP 445: Customization of CPython memory allocators
960---------------------------------------------------
961
962:pep:`445` adds new C level interfaces to customize memory allocation in
963the CPython interpreter.
964
965.. seealso::
966
R David Murray061efb12013-12-24 12:35:59 -0500967 :pep:`445` -- Add new APIs to customize Python memory allocators
Nick Coghlan367df122013-10-27 01:57:34 +1000968 PEP written and implemented by Victor Stinner.
969
970
R David Murrayc16dfe12013-12-21 12:32:10 -0500971.. _whatsnew-pep-442:
Nick Coghlan367df122013-10-27 01:57:34 +1000972
973PEP 442: Safe object finalization
974---------------------------------
975
976:pep:`442` removes the current limitations and quirks of object finalization
977in CPython. With it, objects with :meth:`__del__` methods, as well as
978generators with :keyword:`finally` clauses, can be finalized when they are
979part of a reference cycle.
980
981As part of this change, module globals are no longer forcibly set to
982:const:`None` during interpreter shutdown in most cases, instead relying
R David Murrayca794612013-12-22 14:05:11 -0500983on the normal operation of the cyclic garbage collector. This avoids a
984whole class of interpreter-shutdown-time errors, usually involving
985``__del__`` methods, that have plagued Python since the cyclic GC
986was first introduced.
Nick Coghlan367df122013-10-27 01:57:34 +1000987
988.. seealso::
989
R David Murray061efb12013-12-24 12:35:59 -0500990 :pep:`442` -- Safe object finalization
Nick Coghlan367df122013-10-27 01:57:34 +1000991 PEP written and implemented by Antoine Pitrou.
992
993
R David Murrayc16dfe12013-12-21 12:32:10 -0500994.. _whatsnew-pep-456:
995
996PEP 456: Secure and Interchangeable Hash Algorithm
997--------------------------------------------------
998
999:pep:`456` follows up on earlier security fix work done on Python's hash
1000algorithm to address certain DOS attacks to which public facing APIs backed by
1001dictionary lookups may be subject. (See :issue:`14621` for the start of the
1002current round of improvements.) The PEP unifies CPython's hash code to make it
1003easier for a packager to substitute a different hash algorithm, and switches
1004Python's default implementation to a SipHash implementation on platforms that
1005have a 64 bit data type. Any performance differences in comparison with the
1006older FNV algorithm are trivial.
1007
1008The PEP adds additional fields to the :func:`sys.hash_info` struct sequence to
1009describe the hash algorithm in use by the currently executing binary. Otherwise,
1010the PEP does not alter any existing CPython APIs.
1011
1012
R David Murray6dd18302013-12-24 12:23:56 -05001013.. _whatsnew-pep-436:
1014
1015PEP 436: Argument Clinic
1016------------------------
1017
1018"Argument Clinic" (:pep:`436`) is now part of the CPython build process
1019and can be used to simplify the process of defining and maintaining
1020accurate signatures for builtins and standard library extension modules
1021implemented in C.
1022
1023.. note::
1024 The Argument Clinic PEP is not fully up to date with the state of the
1025 implementation. This has been deemed acceptable by the release manager
1026 and core development team in this case, as Argument Clinic will not
1027 be made available as a public API for third party use in Python 3.4.
1028
1029.. seealso::
1030
R David Murray061efb12013-12-24 12:35:59 -05001031 :pep:`436` -- The Argument Clinic DSL
R David Murray6dd18302013-12-24 12:23:56 -05001032 PEP written and implemented by Larry Hastings.
1033
1034
Nick Coghlan367df122013-10-27 01:57:34 +10001035Other build and C API changes
1036-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +02001037
R David Murrayd91ba202013-12-24 12:13:44 -05001038Other changes to Python's build process and to the C API include:
Georg Brandlb80f5112012-09-30 09:11:58 +02001039
Nick Coghlan7d270ee2013-10-17 22:35:35 +10001040* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
1041 allows applications embedding the CPython interpreter to reliably force
1042 a particular encoding and error handler for the standard streams
1043 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +02001044
Nick Coghlan0acceb72013-10-20 13:22:21 +10001045* Most Python C APIs that don't mutate string arguments are now correctly
1046 marked as accepting ``const char *`` rather than ``char *`` (Contributed
1047 by Serhiy Storchaka in :issue:`1772673`).
1048
R David Murrayd91ba202013-12-24 12:13:44 -05001049* New shell version of ``python-config``; can be used even when a python
1050 interpreter is not available (for example, in cross compilation scenarios).
1051
Georg Brandlb80f5112012-09-30 09:11:58 +02001052
R David Murraybcaaecf2013-12-23 21:23:36 -05001053Other improvements
1054==================
1055
1056* Tab-completion is now enabled by default in the interactive interpreter.
1057 (Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
1058
1059* Invoking the Python interpreter with ``--version`` now outputs the version to
1060 standard output instead of standard error (:issue:`18338`). Similar changes
1061 were made to :mod:`argparse` (:issue:`18920`) and other modules that have
1062 script-like invocation capabilities (:issue:`18922`).
1063
R David Murray72420ff2013-12-24 10:46:44 -05001064* The CPython Windows installer now adds ``.py`` to the :envvar:`PATHEXT`
1065 variable when extensions are registered, allowing users to run a python
1066 script at the windows command prompt by just typing its name without the
1067 ``.py`` extension. (Contributed by Paul Moore in :issue:`18569`.)
1068
R David Murrayd17aba72013-12-24 14:46:23 -05001069* A new ``make`` target `coverage-report
1070 <http://docs.python.org/devguide/coverage.html#measuring-coverage-of-c-code-with-gcov-and-lcov>`_
1071 will build python, run the test suite, and generate an HTML coverage report
1072 for the C codebase using ``gcov`` and `lcov
1073 <http://ltp.sourceforge.net/coverage/lcov.php>`_.
1074
1075* The ``-R`` option to the :ref:`python regression test suite <regrtest>` now
1076 also checks for memory allocation leaks, using
1077 :func:`sys.getallocatedblocks()`. (Contributed by Antoine Pitrou in
1078 :issue:`13390`).
1079
R David Murraybcaaecf2013-12-23 21:23:36 -05001080
1081Optimizations
1082=============
1083
1084Major performance enhancements have been added:
1085
1086* The UTF-32 decoder is now 3x to 4x faster.
1087
1088* The cost of hash collisions for sets is now reduced. Each hash table
1089 probe now checks a series of consecutive, adjacent key/hash pairs before
1090 continuing to make random probes through the hash table. This exploits
1091 cache locality to make collision resolution less expensive.
1092
1093 The collision resolution scheme can be described as a hybrid of linear
1094 probing and open addressing. The number of additional linear probes
1095 defaults to nine. This can be changed at compile-time by defining
1096 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
1097 linear probing entirely.
1098
1099 (Contributed by Raymond Hettinger in :issue:`18771`.)
1100
1101* The interpreter starts about 30% faster. A couple of measures lead to the
1102 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
1103 :mod:`collections` and :mod:`locale` modules and their dependencies are no
1104 longer imported by default. The marshal module has been improved to load
1105 compiled Python code faster.
1106
1107 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
1108 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
1109 :issue:`9548`)
1110
1111
Georg Brandlb80f5112012-09-30 09:11:58 +02001112Deprecated
1113==========
1114
1115Unsupported Operating Systems
1116-----------------------------
1117
Victor Stinnerf3fd13b2013-08-04 10:30:57 +02001118* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +02001119* Windows 2000
Christian Heimesaf01f662013-12-21 16:19:10 +01001120* VMS
Georg Brandlb80f5112012-09-30 09:11:58 +02001121
1122
1123Deprecated Python modules, functions and methods
1124------------------------------------------------
1125
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -04001126* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -04001127 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
1128 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +02001129
Brett Cannon82b3d6a2013-06-14 22:37:11 -04001130* :func:`importlib.util.module_for_loader` is pending deprecation. Using
1131 :func:`importlib.util.module_to_load` and
1132 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
1133 to more easily customize module loading.
1134
Brett Cannone4f41de2013-06-16 13:13:40 -04001135* The :mod:`imp` module is pending deprecation. To keep compatibility with
1136 Python 2/3 code bases, the module's removal is currently not scheduled.
1137
Brett Cannon1448ecf2013-10-04 11:38:59 -04001138* The :mod:`formatter` module is pending deprecation and is slated for removal
1139 in Python 3.6.
1140
Christian Heimes634919a2013-11-20 17:23:06 +01001141* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
1142 require an explicit digest name or constructor as *digestmod* argument.
1143
Georg Brandlb80f5112012-09-30 09:11:58 +02001144
1145Deprecated functions and types of the C API
1146-------------------------------------------
1147
Victor Stinner3dd263f2013-10-23 18:54:43 +02001148* The ``PyThreadState.tick_counter`` field has been removed: its value was
1149 meaningless since Python 3.2 ("new GIL").
Georg Brandlb80f5112012-09-30 09:11:58 +02001150
1151
1152Deprecated features
1153-------------------
1154
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +02001155* The site module adding a "site-python" directory to sys.path, if it
1156 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +02001157
1158
R David Murray72420ff2013-12-24 10:46:44 -05001159Removed
1160=======
1161
1162* The unmaintained ``Misc/TextMate`` and ``Misc/vim`` directories have been
R David Murrayd91ba202013-12-24 12:13:44 -05001163 removed (see the `devguide <http://docs.python.org/devguide>`_
1164 for what to use instead).
R David Murray72420ff2013-12-24 10:46:44 -05001165
R David Murrayd91ba202013-12-24 12:13:44 -05001166* OS/2 support code has been removed from the source tree and build tools
1167 (:issue:`16135`).
1168
1169* Windows 2000 support code has been removed from the source tree and build
1170 tools (changeset e52df05b496a).
R David Murray72420ff2013-12-24 10:46:44 -05001171
R David Murrayd17aba72013-12-24 14:46:23 -05001172* The ``SO`` makefile macro is removed (it was replaced by the
1173 ``SHLIB_SUFFIX`` and ``EXT_SUFFIX`` macros) (:issue:`16754`).
1174
R David Murray72420ff2013-12-24 10:46:44 -05001175
Benjamin Peterson88f3b232012-10-04 12:45:10 -04001176Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +02001177=====================
1178
Victor Stinner774b2e02013-12-13 14:33:01 +01001179Changes in the Python API
1180-------------------------
1181
Georg Brandlb80f5112012-09-30 09:11:58 +02001182This section lists previously described changes and other bugfixes
1183that may require changes to your code.
1184
Brett Cannon777622b2013-04-09 17:03:10 -04001185* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
1186 exception or return a default value instead of raising
1187 :exc:`NotImplementedError` blindly. This will only affect code calling
1188 :func:`super` and falling through all the way to the ABCs. For compatibility,
1189 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001190
1191* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
1192 attributes to ``None`` by default. To determine if these attributes were set
1193 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001194 ``getattr(module, '__loader__', None) is not None``.
1195
1196* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
1197 ``__package__`` unconditionally to properly support reloading. If this is not
1198 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -04001199 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -04001200
1201* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
1202 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
1203
Brett Cannon1448ecf2013-10-04 11:38:59 -04001204* Frozen packages no longer set ``__path__`` to a list containing the package
1205 name but an empty list instead. Determing if a module is a package should be
1206 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -04001207
Brett Cannon33915eb2013-06-14 18:33:00 -04001208* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
1209 it would write to is a symlink or a non-regular file. This is to act as a
1210 warning that import will overwrite those files with a regular file regardless
1211 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -04001212
1213* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
1214 :exc:`ImportError` when the source code being loaded triggers a
1215 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
1216 meant to be raised only when source code cannot be found but it should, it was
1217 felt to be over-reaching/overloading of that meaning when the source code is
1218 found but improperly structured. If you were catching ImportError before and
1219 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +02001220 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +10001221
1222* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
Nick Coghlan367df122013-10-27 01:57:34 +10001223 set the ``__wrapped__`` attribute to the function being wrapper, even if
1224 that function also had its ``__wrapped__`` attribute set. This means
1225 ``__wrapped__`` attributes now correctly link a stack of decorated
1226 functions rather than every ``__wrapped__`` attribute in the chain
1227 referring to the innermost function. Introspection libraries that
1228 assumed the previous behaviour was intentional can use
1229 :func:`inspect.unwrap` to access the first function in the chain that has
1230 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +02001231
Georg Brandl0f5bff22013-10-19 17:46:38 +02001232* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -04001233 directory to objects in :data:`sys.path_hooks` for the empty string. This
1234 results in :data:`sys.path_importer_cache` never containing ``''``, thus
1235 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
1236 will not find all keys. A module's ``__file__`` when imported in the current
1237 working directory will also now have an absolute path, including when using
1238 ``-m`` with the interpreter (this does not influence when the path to a file
1239 is specified on the command-line).
Victor Stinner2748bc72013-12-13 10:57:04 +01001240
Victor Stinner774b2e02013-12-13 14:33:01 +01001241Changes in the C API
1242--------------------
1243
1244* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
1245 argument is not set. Previously only ``NULL`` was returned with no exception
1246 set.
1247
1248* The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
1249 now be a string allocated by :c:func:`PyMem_RawMalloc` or
1250 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
1251 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
1252
1253* :c:func:`PyThread_set_key_value` now always set the value. In Python
Victor Stinner2748bc72013-12-13 10:57:04 +01001254 3.3, the function did nothing if the key already exists (if the current
1255 value is a non-NULL pointer).
1256
Victor Stinner774b2e02013-12-13 14:33:01 +01001257* The ``f_tstate`` (thread state) field of the :c:type:`PyFrameObject`
1258 structure has been removed to fix a bug: see :issue:`14432` for the
1259 rationale.
1260