blob: fe98630fd27fb3598dbe50ed8cce00863bd1bae6 [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
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 Murray3f122d62013-12-22 21:09:16 -0500149Please read on for a comprehensive list of user-facing changes, including
150sections on deprecations and porting issues.
Georg Brandlb80f5112012-09-30 09:11:58 +0200151
Nick Coghland0cf0632013-11-11 22:11:55 +1000152
R David Murray809487e2013-12-22 20:49:40 -0500153New expected features for Python implementations
154================================================
155
R David Murray68790662013-12-23 11:17:51 -0500156.. _whatsnew-pep-453:
157
Nick Coghland0cf0632013-11-11 22:11:55 +1000158PEP 453: Explicit bootstrapping of pip in Python installations
R David Murray809487e2013-12-22 20:49:40 -0500159--------------------------------------------------------------
Nick Coghland0cf0632013-11-11 22:11:55 +1000160
161The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
162cross-platform mechanism to boostrap the pip installer into Python
163installations and virtual environments.
164
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000165The :mod:`venv` module and the :command:`pyvenv` utility make use of this
166module to make ``pip`` readily available in virtual environments. When
167using the command line interface, ``pip`` is installed by default, while
168for the module API installation of ``pip`` must be requested explicitly.
169
170For CPython source builds on POSIX systems, the ``make install`` and
171``make altinstall`` commands bootstrap ``pip`` by default. This behaviour
172can be controlled through configure options, and overridden through
173Makefile options.
174
Ned Deily44a0db02013-11-22 22:39:09 -0800175On Windows and Mac OS X, the CPython installers now offer the option to
176install ``pip`` along with CPython itself.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000177
R David Murray68790662013-12-23 11:17:51 -0500178As `discussed in the PEP`__, platform packagers may choose not to install
179``pip`` by default, as long as the command ``pip``, when invoked, provides
180clear and simple directions on how to install ``pip`` on the platform.
181
182__ http://www.python.org/dev/peps/pep-0453/#recommendations-for-downstream-distributors
183
Nick Coghland0cf0632013-11-11 22:11:55 +1000184.. note::
185
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000186 The implementation of PEP 453 is still a work in progress. Refer to
187 :issue:`19347` for the progress on additional steps:
Nick Coghland0cf0632013-11-11 22:11:55 +1000188
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000189 * Having the binary installers install ``pip`` by default
190 * Recommending the use of ``pip`` in the "Installing Python Module"
191 documentation.
Nick Coghland0cf0632013-11-11 22:11:55 +1000192
193.. seealso::
194
195 :pep:`453` - Explicit bootstrapping of pip in Python installations
196 PEP written by Donald Stufft and Nick Coghlan, implemented by
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000197 Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily.
Nick Coghland0cf0632013-11-11 22:11:55 +1000198
199
R David Murrayf9909c22013-12-20 14:50:12 -0500200.. _whatsnew-pep-446:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200201
202PEP 446: Make newly created file descriptors non-inheritable
R David Murray809487e2013-12-22 20:49:40 -0500203------------------------------------------------------------
Victor Stinnerdaf45552013-08-28 00:53:59 +0200204
Nick Coghlan367df122013-10-27 01:57:34 +1000205:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200206<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200207
208* :func:`os.get_inheritable`, :func:`os.set_inheritable`
209* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
210* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
211
Antoine Pitrou796564c2013-07-30 19:59:21 +0200212.. seealso::
213
Nick Coghlan367df122013-10-27 01:57:34 +1000214 :pep:`446` - Make newly created file descriptors non-inheritable
215 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200216
Georg Brandlb80f5112012-09-30 09:11:58 +0200217
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000218.. _codec-handling-improvements:
219
220Improvements to codec handling
R David Murray809487e2013-12-22 20:49:40 -0500221------------------------------
Nick Coghlan8b097b42013-11-13 23:49:21 +1000222
223Since it was first introduced, the :mod:`codecs` module has always been
224intended to operate as a type-neutral dynamic encoding and decoding
225system. However, its close coupling with the Python text model, especially
226the type restricted convenience methods on the builtin :class:`str`,
227:class:`bytes` and :class:`bytearray` types, has historically obscured that
228fact.
229
230As a key step in clarifying the situation, the :meth:`codecs.encode` and
231:meth:`codecs.decode` convenience functions are now properly documented in
232Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000233module (and have been covered by the regression test suite) since Python 2.4,
Nick Coghlan8b097b42013-11-13 23:49:21 +1000234but were previously only discoverable through runtime introspection.
235
236Unlike the convenience methods on :class:`str`, :class:`bytes` and
237:class:`bytearray`, these convenience functions support arbitrary codecs
238in both Python 2 and Python 3, rather than being limited to Unicode text
239encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
240(in Python 2).
241
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000242In Python 3.4, the interpreter is able to identify the known non-text
243encodings provided in the standard library and direct users towards these
244general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000245
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000246 >>> b"abcdef".decode("hex")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000247 Traceback (most recent call last):
248 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000249 LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000250
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000251 >>> "hello".encode("rot13")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000252 Traceback (most recent call last):
253 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000254 LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000255
256In a related change, whenever it is feasible without breaking backwards
257compatibility, exceptions raised during encoding and decoding operations
258will be wrapped in a chained exception of the same type that mentions the
259name of the codec responsible for producing the error::
260
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000261 >>> import codecs
262
263 >>> codecs.decode(b"abcdefgh", "hex")
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000264 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000265
266 The above exception was the direct cause of the following exception:
267
268 Traceback (most recent call last):
269 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000270 binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000271
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000272 >>> codecs.encode("hello", "bz2")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000273 TypeError: 'str' does not support the buffer interface
274
275 The above exception was the direct cause of the following exception:
276
277 Traceback (most recent call last):
278 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000279 TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not support the buffer interface)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000280
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000281Finally, as the examples above show, these improvements have permitted
282the restoration of the convenience aliases for the non-Unicode codecs that
283were themselves restored in Python 3.2. This means that encoding binary data
284to and from its hexadecimal representation (for example) can now be written
285as::
286
287 >>> from codecs import encode, decode
288 >>> encode(b"hello", "hex")
289 b'68656c6c6f'
290 >>> decode(b"68656c6c6f", "hex")
291 b'hello'
292
293The binary and text transforms provided in the standard library are detailed
294in :ref:`binary-transforms` and :ref:`text-transforms`.
295
R David Murray9217dad2013-12-23 21:08:28 -0500296(Contributed by Nick Coghlan in :issue:`7475`, , :issue:`17827`,
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000297:issue:`17828` and :issue:`19619`)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000298
R David Murray809487e2013-12-22 20:49:40 -0500299.. _whatsnew-pep-451:
Eric Snowb523f842013-11-22 09:05:39 -0700300
301PEP 451: A ModuleSpec Type for the Import System
R David Murray809487e2013-12-22 20:49:40 -0500302------------------------------------------------
Eric Snowb523f842013-11-22 09:05:39 -0700303
R David Murrayf85b2a82013-12-22 21:06:13 -0500304:pep:`451` provides an encapsulation of the information about a module that the
305import machinery will use to load it (that is, a module specification). This
306helps simplify both the import implementation and several import-related APIs.
307The change is also a stepping stone for `several future import-related
308improvements`__.
Eric Snowb523f842013-11-22 09:05:39 -0700309
R David Murraye9b74d42013-12-22 21:05:04 -0500310__ https://mail.python.org/pipermail/python-dev/2013-November/130111.html
Eric Snowb523f842013-11-22 09:05:39 -0700311
312The public-facing changes from the PEP are entirely backward-compatible.
R David Murrayf85b2a82013-12-22 21:06:13 -0500313Furthermore, they should be transparent to everyone but importer authors. Key
314finder and loader methods have been deprecated, but they will continue working.
315New importers should use the new methods described in the PEP. Existing
316importers should be updated to implement the new methods.
Eric Snowb523f842013-11-22 09:05:39 -0700317
Nick Coghlan8b097b42013-11-13 23:49:21 +1000318
Georg Brandlb80f5112012-09-30 09:11:58 +0200319Other Language Changes
R David Murray809487e2013-12-22 20:49:40 -0500320----------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200321
322Some smaller changes made to the core Python language are:
323
Ezio Melotti34808e22013-10-12 16:36:13 +0300324* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200325
R David Murray9a2f1392013-06-28 13:31:19 -0400326* :func:`min` and :func:`max` now accept a *default* argument that can be used
327 to specify the value they return if the iterable they are evaluating has no
328 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200329
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200330* Module objects are now :mod:`weakref`'able.
331
Nick Coghlan0acceb72013-10-20 13:22:21 +1000332* Module ``__file__`` attributes (and related values) should now always
333 contain absolute paths by default, with the sole exception of
334 ``__main__.__file__`` when a script has been executed directly using
335 a relative path (Contributed by Brett Cannon in :issue:`18416`).
336
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200337* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
338 encoding and decoding unless the ``surrogatepass`` error handler is used,
339 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
340 and the UTF-16 encoder that produces them while encoding non-BMP characters.
341 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
342 :issue:`12892`.
343
Georg Brandlb80f5112012-09-30 09:11:58 +0200344
345New Modules
346===========
347
Nick Coghlan0acceb72013-10-20 13:22:21 +1000348
R David Murray9217dad2013-12-23 21:08:28 -0500349.. _whatsnew-asyncio:
350
Nick Coghlan0acceb72013-10-20 13:22:21 +1000351asyncio
352-------
353
354The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
355pluggable event loop model for Python, providing solid asynchronous IO
356support in the standard library, and making it easier for other event loop
357implementations to interoperate with the standard library and each other.
358
359For Python 3.4, this module is considered a :term:`provisional API`.
360
Nick Coghlan367df122013-10-27 01:57:34 +1000361.. seealso::
362
363 :pep:`3156` - Asynchronous IO Support Rebooted: the "asyncio" Module
364 PEP written and implementation led by Guido van Rossum.
365
R David Murray68790662013-12-23 11:17:51 -0500366
R David Murray9217dad2013-12-23 21:08:28 -0500367.. _whatsnew-ensurepip:
R David Murray68790662013-12-23 11:17:51 -0500368
369ensurepip
370---------
371
372The new :mod:`ensurepip` module is the primary infrastructure for the
373:pep:`453` implementation. In the normal course of events end users will not
374need to interact with this module, but it can be used to manually bootstrap
375``pip`` if the automated bootstrapping into an installation or virtual
376environment was declined.
377
378:mod:`ensurepip` includes a bundled copy of ``pip``, up-to-date as of the first
379release candidate of the release of CPython with which it ships (this applies
380to both maintenance releases and feature releases). ``ensurepip`` does not
381access the internet. (If the installation has Internet access, it is of course
382possible to upgrade ``pip`` to a release more recent than the bundled ``pip``
383by using the bundled ``pip`` command itself once it is installed.)
384
385The module is named *ensure*\ pip because if called when ``pip`` is already
386installed, it does nothing. It also has an ``--upgrade`` option that will
387cause it to install the bundled copy of ``pip`` if the existing installed
388version of ``pip`` is older than the bundled copy.
389
390
R David Murray9217dad2013-12-23 21:08:28 -0500391.. _whatsnew-enum:
392
Nick Coghlan0acceb72013-10-20 13:22:21 +1000393enum
394----
395
Nick Coghlan367df122013-10-27 01:57:34 +1000396The new :mod:`enum` module (defined in :pep:`435`) provides a standard
397implementation of enumeration types, allowing other modules (such as
398:mod:`socket`) to provide more informative error messages and better
399debugging support by replacing opaque integer constants with backwards
400compatible enumeration values.
401
402.. seealso::
403
404 :pep:`435` - Adding an Enum type to the Python standard library
405 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
406 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000407
408
R David Murray9217dad2013-12-23 21:08:28 -0500409.. _whatsnew-pathlib:
410
Antoine Pitrou31119e42013-11-22 17:38:12 +0100411pathlib
412-------
413
414The new :mod:`pathlib` module offers classes representing filesystem paths
415with semantics appropriate for different operating systems. Path classes are
416divided between *pure paths*, which provide purely computational operations
417without I/O, and *concrete paths*, which inherit from pure paths but also
418provide I/O operations.
419
420For Python 3.4, this module is considered a :term:`provisional API`.
421
422.. seealso::
423
424 :pep:`428` - The pathlib module -- object-oriented filesystem paths
425 PEP written and implemented by Antoine Pitrou.
426
427
R David Murrayf9976e72013-12-23 10:32:02 -0500428.. _whatsnew-selectors:
429
Charles-François Natali243d8d82013-09-04 19:02:49 +0200430selectors
431---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200432
Nick Coghlan0acceb72013-10-20 13:22:21 +1000433The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
434allows high-level and efficient I/O multiplexing, built upon the
435:mod:`select` module primitives.
436
437
R David Murray9217dad2013-12-23 21:08:28 -0500438.. _whatsnew-statistics:
439
Nick Coghlan0acceb72013-10-20 13:22:21 +1000440statistics
441----------
442
443The new :mod:`statistics` module (defined in :pep:`450`) offers some core
444statistics functionality directly in the standard library. This module
445supports calculation of the mean, median, mode, variance and standard
446deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200447
Nick Coghlan367df122013-10-27 01:57:34 +1000448.. seealso::
449
450 :pep:`450` - Adding A Statistics Module To The Standard Library
451 PEP written and implemented by Steven D'Aprano
452
R David Murray9217dad2013-12-23 21:08:28 -0500453.. _whatsnew-tracemalloc:
Georg Brandlb80f5112012-09-30 09:11:58 +0200454
Victor Stinnerd2736af2013-11-25 09:40:27 +0100455tracemalloc
456-----------
457
458The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to
459trace memory blocks allocated by Python. It provides the following information:
460
461* Traceback where an object was allocated
462* Statistics on allocated memory blocks per filename and per line number:
463 total size, number and average size of allocated memory blocks
464* Compute the differences between two snapshots to detect memory leaks
465
466.. seealso::
467
468 :pep:`454` - Add a new tracemalloc module to trace Python memory allocations
469 PEP written and implemented by Victor Stinner
470
471
Georg Brandlb80f5112012-09-30 09:11:58 +0200472Improved Modules
473================
474
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200475aifc
476----
477
478The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
479plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
480
481
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300482audioop
483-------
484
485Added support for 24-bit samples (:issue:`12866`).
486
Serhiy Storchaka3062c9a2013-11-23 22:26:01 +0200487Added the :func:`~audioop.byteswap` function to convert big-endian samples
488to little-endian and vice versa (:issue:`19641`).
489
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300490
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000491base64
492------
493
494The encoding and decoding functions in :mod:`base64` now accept any
495:term:`bytes-like object` in cases where it previously required a
Georg Brandled007d52013-11-24 16:09:26 +0100496:class:`bytes` or :class:`bytearray` instance (:issue:`17839`).
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000497
498
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200499colorsys
500--------
501
502The number of digits in the coefficients for the RGB --- YIQ conversions have
503been expanded so that they match the FCC NTSC versions. The change in
504results should be less than 1% and may better match results found elsewhere.
505
R David Murray8e37d5d2013-04-13 14:49:48 -0400506
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000507contextlib
508----------
509
Nick Coghlan240f86d2013-10-17 23:40:57 +1000510The new :class:`contextlib.suppress` context manager helps to clarify the
511intent of code that deliberately suppresses exceptions from a single
512statement. (Contributed by Raymond Hettinger in :issue:`15806` and
513Zero Piraeus in :issue:`19266`)
514
Victor Stinner6633c392013-10-21 13:27:11 +0200515The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000516for utility scripts to handle inflexible APIs that don't provide any
517options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000518other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
519this context manager is also useful for checking expected output from
520command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
521
522The :mod:`contextlib` documentation has also been updated to include a
523:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
524differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000525
526
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000527dis
528---
529
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300530The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
531that provides details of individual bytecode operations and a
532:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000533given piece of Python code. The various display tools in the :mod:`dis`
534module have been updated to be based on these new components.
535
536The new :class:`dis.Bytecode` class provides an object-oriented API for
537inspecting bytecode, both in human-readable form and for iterating over
538instructions.
539
Nick Coghlan50c48b82013-11-23 00:57:00 +1000540(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
541and Claudiu Popa in :issue:`17916`)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000542
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200543
R David Murray5a9d7062012-11-21 15:09:21 -0500544doctest
545-------
546
R David Murray5707d502013-06-23 14:24:13 -0400547Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
548failure is detected. (Contributed by R. David Murray and Daniel Urban in
549:issue:`16522`.)
550
551Updated the doctest command line interface to use :mod:`argparse`, and added
552``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
553be specified on the command line, and ``-f`` is a shorthand for ``-o
554FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
555CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200556
R David Murray8e37d5d2013-04-13 14:49:48 -0400557
R David Murraybb17d2b2013-08-09 16:15:28 -0400558email
559-----
560
561:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
562override the default policy of the message when generating a string
563representation of it. This means that ``as_string`` can now be used in more
564circumstances, instead of having to create and use a :mod:`~email.generator` in
565order to pass formatting parameters to its ``flatten`` method.
566
567New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
568representation of the message in a fashion similar to how ``as_string``
569produces a string representation. It does not accept the *maxheaderlen*
570argument, but does accept the *unixfrom* and *policy* arguments. The
571:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
572calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
573result: a bytes object containing the fully formatted message.
574
575(Contributed by R. David Murray in :issue:`18600`.)
576
R David Murray26b80cfd2013-12-20 17:26:52 -0500577.. _whatsnew_email_contentmanager:
578
R David Murray3da240f2013-10-16 22:48:40 -0400579A pair of new subclasses of :class:`~email.message.Message` have been added,
580along with a new sub-module, :mod:`~email.contentmanager`. All documentation
581is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000582:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400583number of new methods that make extracting content from and inserting content
584into email messages much easier. See the :mod:`~email.contentmanager`
585documentation for details.
586
587These API additions complete the bulk of the work that was planned as part of
588the email6 project. The currently provisional API is scheduled to become final
589in Python 3.5 (possibly with a few minor additions in the area of error
590handling).
591
592(Contributed by R. David Murray in :issue:`18891`.)
593
R David Murraybb17d2b2013-08-09 16:15:28 -0400594
Victor Stinner854ffcb2013-06-21 00:36:30 +0200595functools
596---------
597
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000598The new :func:`~functools.partialmethod` descriptor bring partial argument
599application to descriptors, just as :func:`~functools.partial` provides
600for normal callables. The new descriptor also makes it easier to get
601arbitrary callables (including :func:`~functools.partial` instances)
602to behave like normal instance methods when included in a class definition.
603
604(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
605
R David Murray0a102162013-12-20 15:00:54 -0500606.. _whatsnew-singledispatch:
607
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000608The new :func:`~functools.singledispatch` decorator brings support for
609single-dispatch generic functions to the Python standard library. Where
610object oriented programming focuses on grouping multiple operations on a
611common set of data into a class, a generic function focuses on grouping
612multiple implementations of an operation that allows it to work with
613*different* kinds of data.
614
615.. seealso::
616
617 :pep:`443` - Single-dispatch generic functions
618 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200619
Nick Coghlane8c45d62013-07-28 20:00:01 +1000620
Christian Heimese92ef132013-10-13 00:52:43 +0200621hashlib
622-------
623
624New :func:`hashlib.pbkdf2_hmac` function.
Christian Heimese92ef132013-10-13 00:52:43 +0200625(Contributed by Christian Heimes in :issue:`18582`)
626
R David Murraycde1a062013-12-20 16:33:52 -0500627.. _whatsnew-sha3:
628
629New :ref:`hash algorithms <hash-algorithms>` ``sah3_224()``, ``sha3_256()``,
630``sha3_384()``, and ``sha3_512()``. (Contributed by Christian Heimes in
631:issue:`16113`.)
632
Christian Heimese92ef132013-10-13 00:52:43 +0200633
Ezio Melotti250a06c2013-11-25 06:18:47 +0200634html
635----
636
637Added a new :func:`html.unescape` function that converts HTML5 character
638references to the corresponding Unicode characters.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200639(Contributed by Ezio Melotti in :issue:`2927`)
640
641Added a new *convert_charrefs* keyword argument to
642:class:`~html.parser.HTMLParser` that, when ``True``, automatically converts
643all character references. For backward-compatibility, its value defaults
644to ``False``, but it will change to ``True`` in future versions, so you
645are invited to set it explicitly and update your code to use this new feature.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200646(Contributed by Ezio Melotti in :issue:`13633`)
647
648The *strict* argument of :class:`~html.parser.HTMLParser` is now deprecated.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200649(Contributed by Ezio Melotti in :issue:`15114`)
650
651
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200652inspect
653-------
654
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000655
Nick Coghlan367df122013-10-27 01:57:34 +1000656The inspect module now offers a basic :ref:`command line interface
657<inspect-module-cli>` to quickly display source code and other
658information for modules, classes and functions. (Contributed by Claudiu Popa
659and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000660
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200661:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
662created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000663``__wrapped__`` attribute on a wrapper function). (Contributed by
664Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
665
666As part of the implementation of the new :mod:`enum` module, the
667:mod:`inspect` module now has substantially better support for custom
668``__dir__`` methods and dynamic class attributes provided through
669metaclasses (Contributed by Ethan Furman in :issue:`18929` and
670:issue:`19030`)
671
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200672
R David Murray8f7664a2013-12-22 20:40:11 -0500673.. _whatsnew-marshal-3:
674
675marshal
676-------
677
678The default :mod:`marshal` version has been bumped to 3. The code implementing
679the new version restores the Python2 behavior of recording only one copy of
680interned strings and preserving the interning on deserialization, and extends
681this "one copy" ability to any object type (including handling recursive
682references). This reduces both the size of ``.pyc`` files and the amount of
683memory a module occupies in memory when it is loaded from a ``.pyc`` (or
684``.pyo``) file. (Contributed by Kristján Valur Jónsson in :issue:`16475`.)
685
686
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200687mmap
688----
689
690mmap objects can now be weakref'ed.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200691(Contributed by Valerie Lambert in :issue:`4885`.)
692
693
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100694multiprocessing
695---------------
696
R David Murrayac186222013-12-20 17:23:57 -0500697.. _whatsnew-multiprocessing-no-fork:
698
699On Unix, two new :ref:`start methods <multiprocessing-start-methods>`
700(``spawn`` and ``forkserver``) have been added for starting processes using
701:mod:`multiprocessing`. These make the mixing of processes with threads more
702robust, and the ``spawn`` method matches the semantics that multiprocessing has
703always used on Windows. (Contributed by Richard Oudkerk in :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100704
705Also, except when using the old *fork* start method, child processes
R David Murrayac186222013-12-20 17:23:57 -0500706will no longer inherit unneeded handles/file descriptors from their parents
707(part of :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100708
Nick Coghlan9a767352013-12-17 22:17:26 +1000709:mod:`multiprocessing` now relies on :mod:`runpy` (which implements the
710``-m`` switch) to initialise ``__main__`` appropriately in child processes
711when using the ``spawn`` or ``forkserver`` start methods. This resolves some
712edge cases where combining multiprocessing, the ``-m`` command line switch
713and explicit relative imports could cause obscure failures in child
714processes. (Contributed by Nick Coghlan in :issue:`19946`)
715
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100716
Victor Stinnerdaf45552013-08-28 00:53:59 +0200717os
718--
719
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200720New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200721descriptors or a Windows handle:
722
723* :func:`os.get_inheritable`, :func:`os.set_inheritable`
724* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
725
726
R David Murray78d692f2013-10-10 17:23:26 -0400727pdb
728---
729
730The ``print`` command has been removed from :mod:`pdb`, restoring access to the
731``print`` function.
732
733Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
734entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
735mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
736prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
737command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
738``print`` function, making it inaccessible at the ``pdb`` prompt.
739
740(Contributed by Connor Osborn in :issue:`18764`.)
741
742
R David Murray809487e2013-12-22 20:49:40 -0500743.. _whatsnew-protocol-4:
744
745Pickle
746------
747
748protocol 4
749
750:mod:`pickle` now supports (but does not use by default) a new pickle protocol,
751protocol 4. This new protocol addresses a number of issues that were present
752in previous protocols, such as the serialization of nested classes, very large
753strings and containers, or classes whose :meth:`__new__` method takes
754keyword-only arguments. It also provides some efficiency improvements.
755
756.. seealso::
757
758 :pep:`3154` - Pickle protocol 4
759 PEP written by Antoine Pitrou and implemented by Alexandre Vassalotti.
760
761
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200762poplib
763------
764
765New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
766an encrypted POP3 session.
767
768New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
769POP3 server.
770
771(Contributed by Lorenzo Catucci in :issue:`4473`.)
772
773
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300774pprint
775------
776
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200777The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300778sequences (:issue:`19132`).
779
780
Nick Coghlan367df122013-10-27 01:57:34 +1000781pydoc
782-----
783
784While significant changes have not been made to :mod:`pydoc` directly,
785its handling of custom ``__dir__`` methods and various descriptor
786behaviours has been improved substantially by the underlying changes in
787the :mod:`inspect` module.
788
789
Serhiy Storchaka32eddc12013-11-23 23:20:30 +0200790re
791--
792
793Added :func:`re.fullmatch` function and :meth:`regex.fullmatch` method,
794which anchor the pattern at both ends of the string to match.
795(Contributed by Matthew Barnett in :issue:`16203`.)
796
Ezio Melottidd7e2912013-11-25 23:20:20 +0200797The repr of :ref:`regex objects <re-objects>` now includes the pattern
798and the flags; the repr of :ref:`match objects <match-objects>` now
799includes the start, end, and the part of the string that matched.
Ezio Melottidd7e2912013-11-25 23:20:20 +0200800(Contributed by Serhiy Storchaka in :issue:`13592` and :issue:`17087`.)
801
802
Christian Heimesb7bd5df2013-10-22 11:21:54 +0200803resource
804--------
805
806New :func:`resource.prlimit` function and Linux specific constants.
807(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
808
R David Murray8e37d5d2013-04-13 14:49:48 -0400809smtplib
810-------
811
R David Murray8a345962013-04-14 06:46:35 -0400812:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400813both socket level errors and SMTP protocol level errors to be caught in one
814try/except statement by code that only cares whether or not an error occurred.
815(:issue:`2118`).
816
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200817
Victor Stinnerdaf45552013-08-28 00:53:59 +0200818socket
819------
820
Georg Brandl5642ff92013-09-15 10:37:57 +0200821Socket objects have new methods to get or set their :ref:`inheritable flag
822<fd_inheritance>`:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200823
824* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
825
Eli Bendersky34567ec2013-08-31 15:18:48 -0700826The ``socket.AF_*`` and ``socket.SOCK_*`` constants are enumeration values,
827using the new :mod:`enum` module. This allows descriptive reporting during
828debugging, instead of seeing integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200829
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200830ssl
831---
832
R David Murray748bad22013-12-20 17:08:39 -0500833.. _whatsnew-tls-11-12:
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200834
R David Murray748bad22013-12-20 17:08:39 -0500835:data:`~ssl.PROTOCOL_TLSv1_1` and :data:`~ssl.PROTOCOL_TLSv1_2` (TLSv1.1 and
836TLSv1.2 support) have been added; support for these protocols is only available if
837Python is linked with OpenSSL 1.0.1 or later. (Contributed by Michele Orrù and
838Antoine Pitrou in :issue:`16692`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200839
R David Murray748bad22013-12-20 17:08:39 -0500840New diagnostic functions :func:`~ssl.get_default_verify_paths`,
841:meth:`~ssl.SSLContext.cert_store_stats` and
842:meth:`~ssl.SSLContext.get_ca_certs` (Contributed by Christian Heimes
843in :issue:`18143` and :issue:`18147`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200844
R David Murray748bad22013-12-20 17:08:39 -0500845Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
846cert store. (Contributed by Christian Heimes in :issue:`17134`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200847
848Support for server-side SNI using the new
849:meth:`ssl.SSLContext.set_servername_callback` method.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200850(Contributed by Daniel Black in :issue:`8109`.)
851
852
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200853stat
854----
855
856The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
857implementation is required as most of the values aren't standardized and
858platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
859
860The module supports new file types: door, event port and whiteout.
861
862
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200863struct
864------
865
866Streaming struct unpacking using :func:`struct.iter_unpack`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200867(Contributed by Antoine Pitrou in :issue:`17804`.)
868
869
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300870sunau
871-----
872
873The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
874plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
875
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300876:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
877
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300878
Andrew Kuchling173a1572013-09-15 18:15:56 -0400879traceback
880---------
881
882A new :func:`traceback.clear_frames` function takes a traceback object
883and clears the local variables in all of the frames it references,
884reducing the amount of memory consumed (:issue:`1565525`).
885
886
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200887urllib
888------
889
890Add support.for ``data:`` URLs in :mod:`urllib.request`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200891(Contributed by Mathias Panzenböck in :issue:`16423`.)
892
893
894unittest
895--------
896
897Support for easy dynamically-generated subtests using the
898:meth:`~unittest.TestCase.subTest` context manager.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200899(Contributed by Antoine Pitrou in :issue:`16997`.)
900
R David Murray8e37d5d2013-04-13 14:49:48 -0400901
R David Murray671cd322013-04-10 12:31:43 -0400902wave
903----
904
905The :meth:`~wave.getparams` method now returns a namedtuple rather than a
906plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
907
R David Murrayc91d5ee2013-07-31 13:46:08 -0400908:meth:`wave.open` now supports the context manager protocol. (Contributed
909by Claudiu Popa in :issue:`17616`.)
910
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200911
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200912weakref
913-------
914
915New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000916methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200917
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000918New :class:`~weakref.finalize` class makes it possible to register a callback
919to be invoked when an object is garbage collected, without needing to
920carefully manage the lifecycle of the weak reference itself. (Contributed by
921Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200922
923
924xml.etree
925---------
926
927Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -0700928:class:`~xml.etree.ElementTree.XMLPullParser`.
Eli Benderskyb5869342013-08-30 05:51:20 -0700929(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200930
Christian Tismer59202e52013-10-21 03:59:23 +0200931
932zipfile.PyZipfile
933-----------------
934
935Add a filter function to ignore some packages (tests for instance),
936:meth:`~zipfile.PyZipFile.writepy`.
Christian Tismer59202e52013-10-21 03:59:23 +0200937(Contributed by Christian Tismer in :issue:`19274`.)
938
939
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200940Other improvements
941==================
942
943Tab-completion is now enabled by default in the interactive interpreter.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200944(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
945
Eli Bendersky96d848a2013-09-06 06:55:58 -0700946Python invocation changes
947=========================
948
949Invoking the Python interpreter with ``--version`` now outputs the version to
950standard output instead of standard error (:issue:`18338`). Similar changes
951were made to :mod:`argparse` (:issue:`18920`) and other modules that have
952script-like invocation capabilities (:issue:`18922`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200953
Georg Brandlb80f5112012-09-30 09:11:58 +0200954Optimizations
955=============
956
957Major performance enhancements have been added:
958
Victor Stinnere64322e2012-10-30 23:12:47 +0100959* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200960
Raymond Hettingerc301b552013-08-19 09:12:20 -0700961* The cost of hash collisions for sets is now reduced. Each hash table
Raymond Hettinger8408dc52013-09-15 14:57:15 -0700962 probe now checks a series of consecutive, adjacent key/hash pairs before
963 continuing to make random probes through the hash table. This exploits
964 cache locality to make collision resolution less expensive.
965
966 The collision resolution scheme can be described as a hybrid of linear
967 probing and open addressing. The number of additional linear probes
968 defaults to nine. This can be changed at compile-time by defining
969 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
970 linear probing entirely.
Raymond Hettingerc301b552013-08-19 09:12:20 -0700971
Christian Heimes086b1af2013-10-22 11:49:34 +0200972 (Contributed by Raymond Hettinger in :issue:`18771`.)
Raymond Hettingerc301b552013-08-19 09:12:20 -0700973
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200974* The interpreter starts about 30% faster. A couple of measures lead to the
Eric V. Smith57841dd2013-10-13 00:36:08 -0400975 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200976 :mod:`collections` and :mod:`locale` modules and their dependencies are no
977 longer imported by default. The marshal module has been improved to load
978 compiled Python code faster.
979
980 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
981 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
982 :issue:`9548`)
983
984
Nick Coghlan367df122013-10-27 01:57:34 +1000985CPython Implementation Changes
986==============================
987
988
R David Murrayc16dfe12013-12-21 12:32:10 -0500989.. _whatsnew-pep-445:
Nick Coghlan367df122013-10-27 01:57:34 +1000990
991PEP 445: Customization of CPython memory allocators
992---------------------------------------------------
993
994:pep:`445` adds new C level interfaces to customize memory allocation in
995the CPython interpreter.
996
997.. seealso::
998
999 :pep:`445` - Add new APIs to customize Python memory allocators
1000 PEP written and implemented by Victor Stinner.
1001
1002
R David Murrayc16dfe12013-12-21 12:32:10 -05001003.. _whatsnew-pep-442:
Nick Coghlan367df122013-10-27 01:57:34 +10001004
1005PEP 442: Safe object finalization
1006---------------------------------
1007
1008:pep:`442` removes the current limitations and quirks of object finalization
1009in CPython. With it, objects with :meth:`__del__` methods, as well as
1010generators with :keyword:`finally` clauses, can be finalized when they are
1011part of a reference cycle.
1012
1013As part of this change, module globals are no longer forcibly set to
1014:const:`None` during interpreter shutdown in most cases, instead relying
R David Murrayca794612013-12-22 14:05:11 -05001015on the normal operation of the cyclic garbage collector. This avoids a
1016whole class of interpreter-shutdown-time errors, usually involving
1017``__del__`` methods, that have plagued Python since the cyclic GC
1018was first introduced.
Nick Coghlan367df122013-10-27 01:57:34 +10001019
1020.. seealso::
1021
1022 :pep:`442` - Safe object finalization
1023 PEP written and implemented by Antoine Pitrou.
1024
1025
R David Murrayc16dfe12013-12-21 12:32:10 -05001026.. _whatsnew-pep-456:
1027
1028PEP 456: Secure and Interchangeable Hash Algorithm
1029--------------------------------------------------
1030
1031:pep:`456` follows up on earlier security fix work done on Python's hash
1032algorithm to address certain DOS attacks to which public facing APIs backed by
1033dictionary lookups may be subject. (See :issue:`14621` for the start of the
1034current round of improvements.) The PEP unifies CPython's hash code to make it
1035easier for a packager to substitute a different hash algorithm, and switches
1036Python's default implementation to a SipHash implementation on platforms that
1037have a 64 bit data type. Any performance differences in comparison with the
1038older FNV algorithm are trivial.
1039
1040The PEP adds additional fields to the :func:`sys.hash_info` struct sequence to
1041describe the hash algorithm in use by the currently executing binary. Otherwise,
1042the PEP does not alter any existing CPython APIs.
1043
1044
Nick Coghlan367df122013-10-27 01:57:34 +10001045Other build and C API changes
1046-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +02001047
1048Changes to Python's build process and to the C API include:
1049
Nick Coghlan7d270ee2013-10-17 22:35:35 +10001050* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
1051 allows applications embedding the CPython interpreter to reliably force
1052 a particular encoding and error handler for the standard streams
1053 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +02001054
Nick Coghlan0acceb72013-10-20 13:22:21 +10001055* Most Python C APIs that don't mutate string arguments are now correctly
1056 marked as accepting ``const char *`` rather than ``char *`` (Contributed
1057 by Serhiy Storchaka in :issue:`1772673`).
1058
R David Murray2aa9d522013-12-22 13:57:45 -05001059.. _whatsnew-pep-436:
1060
Nick Coghlan0acceb72013-10-20 13:22:21 +10001061* "Argument Clinic" (:pep:`436`) is now part of the CPython build process
1062 and can be used to simplify the process of defining and maintaining
1063 accurate signatures for builtins and standard library extension modules
1064 implemented in C.
1065
Nick Coghlan367df122013-10-27 01:57:34 +10001066 .. note::
1067 The Argument Clinic PEP is not fully up to date with the state of the
1068 implementation. This has been deemed acceptable by the release manager
1069 and core development team in this case, as Argument Clinic will not
1070 be made available as a public API for third party use in Python 3.4.
1071
Georg Brandlb80f5112012-09-30 09:11:58 +02001072
1073Deprecated
1074==========
1075
1076Unsupported Operating Systems
1077-----------------------------
1078
Victor Stinnerf3fd13b2013-08-04 10:30:57 +02001079* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +02001080* Windows 2000
Christian Heimesaf01f662013-12-21 16:19:10 +01001081* VMS
Georg Brandlb80f5112012-09-30 09:11:58 +02001082
1083
1084Deprecated Python modules, functions and methods
1085------------------------------------------------
1086
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -04001087* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -04001088 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
1089 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +02001090
Brett Cannon82b3d6a2013-06-14 22:37:11 -04001091* :func:`importlib.util.module_for_loader` is pending deprecation. Using
1092 :func:`importlib.util.module_to_load` and
1093 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
1094 to more easily customize module loading.
1095
Brett Cannone4f41de2013-06-16 13:13:40 -04001096* The :mod:`imp` module is pending deprecation. To keep compatibility with
1097 Python 2/3 code bases, the module's removal is currently not scheduled.
1098
Brett Cannon1448ecf2013-10-04 11:38:59 -04001099* The :mod:`formatter` module is pending deprecation and is slated for removal
1100 in Python 3.6.
1101
Christian Heimes634919a2013-11-20 17:23:06 +01001102* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
1103 require an explicit digest name or constructor as *digestmod* argument.
1104
Georg Brandlb80f5112012-09-30 09:11:58 +02001105
1106Deprecated functions and types of the C API
1107-------------------------------------------
1108
Victor Stinner3dd263f2013-10-23 18:54:43 +02001109* The ``PyThreadState.tick_counter`` field has been removed: its value was
1110 meaningless since Python 3.2 ("new GIL").
Georg Brandlb80f5112012-09-30 09:11:58 +02001111
1112
1113Deprecated features
1114-------------------
1115
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +02001116* The site module adding a "site-python" directory to sys.path, if it
1117 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +02001118
1119
Benjamin Peterson88f3b232012-10-04 12:45:10 -04001120Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +02001121=====================
1122
Victor Stinner774b2e02013-12-13 14:33:01 +01001123Changes in the Python API
1124-------------------------
1125
Georg Brandlb80f5112012-09-30 09:11:58 +02001126This section lists previously described changes and other bugfixes
1127that may require changes to your code.
1128
Brett Cannon777622b2013-04-09 17:03:10 -04001129* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
1130 exception or return a default value instead of raising
1131 :exc:`NotImplementedError` blindly. This will only affect code calling
1132 :func:`super` and falling through all the way to the ABCs. For compatibility,
1133 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001134
1135* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
1136 attributes to ``None`` by default. To determine if these attributes were set
1137 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001138 ``getattr(module, '__loader__', None) is not None``.
1139
1140* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
1141 ``__package__`` unconditionally to properly support reloading. If this is not
1142 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -04001143 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -04001144
1145* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
1146 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
1147
Brett Cannon1448ecf2013-10-04 11:38:59 -04001148* Frozen packages no longer set ``__path__`` to a list containing the package
1149 name but an empty list instead. Determing if a module is a package should be
1150 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -04001151
Brett Cannon33915eb2013-06-14 18:33:00 -04001152* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
1153 it would write to is a symlink or a non-regular file. This is to act as a
1154 warning that import will overwrite those files with a regular file regardless
1155 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -04001156
1157* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
1158 :exc:`ImportError` when the source code being loaded triggers a
1159 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
1160 meant to be raised only when source code cannot be found but it should, it was
1161 felt to be over-reaching/overloading of that meaning when the source code is
1162 found but improperly structured. If you were catching ImportError before and
1163 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +02001164 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +10001165
1166* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
Nick Coghlan367df122013-10-27 01:57:34 +10001167 set the ``__wrapped__`` attribute to the function being wrapper, even if
1168 that function also had its ``__wrapped__`` attribute set. This means
1169 ``__wrapped__`` attributes now correctly link a stack of decorated
1170 functions rather than every ``__wrapped__`` attribute in the chain
1171 referring to the innermost function. Introspection libraries that
1172 assumed the previous behaviour was intentional can use
1173 :func:`inspect.unwrap` to access the first function in the chain that has
1174 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +02001175
Georg Brandl0f5bff22013-10-19 17:46:38 +02001176* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -04001177 directory to objects in :data:`sys.path_hooks` for the empty string. This
1178 results in :data:`sys.path_importer_cache` never containing ``''``, thus
1179 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
1180 will not find all keys. A module's ``__file__`` when imported in the current
1181 working directory will also now have an absolute path, including when using
1182 ``-m`` with the interpreter (this does not influence when the path to a file
1183 is specified on the command-line).
Victor Stinner2748bc72013-12-13 10:57:04 +01001184
Victor Stinner774b2e02013-12-13 14:33:01 +01001185Changes in the C API
1186--------------------
1187
1188* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
1189 argument is not set. Previously only ``NULL`` was returned with no exception
1190 set.
1191
1192* The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
1193 now be a string allocated by :c:func:`PyMem_RawMalloc` or
1194 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
1195 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
1196
1197* :c:func:`PyThread_set_key_value` now always set the value. In Python
Victor Stinner2748bc72013-12-13 10:57:04 +01001198 3.3, the function did nothing if the key already exists (if the current
1199 value is a non-NULL pointer).
1200
Victor Stinner774b2e02013-12-13 14:33:01 +01001201* The ``f_tstate`` (thread state) field of the :c:type:`PyFrameObject`
1202 structure has been removed to fix a bug: see :issue:`14432` for the
1203 rationale.
1204