blob: 6b65f2ec99bc11015b54adc32cd43488537b0555 [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
91New library modules:
92
Nick Coghlan0acceb72013-10-20 13:22:21 +100093* :mod:`asyncio`: New provisonal API for asynchronous IO (:pep:`3156`).
94* :mod:`enum`: Support for enumeration types (:pep:`435`).
Nick Coghland0cf0632013-11-11 22:11:55 +100095* :mod:`ensurepip`: Bootstrapping the pip installer (:pep:`453`).
Antoine Pitrou31119e42013-11-22 17:38:12 +010096* :mod:`pathlib`: Object-oriented filesystem paths (:pep:`428`).
Victor Stinner4aea4a02013-09-04 20:30:34 +020097* :mod:`selectors`: High-level and efficient I/O multiplexing, built upon the
98 :mod:`select` module primitives.
Nick Coghlan0acceb72013-10-20 13:22:21 +100099* :mod:`statistics`: A basic numerically stable statistics library (:pep:`450`).
Victor Stinnerd2736af2013-11-25 09:40:27 +0100100* :mod:`tracemalloc`: Trace Python memory allocations (:pep:`454`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200101
Nick Coghlan367df122013-10-27 01:57:34 +1000102New expected features for Python implementations:
Georg Brandlb80f5112012-09-30 09:11:58 +0200103
R David Murrayf9909c22013-12-20 14:50:12 -0500104* :pep:`446`: :ref:`Make newly created file descriptors non-inheritable <whatsnew-pep-446>`.
Nick Coghlan367df122013-10-27 01:57:34 +1000105* command line option for :ref:`isolated mode <using-on-misc-options>`,
106 (:issue:`16499`).
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000107* :ref:`improvements <codec-handling-improvements>` in the handling of
108 codecs that are not text encodings
Georg Brandlb80f5112012-09-30 09:11:58 +0200109
110Significantly Improved Library Modules:
111
R David Murray0a102162013-12-20 15:00:54 -0500112* :ref:`Single-dispatch generic functions <whatsnew-singledispatch>` in
113 :mod:`functools` (:pep:`443`)
R David Murrayc0540402013-12-20 16:38:09 -0500114* New :mod:`pickle` :ref:`protocol 4 <whatsnew-protocol-4>` (:pep:`3154`)
R David Murraycde1a062013-12-20 16:33:52 -0500115* :ref:`SHA-3 (Keccak) support <whatsnew-sha3>` for :mod:`hashlib`.
R David Murray748bad22013-12-20 17:08:39 -0500116* :ref:`TLSv1.1 and TLSv1.2 support <whatsnew-tls-11-12>` for :mod:`ssl`.
R David Murrayac186222013-12-20 17:23:57 -0500117* :mod:`multiprocessing` now has :ref:`an option to avoid using os.fork
118 on Unix <whatsnew-multiprocessing-no-fork>` (:issue:`8713`).
R David Murray6adb4542013-12-20 13:10:43 -0500119* :mod:`email` has a new submodule, :mod:`~email.contentmanager`, and
120 a new :mod:`~email.message.Message` subclass
R David Murray26b80cfd2013-12-20 17:26:52 -0500121 (:class:`~email.contentmanager.EmailMessage`) that :ref:`simplify MIME
122 handling <whatsnew_email_contentmanager>`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200123
Nick Coghlan367df122013-10-27 01:57:34 +1000124CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200125
R David Murrayc16dfe12013-12-21 12:32:10 -0500126* :pep:`442`: :ref:`Safe object finalization <whatsnew-pep-442>`
127* :pep:`445`: :ref:`Configurable memory allocators <whatsnew-pep-445>`
128* :pep:`456`: :ref:`Secure and interchangeable hash algorithm <whatsnew-pep-456>`
Nick Coghlan367df122013-10-27 01:57:34 +1000129* Improve finalization of Python modules to avoid setting their globals
130 to None, in most cases (:issue:`18214`).
131* A more efficient :mod:`marshal` format (:issue:`16475`).
132* "Argument Clinic", an initial step towards providing improved introspection
133 support for builtin and standard library extension types implemented in C
134 (:pep:`436`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200135
136Please read on for a comprehensive list of user-facing changes.
137
Nick Coghland0cf0632013-11-11 22:11:55 +1000138
139PEP 453: Explicit bootstrapping of pip in Python installations
140==============================================================
141
142The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
143cross-platform mechanism to boostrap the pip installer into Python
144installations and virtual environments.
145
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000146The :mod:`venv` module and the :command:`pyvenv` utility make use of this
147module to make ``pip`` readily available in virtual environments. When
148using the command line interface, ``pip`` is installed by default, while
149for the module API installation of ``pip`` must be requested explicitly.
150
151For CPython source builds on POSIX systems, the ``make install`` and
152``make altinstall`` commands bootstrap ``pip`` by default. This behaviour
153can be controlled through configure options, and overridden through
154Makefile options.
155
Ned Deily44a0db02013-11-22 22:39:09 -0800156On Windows and Mac OS X, the CPython installers now offer the option to
157install ``pip`` along with CPython itself.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000158
Nick Coghland0cf0632013-11-11 22:11:55 +1000159.. note::
160
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000161 The implementation of PEP 453 is still a work in progress. Refer to
162 :issue:`19347` for the progress on additional steps:
Nick Coghland0cf0632013-11-11 22:11:55 +1000163
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000164 * Having the binary installers install ``pip`` by default
165 * Recommending the use of ``pip`` in the "Installing Python Module"
166 documentation.
Nick Coghland0cf0632013-11-11 22:11:55 +1000167
168.. seealso::
169
170 :pep:`453` - Explicit bootstrapping of pip in Python installations
171 PEP written by Donald Stufft and Nick Coghlan, implemented by
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000172 Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily.
Nick Coghland0cf0632013-11-11 22:11:55 +1000173
174
R David Murrayf9909c22013-12-20 14:50:12 -0500175.. _whatsnew-pep-446:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200176
177PEP 446: Make newly created file descriptors non-inheritable
178============================================================
179
Nick Coghlan367df122013-10-27 01:57:34 +1000180:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200181<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200182
183* :func:`os.get_inheritable`, :func:`os.set_inheritable`
184* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
185* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
186
Antoine Pitrou796564c2013-07-30 19:59:21 +0200187.. seealso::
188
Nick Coghlan367df122013-10-27 01:57:34 +1000189 :pep:`446` - Make newly created file descriptors non-inheritable
190 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200191
Georg Brandlb80f5112012-09-30 09:11:58 +0200192
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000193.. _codec-handling-improvements:
194
195Improvements to codec handling
196==============================
Nick Coghlan8b097b42013-11-13 23:49:21 +1000197
198Since it was first introduced, the :mod:`codecs` module has always been
199intended to operate as a type-neutral dynamic encoding and decoding
200system. However, its close coupling with the Python text model, especially
201the type restricted convenience methods on the builtin :class:`str`,
202:class:`bytes` and :class:`bytearray` types, has historically obscured that
203fact.
204
205As a key step in clarifying the situation, the :meth:`codecs.encode` and
206:meth:`codecs.decode` convenience functions are now properly documented in
207Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000208module (and have been covered by the regression test suite) since Python 2.4,
Nick Coghlan8b097b42013-11-13 23:49:21 +1000209but were previously only discoverable through runtime introspection.
210
211Unlike the convenience methods on :class:`str`, :class:`bytes` and
212:class:`bytearray`, these convenience functions support arbitrary codecs
213in both Python 2 and Python 3, rather than being limited to Unicode text
214encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
215(in Python 2).
216
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000217In Python 3.4, the interpreter is able to identify the known non-text
218encodings provided in the standard library and direct users towards these
219general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000220
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000221 >>> b"abcdef".decode("hex")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000222 Traceback (most recent call last):
223 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000224 LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000225
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000226 >>> "hello".encode("rot13")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000227 Traceback (most recent call last):
228 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000229 LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000230
231In a related change, whenever it is feasible without breaking backwards
232compatibility, exceptions raised during encoding and decoding operations
233will be wrapped in a chained exception of the same type that mentions the
234name of the codec responsible for producing the error::
235
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000236 >>> import codecs
237
238 >>> codecs.decode(b"abcdefgh", "hex")
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000239 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000240
241 The above exception was the direct cause of the following exception:
242
243 Traceback (most recent call last):
244 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000245 binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000246
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000247 >>> codecs.encode("hello", "bz2")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000248 TypeError: 'str' does not support the buffer interface
249
250 The above exception was the direct cause of the following exception:
251
252 Traceback (most recent call last):
253 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000254 TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not support the buffer interface)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000255
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000256Finally, as the examples above show, these improvements have permitted
257the restoration of the convenience aliases for the non-Unicode codecs that
258were themselves restored in Python 3.2. This means that encoding binary data
259to and from its hexadecimal representation (for example) can now be written
260as::
261
262 >>> from codecs import encode, decode
263 >>> encode(b"hello", "hex")
264 b'68656c6c6f'
265 >>> decode(b"68656c6c6f", "hex")
266 b'hello'
267
268The binary and text transforms provided in the standard library are detailed
269in :ref:`binary-transforms` and :ref:`text-transforms`.
270
271(Contributed by Nick Coghlan in :issue:`7475`, , :issue:`17827`,
272:issue:`17828` and :issue:`19619`)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000273
Eric Snowb523f842013-11-22 09:05:39 -0700274.. _pep-451:
275
276PEP 451: A ModuleSpec Type for the Import System
277================================================
278
279:pep:`451` provides an encapsulation of the information about a module
280that the import machinery will use to load it, (i.e. a module spec).
281This helps simplify both the import implementation and several
282import-related APIs. The change is also a stepping stone for several
283future import-related improvements.
284
285https://mail.python.org/pipermail/python-dev/2013-November/130111.html
286
287The public-facing changes from the PEP are entirely backward-compatible.
288Furthermore, they should be transparent to everyone but importer
289authors. Key finder and loader methods have been deprecated, but they
290will continue working. New importers should use the new methods
291described in the PEP. Existing importers should be updated to implement
292the new methods.
293
Nick Coghlan8b097b42013-11-13 23:49:21 +1000294
R David Murrayc0540402013-12-20 16:38:09 -0500295.. _whatsnew-protocol-4:
296
Antoine Pitrouc9dc4a22013-11-23 18:59:12 +0100297Pickle protocol 4
298=================
299
300The new :mod:`pickle` protocol addresses a number of issues that were present
301in previous protocols, such as the serialization of nested classes, very
302large strings and containers, or classes whose :meth:`__new__` method takes
303keyword-only arguments. It also brings a couple efficiency improvements.
304
305.. seealso::
306
307 :pep:`3154` - Pickle protocol 4
308 PEP written by Antoine Pitrou and implemented by Alexandre Vassalotti.
309
310
Georg Brandlb80f5112012-09-30 09:11:58 +0200311Other Language Changes
312======================
313
314Some smaller changes made to the core Python language are:
315
Ezio Melotti34808e22013-10-12 16:36:13 +0300316* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200317
R David Murray9a2f1392013-06-28 13:31:19 -0400318* :func:`min` and :func:`max` now accept a *default* argument that can be used
319 to specify the value they return if the iterable they are evaluating has no
320 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200321
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200322* Module objects are now :mod:`weakref`'able.
323
Nick Coghlan0acceb72013-10-20 13:22:21 +1000324* Module ``__file__`` attributes (and related values) should now always
325 contain absolute paths by default, with the sole exception of
326 ``__main__.__file__`` when a script has been executed directly using
327 a relative path (Contributed by Brett Cannon in :issue:`18416`).
328
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200329* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
330 encoding and decoding unless the ``surrogatepass`` error handler is used,
331 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
332 and the UTF-16 encoder that produces them while encoding non-BMP characters.
333 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
334 :issue:`12892`.
335
Georg Brandlb80f5112012-09-30 09:11:58 +0200336
337New Modules
338===========
339
Nick Coghlan0acceb72013-10-20 13:22:21 +1000340
341asyncio
342-------
343
344The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
345pluggable event loop model for Python, providing solid asynchronous IO
346support in the standard library, and making it easier for other event loop
347implementations to interoperate with the standard library and each other.
348
349For Python 3.4, this module is considered a :term:`provisional API`.
350
Nick Coghlan367df122013-10-27 01:57:34 +1000351.. seealso::
352
353 :pep:`3156` - Asynchronous IO Support Rebooted: the "asyncio" Module
354 PEP written and implementation led by Guido van Rossum.
355
Nick Coghlan0acceb72013-10-20 13:22:21 +1000356enum
357----
358
Nick Coghlan367df122013-10-27 01:57:34 +1000359The new :mod:`enum` module (defined in :pep:`435`) provides a standard
360implementation of enumeration types, allowing other modules (such as
361:mod:`socket`) to provide more informative error messages and better
362debugging support by replacing opaque integer constants with backwards
363compatible enumeration values.
364
365.. seealso::
366
367 :pep:`435` - Adding an Enum type to the Python standard library
368 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
369 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000370
371
Antoine Pitrou31119e42013-11-22 17:38:12 +0100372pathlib
373-------
374
375The new :mod:`pathlib` module offers classes representing filesystem paths
376with semantics appropriate for different operating systems. Path classes are
377divided between *pure paths*, which provide purely computational operations
378without I/O, and *concrete paths*, which inherit from pure paths but also
379provide I/O operations.
380
381For Python 3.4, this module is considered a :term:`provisional API`.
382
383.. seealso::
384
385 :pep:`428` - The pathlib module -- object-oriented filesystem paths
386 PEP written and implemented by Antoine Pitrou.
387
388
Charles-François Natali243d8d82013-09-04 19:02:49 +0200389selectors
390---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200391
Nick Coghlan0acceb72013-10-20 13:22:21 +1000392The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
393allows high-level and efficient I/O multiplexing, built upon the
394:mod:`select` module primitives.
395
396
397statistics
398----------
399
400The new :mod:`statistics` module (defined in :pep:`450`) offers some core
401statistics functionality directly in the standard library. This module
402supports calculation of the mean, median, mode, variance and standard
403deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200404
Nick Coghlan367df122013-10-27 01:57:34 +1000405.. seealso::
406
407 :pep:`450` - Adding A Statistics Module To The Standard Library
408 PEP written and implemented by Steven D'Aprano
409
Georg Brandlb80f5112012-09-30 09:11:58 +0200410
Victor Stinnerd2736af2013-11-25 09:40:27 +0100411tracemalloc
412-----------
413
414The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to
415trace memory blocks allocated by Python. It provides the following information:
416
417* Traceback where an object was allocated
418* Statistics on allocated memory blocks per filename and per line number:
419 total size, number and average size of allocated memory blocks
420* Compute the differences between two snapshots to detect memory leaks
421
422.. seealso::
423
424 :pep:`454` - Add a new tracemalloc module to trace Python memory allocations
425 PEP written and implemented by Victor Stinner
426
427
Georg Brandlb80f5112012-09-30 09:11:58 +0200428Improved Modules
429================
430
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200431aifc
432----
433
434The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
435plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
436
437
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300438audioop
439-------
440
441Added support for 24-bit samples (:issue:`12866`).
442
Serhiy Storchaka3062c9a2013-11-23 22:26:01 +0200443Added the :func:`~audioop.byteswap` function to convert big-endian samples
444to little-endian and vice versa (:issue:`19641`).
445
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300446
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000447base64
448------
449
450The encoding and decoding functions in :mod:`base64` now accept any
451:term:`bytes-like object` in cases where it previously required a
Georg Brandled007d52013-11-24 16:09:26 +0100452:class:`bytes` or :class:`bytearray` instance (:issue:`17839`).
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000453
454
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200455colorsys
456--------
457
458The number of digits in the coefficients for the RGB --- YIQ conversions have
459been expanded so that they match the FCC NTSC versions. The change in
460results should be less than 1% and may better match results found elsewhere.
461
R David Murray8e37d5d2013-04-13 14:49:48 -0400462
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000463contextlib
464----------
465
Nick Coghlan240f86d2013-10-17 23:40:57 +1000466The new :class:`contextlib.suppress` context manager helps to clarify the
467intent of code that deliberately suppresses exceptions from a single
468statement. (Contributed by Raymond Hettinger in :issue:`15806` and
469Zero Piraeus in :issue:`19266`)
470
Victor Stinner6633c392013-10-21 13:27:11 +0200471The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000472for utility scripts to handle inflexible APIs that don't provide any
473options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000474other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
475this context manager is also useful for checking expected output from
476command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
477
478The :mod:`contextlib` documentation has also been updated to include a
479:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
480differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000481
482
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000483dis
484---
485
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300486The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
487that provides details of individual bytecode operations and a
488:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000489given piece of Python code. The various display tools in the :mod:`dis`
490module have been updated to be based on these new components.
491
492The new :class:`dis.Bytecode` class provides an object-oriented API for
493inspecting bytecode, both in human-readable form and for iterating over
494instructions.
495
Nick Coghlan50c48b82013-11-23 00:57:00 +1000496(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
497and Claudiu Popa in :issue:`17916`)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000498
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200499
R David Murray5a9d7062012-11-21 15:09:21 -0500500doctest
501-------
502
R David Murray5707d502013-06-23 14:24:13 -0400503Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
504failure is detected. (Contributed by R. David Murray and Daniel Urban in
505:issue:`16522`.)
506
507Updated the doctest command line interface to use :mod:`argparse`, and added
508``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
509be specified on the command line, and ``-f`` is a shorthand for ``-o
510FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
511CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200512
R David Murray8e37d5d2013-04-13 14:49:48 -0400513
R David Murraybb17d2b2013-08-09 16:15:28 -0400514email
515-----
516
517:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
518override the default policy of the message when generating a string
519representation of it. This means that ``as_string`` can now be used in more
520circumstances, instead of having to create and use a :mod:`~email.generator` in
521order to pass formatting parameters to its ``flatten`` method.
522
523New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
524representation of the message in a fashion similar to how ``as_string``
525produces a string representation. It does not accept the *maxheaderlen*
526argument, but does accept the *unixfrom* and *policy* arguments. The
527:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
528calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
529result: a bytes object containing the fully formatted message.
530
531(Contributed by R. David Murray in :issue:`18600`.)
532
R David Murray26b80cfd2013-12-20 17:26:52 -0500533.. _whatsnew_email_contentmanager:
534
R David Murray3da240f2013-10-16 22:48:40 -0400535A pair of new subclasses of :class:`~email.message.Message` have been added,
536along with a new sub-module, :mod:`~email.contentmanager`. All documentation
537is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000538:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400539number of new methods that make extracting content from and inserting content
540into email messages much easier. See the :mod:`~email.contentmanager`
541documentation for details.
542
543These API additions complete the bulk of the work that was planned as part of
544the email6 project. The currently provisional API is scheduled to become final
545in Python 3.5 (possibly with a few minor additions in the area of error
546handling).
547
548(Contributed by R. David Murray in :issue:`18891`.)
549
R David Murraybb17d2b2013-08-09 16:15:28 -0400550
Victor Stinner854ffcb2013-06-21 00:36:30 +0200551functools
552---------
553
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000554The new :func:`~functools.partialmethod` descriptor bring partial argument
555application to descriptors, just as :func:`~functools.partial` provides
556for normal callables. The new descriptor also makes it easier to get
557arbitrary callables (including :func:`~functools.partial` instances)
558to behave like normal instance methods when included in a class definition.
559
560(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
561
R David Murray0a102162013-12-20 15:00:54 -0500562.. _whatsnew-singledispatch:
563
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000564The new :func:`~functools.singledispatch` decorator brings support for
565single-dispatch generic functions to the Python standard library. Where
566object oriented programming focuses on grouping multiple operations on a
567common set of data into a class, a generic function focuses on grouping
568multiple implementations of an operation that allows it to work with
569*different* kinds of data.
570
571.. seealso::
572
573 :pep:`443` - Single-dispatch generic functions
574 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200575
Nick Coghlane8c45d62013-07-28 20:00:01 +1000576
Christian Heimese92ef132013-10-13 00:52:43 +0200577hashlib
578-------
579
580New :func:`hashlib.pbkdf2_hmac` function.
Christian Heimese92ef132013-10-13 00:52:43 +0200581(Contributed by Christian Heimes in :issue:`18582`)
582
R David Murraycde1a062013-12-20 16:33:52 -0500583.. _whatsnew-sha3:
584
585New :ref:`hash algorithms <hash-algorithms>` ``sah3_224()``, ``sha3_256()``,
586``sha3_384()``, and ``sha3_512()``. (Contributed by Christian Heimes in
587:issue:`16113`.)
588
Christian Heimese92ef132013-10-13 00:52:43 +0200589
Ezio Melotti250a06c2013-11-25 06:18:47 +0200590html
591----
592
593Added a new :func:`html.unescape` function that converts HTML5 character
594references to the corresponding Unicode characters.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200595(Contributed by Ezio Melotti in :issue:`2927`)
596
597Added a new *convert_charrefs* keyword argument to
598:class:`~html.parser.HTMLParser` that, when ``True``, automatically converts
599all character references. For backward-compatibility, its value defaults
600to ``False``, but it will change to ``True`` in future versions, so you
601are invited to set it explicitly and update your code to use this new feature.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200602(Contributed by Ezio Melotti in :issue:`13633`)
603
604The *strict* argument of :class:`~html.parser.HTMLParser` is now deprecated.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200605(Contributed by Ezio Melotti in :issue:`15114`)
606
607
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200608inspect
609-------
610
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000611
Nick Coghlan367df122013-10-27 01:57:34 +1000612The inspect module now offers a basic :ref:`command line interface
613<inspect-module-cli>` to quickly display source code and other
614information for modules, classes and functions. (Contributed by Claudiu Popa
615and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000616
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200617:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
618created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000619``__wrapped__`` attribute on a wrapper function). (Contributed by
620Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
621
622As part of the implementation of the new :mod:`enum` module, the
623:mod:`inspect` module now has substantially better support for custom
624``__dir__`` methods and dynamic class attributes provided through
625metaclasses (Contributed by Ethan Furman in :issue:`18929` and
626:issue:`19030`)
627
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200628
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200629mmap
630----
631
632mmap objects can now be weakref'ed.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200633(Contributed by Valerie Lambert in :issue:`4885`.)
634
635
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100636multiprocessing
637---------------
638
R David Murrayac186222013-12-20 17:23:57 -0500639.. _whatsnew-multiprocessing-no-fork:
640
641On Unix, two new :ref:`start methods <multiprocessing-start-methods>`
642(``spawn`` and ``forkserver``) have been added for starting processes using
643:mod:`multiprocessing`. These make the mixing of processes with threads more
644robust, and the ``spawn`` method matches the semantics that multiprocessing has
645always used on Windows. (Contributed by Richard Oudkerk in :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100646
647Also, except when using the old *fork* start method, child processes
R David Murrayac186222013-12-20 17:23:57 -0500648will no longer inherit unneeded handles/file descriptors from their parents
649(part of :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100650
Nick Coghlan9a767352013-12-17 22:17:26 +1000651:mod:`multiprocessing` now relies on :mod:`runpy` (which implements the
652``-m`` switch) to initialise ``__main__`` appropriately in child processes
653when using the ``spawn`` or ``forkserver`` start methods. This resolves some
654edge cases where combining multiprocessing, the ``-m`` command line switch
655and explicit relative imports could cause obscure failures in child
656processes. (Contributed by Nick Coghlan in :issue:`19946`)
657
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100658
Victor Stinnerdaf45552013-08-28 00:53:59 +0200659os
660--
661
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200662New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200663descriptors or a Windows handle:
664
665* :func:`os.get_inheritable`, :func:`os.set_inheritable`
666* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
667
668
R David Murray78d692f2013-10-10 17:23:26 -0400669pdb
670---
671
672The ``print`` command has been removed from :mod:`pdb`, restoring access to the
673``print`` function.
674
675Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
676entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
677mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
678prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
679command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
680``print`` function, making it inaccessible at the ``pdb`` prompt.
681
682(Contributed by Connor Osborn in :issue:`18764`.)
683
684
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200685poplib
686------
687
688New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
689an encrypted POP3 session.
690
691New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
692POP3 server.
693
694(Contributed by Lorenzo Catucci in :issue:`4473`.)
695
696
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300697pprint
698------
699
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200700The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300701sequences (:issue:`19132`).
702
703
Nick Coghlan367df122013-10-27 01:57:34 +1000704pydoc
705-----
706
707While significant changes have not been made to :mod:`pydoc` directly,
708its handling of custom ``__dir__`` methods and various descriptor
709behaviours has been improved substantially by the underlying changes in
710the :mod:`inspect` module.
711
712
Serhiy Storchaka32eddc12013-11-23 23:20:30 +0200713re
714--
715
716Added :func:`re.fullmatch` function and :meth:`regex.fullmatch` method,
717which anchor the pattern at both ends of the string to match.
718(Contributed by Matthew Barnett in :issue:`16203`.)
719
Ezio Melottidd7e2912013-11-25 23:20:20 +0200720The repr of :ref:`regex objects <re-objects>` now includes the pattern
721and the flags; the repr of :ref:`match objects <match-objects>` now
722includes the start, end, and the part of the string that matched.
Ezio Melottidd7e2912013-11-25 23:20:20 +0200723(Contributed by Serhiy Storchaka in :issue:`13592` and :issue:`17087`.)
724
725
Christian Heimesb7bd5df2013-10-22 11:21:54 +0200726resource
727--------
728
729New :func:`resource.prlimit` function and Linux specific constants.
730(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
731
R David Murray8e37d5d2013-04-13 14:49:48 -0400732smtplib
733-------
734
R David Murray8a345962013-04-14 06:46:35 -0400735:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400736both socket level errors and SMTP protocol level errors to be caught in one
737try/except statement by code that only cares whether or not an error occurred.
738(:issue:`2118`).
739
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200740
Victor Stinnerdaf45552013-08-28 00:53:59 +0200741socket
742------
743
Georg Brandl5642ff92013-09-15 10:37:57 +0200744Socket objects have new methods to get or set their :ref:`inheritable flag
745<fd_inheritance>`:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200746
747* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
748
Eli Bendersky34567ec2013-08-31 15:18:48 -0700749The ``socket.AF_*`` and ``socket.SOCK_*`` constants are enumeration values,
750using the new :mod:`enum` module. This allows descriptive reporting during
751debugging, instead of seeing integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200752
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200753ssl
754---
755
R David Murray748bad22013-12-20 17:08:39 -0500756.. _whatsnew-tls-11-12:
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200757
R David Murray748bad22013-12-20 17:08:39 -0500758:data:`~ssl.PROTOCOL_TLSv1_1` and :data:`~ssl.PROTOCOL_TLSv1_2` (TLSv1.1 and
759TLSv1.2 support) have been added; support for these protocols is only available if
760Python is linked with OpenSSL 1.0.1 or later. (Contributed by Michele Orrù and
761Antoine Pitrou in :issue:`16692`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200762
R David Murray748bad22013-12-20 17:08:39 -0500763New diagnostic functions :func:`~ssl.get_default_verify_paths`,
764:meth:`~ssl.SSLContext.cert_store_stats` and
765:meth:`~ssl.SSLContext.get_ca_certs` (Contributed by Christian Heimes
766in :issue:`18143` and :issue:`18147`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200767
R David Murray748bad22013-12-20 17:08:39 -0500768Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
769cert store. (Contributed by Christian Heimes in :issue:`17134`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200770
771Support for server-side SNI using the new
772:meth:`ssl.SSLContext.set_servername_callback` method.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200773(Contributed by Daniel Black in :issue:`8109`.)
774
775
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200776stat
777----
778
779The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
780implementation is required as most of the values aren't standardized and
781platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
782
783The module supports new file types: door, event port and whiteout.
784
785
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200786struct
787------
788
789Streaming struct unpacking using :func:`struct.iter_unpack`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200790(Contributed by Antoine Pitrou in :issue:`17804`.)
791
792
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300793sunau
794-----
795
796The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
797plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
798
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300799:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
800
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300801
Andrew Kuchling173a1572013-09-15 18:15:56 -0400802traceback
803---------
804
805A new :func:`traceback.clear_frames` function takes a traceback object
806and clears the local variables in all of the frames it references,
807reducing the amount of memory consumed (:issue:`1565525`).
808
809
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200810urllib
811------
812
813Add support.for ``data:`` URLs in :mod:`urllib.request`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200814(Contributed by Mathias Panzenböck in :issue:`16423`.)
815
816
817unittest
818--------
819
820Support for easy dynamically-generated subtests using the
821:meth:`~unittest.TestCase.subTest` context manager.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200822(Contributed by Antoine Pitrou in :issue:`16997`.)
823
R David Murray8e37d5d2013-04-13 14:49:48 -0400824
R David Murray671cd322013-04-10 12:31:43 -0400825wave
826----
827
828The :meth:`~wave.getparams` method now returns a namedtuple rather than a
829plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
830
R David Murrayc91d5ee2013-07-31 13:46:08 -0400831:meth:`wave.open` now supports the context manager protocol. (Contributed
832by Claudiu Popa in :issue:`17616`.)
833
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200834
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200835weakref
836-------
837
838New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000839methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200840
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000841New :class:`~weakref.finalize` class makes it possible to register a callback
842to be invoked when an object is garbage collected, without needing to
843carefully manage the lifecycle of the weak reference itself. (Contributed by
844Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200845
846
847xml.etree
848---------
849
850Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -0700851:class:`~xml.etree.ElementTree.XMLPullParser`.
Eli Benderskyb5869342013-08-30 05:51:20 -0700852(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200853
Christian Tismer59202e52013-10-21 03:59:23 +0200854
855zipfile.PyZipfile
856-----------------
857
858Add a filter function to ignore some packages (tests for instance),
859:meth:`~zipfile.PyZipFile.writepy`.
Christian Tismer59202e52013-10-21 03:59:23 +0200860(Contributed by Christian Tismer in :issue:`19274`.)
861
862
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200863Other improvements
864==================
865
866Tab-completion is now enabled by default in the interactive interpreter.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200867(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
868
Eli Bendersky96d848a2013-09-06 06:55:58 -0700869Python invocation changes
870=========================
871
872Invoking the Python interpreter with ``--version`` now outputs the version to
873standard output instead of standard error (:issue:`18338`). Similar changes
874were made to :mod:`argparse` (:issue:`18920`) and other modules that have
875script-like invocation capabilities (:issue:`18922`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200876
Georg Brandlb80f5112012-09-30 09:11:58 +0200877Optimizations
878=============
879
880Major performance enhancements have been added:
881
Victor Stinnere64322e2012-10-30 23:12:47 +0100882* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200883
Raymond Hettingerc301b552013-08-19 09:12:20 -0700884* The cost of hash collisions for sets is now reduced. Each hash table
Raymond Hettinger8408dc52013-09-15 14:57:15 -0700885 probe now checks a series of consecutive, adjacent key/hash pairs before
886 continuing to make random probes through the hash table. This exploits
887 cache locality to make collision resolution less expensive.
888
889 The collision resolution scheme can be described as a hybrid of linear
890 probing and open addressing. The number of additional linear probes
891 defaults to nine. This can be changed at compile-time by defining
892 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
893 linear probing entirely.
Raymond Hettingerc301b552013-08-19 09:12:20 -0700894
Christian Heimes086b1af2013-10-22 11:49:34 +0200895 (Contributed by Raymond Hettinger in :issue:`18771`.)
Raymond Hettingerc301b552013-08-19 09:12:20 -0700896
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200897* The interpreter starts about 30% faster. A couple of measures lead to the
Eric V. Smith57841dd2013-10-13 00:36:08 -0400898 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200899 :mod:`collections` and :mod:`locale` modules and their dependencies are no
900 longer imported by default. The marshal module has been improved to load
901 compiled Python code faster.
902
903 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
904 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
905 :issue:`9548`)
906
907
Nick Coghlan367df122013-10-27 01:57:34 +1000908CPython Implementation Changes
909==============================
910
911
R David Murrayc16dfe12013-12-21 12:32:10 -0500912.. _whatsnew-pep-445:
Nick Coghlan367df122013-10-27 01:57:34 +1000913
914PEP 445: Customization of CPython memory allocators
915---------------------------------------------------
916
917:pep:`445` adds new C level interfaces to customize memory allocation in
918the CPython interpreter.
919
920.. seealso::
921
922 :pep:`445` - Add new APIs to customize Python memory allocators
923 PEP written and implemented by Victor Stinner.
924
925
R David Murrayc16dfe12013-12-21 12:32:10 -0500926.. _whatsnew-pep-442:
Nick Coghlan367df122013-10-27 01:57:34 +1000927
928PEP 442: Safe object finalization
929---------------------------------
930
931:pep:`442` removes the current limitations and quirks of object finalization
932in CPython. With it, objects with :meth:`__del__` methods, as well as
933generators with :keyword:`finally` clauses, can be finalized when they are
934part of a reference cycle.
935
936As part of this change, module globals are no longer forcibly set to
937:const:`None` during interpreter shutdown in most cases, instead relying
938on the normal operation of the cyclic garbage collector.
939
940.. seealso::
941
942 :pep:`442` - Safe object finalization
943 PEP written and implemented by Antoine Pitrou.
944
945
R David Murrayc16dfe12013-12-21 12:32:10 -0500946.. _whatsnew-pep-456:
947
948PEP 456: Secure and Interchangeable Hash Algorithm
949--------------------------------------------------
950
951:pep:`456` follows up on earlier security fix work done on Python's hash
952algorithm to address certain DOS attacks to which public facing APIs backed by
953dictionary lookups may be subject. (See :issue:`14621` for the start of the
954current round of improvements.) The PEP unifies CPython's hash code to make it
955easier for a packager to substitute a different hash algorithm, and switches
956Python's default implementation to a SipHash implementation on platforms that
957have a 64 bit data type. Any performance differences in comparison with the
958older FNV algorithm are trivial.
959
960The PEP adds additional fields to the :func:`sys.hash_info` struct sequence to
961describe the hash algorithm in use by the currently executing binary. Otherwise,
962the PEP does not alter any existing CPython APIs.
963
964
Nick Coghlan367df122013-10-27 01:57:34 +1000965Other build and C API changes
966-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200967
968Changes to Python's build process and to the C API include:
969
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000970* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
971 allows applications embedding the CPython interpreter to reliably force
972 a particular encoding and error handler for the standard streams
973 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200974
Nick Coghlan0acceb72013-10-20 13:22:21 +1000975* Most Python C APIs that don't mutate string arguments are now correctly
976 marked as accepting ``const char *`` rather than ``char *`` (Contributed
977 by Serhiy Storchaka in :issue:`1772673`).
978
979* "Argument Clinic" (:pep:`436`) is now part of the CPython build process
980 and can be used to simplify the process of defining and maintaining
981 accurate signatures for builtins and standard library extension modules
982 implemented in C.
983
Nick Coghlan367df122013-10-27 01:57:34 +1000984 .. note::
985 The Argument Clinic PEP is not fully up to date with the state of the
986 implementation. This has been deemed acceptable by the release manager
987 and core development team in this case, as Argument Clinic will not
988 be made available as a public API for third party use in Python 3.4.
989
Georg Brandlb80f5112012-09-30 09:11:58 +0200990
991Deprecated
992==========
993
994Unsupported Operating Systems
995-----------------------------
996
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200997* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200998* Windows 2000
Christian Heimesaf01f662013-12-21 16:19:10 +0100999* VMS
Georg Brandlb80f5112012-09-30 09:11:58 +02001000
1001
1002Deprecated Python modules, functions and methods
1003------------------------------------------------
1004
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -04001005* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -04001006 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
1007 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +02001008
Brett Cannon82b3d6a2013-06-14 22:37:11 -04001009* :func:`importlib.util.module_for_loader` is pending deprecation. Using
1010 :func:`importlib.util.module_to_load` and
1011 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
1012 to more easily customize module loading.
1013
Brett Cannone4f41de2013-06-16 13:13:40 -04001014* The :mod:`imp` module is pending deprecation. To keep compatibility with
1015 Python 2/3 code bases, the module's removal is currently not scheduled.
1016
Brett Cannon1448ecf2013-10-04 11:38:59 -04001017* The :mod:`formatter` module is pending deprecation and is slated for removal
1018 in Python 3.6.
1019
Christian Heimes634919a2013-11-20 17:23:06 +01001020* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
1021 require an explicit digest name or constructor as *digestmod* argument.
1022
Georg Brandlb80f5112012-09-30 09:11:58 +02001023
1024Deprecated functions and types of the C API
1025-------------------------------------------
1026
Victor Stinner3dd263f2013-10-23 18:54:43 +02001027* The ``PyThreadState.tick_counter`` field has been removed: its value was
1028 meaningless since Python 3.2 ("new GIL").
Georg Brandlb80f5112012-09-30 09:11:58 +02001029
1030
1031Deprecated features
1032-------------------
1033
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +02001034* The site module adding a "site-python" directory to sys.path, if it
1035 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +02001036
1037
Benjamin Peterson88f3b232012-10-04 12:45:10 -04001038Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +02001039=====================
1040
Victor Stinner774b2e02013-12-13 14:33:01 +01001041Changes in the Python API
1042-------------------------
1043
Georg Brandlb80f5112012-09-30 09:11:58 +02001044This section lists previously described changes and other bugfixes
1045that may require changes to your code.
1046
Brett Cannon777622b2013-04-09 17:03:10 -04001047* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
1048 exception or return a default value instead of raising
1049 :exc:`NotImplementedError` blindly. This will only affect code calling
1050 :func:`super` and falling through all the way to the ABCs. For compatibility,
1051 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001052
1053* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
1054 attributes to ``None`` by default. To determine if these attributes were set
1055 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001056 ``getattr(module, '__loader__', None) is not None``.
1057
1058* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
1059 ``__package__`` unconditionally to properly support reloading. If this is not
1060 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -04001061 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -04001062
1063* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
1064 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
1065
Brett Cannon1448ecf2013-10-04 11:38:59 -04001066* Frozen packages no longer set ``__path__`` to a list containing the package
1067 name but an empty list instead. Determing if a module is a package should be
1068 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -04001069
Brett Cannon33915eb2013-06-14 18:33:00 -04001070* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
1071 it would write to is a symlink or a non-regular file. This is to act as a
1072 warning that import will overwrite those files with a regular file regardless
1073 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -04001074
1075* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
1076 :exc:`ImportError` when the source code being loaded triggers a
1077 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
1078 meant to be raised only when source code cannot be found but it should, it was
1079 felt to be over-reaching/overloading of that meaning when the source code is
1080 found but improperly structured. If you were catching ImportError before and
1081 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +02001082 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +10001083
1084* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
Nick Coghlan367df122013-10-27 01:57:34 +10001085 set the ``__wrapped__`` attribute to the function being wrapper, even if
1086 that function also had its ``__wrapped__`` attribute set. This means
1087 ``__wrapped__`` attributes now correctly link a stack of decorated
1088 functions rather than every ``__wrapped__`` attribute in the chain
1089 referring to the innermost function. Introspection libraries that
1090 assumed the previous behaviour was intentional can use
1091 :func:`inspect.unwrap` to access the first function in the chain that has
1092 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +02001093
Georg Brandl0f5bff22013-10-19 17:46:38 +02001094* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -04001095 directory to objects in :data:`sys.path_hooks` for the empty string. This
1096 results in :data:`sys.path_importer_cache` never containing ``''``, thus
1097 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
1098 will not find all keys. A module's ``__file__`` when imported in the current
1099 working directory will also now have an absolute path, including when using
1100 ``-m`` with the interpreter (this does not influence when the path to a file
1101 is specified on the command-line).
Victor Stinner2748bc72013-12-13 10:57:04 +01001102
Victor Stinner774b2e02013-12-13 14:33:01 +01001103Changes in the C API
1104--------------------
1105
1106* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
1107 argument is not set. Previously only ``NULL`` was returned with no exception
1108 set.
1109
1110* The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
1111 now be a string allocated by :c:func:`PyMem_RawMalloc` or
1112 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
1113 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
1114
1115* :c:func:`PyThread_set_key_value` now always set the value. In Python
Victor Stinner2748bc72013-12-13 10:57:04 +01001116 3.3, the function did nothing if the key already exists (if the current
1117 value is a non-NULL pointer).
1118
Victor Stinner774b2e02013-12-13 14:33:01 +01001119* The ``f_tstate`` (thread state) field of the :c:type:`PyFrameObject`
1120 structure has been removed to fix a bug: see :issue:`14432` for the
1121 rationale.
1122