blob: 7550b35800368469ea66ca4116c12eaec81402d9 [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
121 (:class:`~email.contentmanager.EmailMessage`) that simplify MIME handling.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200122
Nick Coghlan367df122013-10-27 01:57:34 +1000123CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200124
Nick Coghlan367df122013-10-27 01:57:34 +1000125* :ref:`PEP 442: Safe object finalization <pep-442>`
126* :ref:`PEP 445: Configurable memory allocators <pep-445>`
Christian Heimes985ecdc2013-11-20 11:46:18 +0100127* :pep:`456` Secure and interchangeable hash algorithm
Nick Coghlan367df122013-10-27 01:57:34 +1000128* Improve finalization of Python modules to avoid setting their globals
129 to None, in most cases (:issue:`18214`).
130* A more efficient :mod:`marshal` format (:issue:`16475`).
131* "Argument Clinic", an initial step towards providing improved introspection
132 support for builtin and standard library extension types implemented in C
133 (:pep:`436`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200134
135Please read on for a comprehensive list of user-facing changes.
136
Nick Coghland0cf0632013-11-11 22:11:55 +1000137
138PEP 453: Explicit bootstrapping of pip in Python installations
139==============================================================
140
141The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
142cross-platform mechanism to boostrap the pip installer into Python
143installations and virtual environments.
144
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000145The :mod:`venv` module and the :command:`pyvenv` utility make use of this
146module to make ``pip`` readily available in virtual environments. When
147using the command line interface, ``pip`` is installed by default, while
148for the module API installation of ``pip`` must be requested explicitly.
149
150For CPython source builds on POSIX systems, the ``make install`` and
151``make altinstall`` commands bootstrap ``pip`` by default. This behaviour
152can be controlled through configure options, and overridden through
153Makefile options.
154
Ned Deily44a0db02013-11-22 22:39:09 -0800155On Windows and Mac OS X, the CPython installers now offer the option to
156install ``pip`` along with CPython itself.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000157
Nick Coghland0cf0632013-11-11 22:11:55 +1000158.. note::
159
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000160 The implementation of PEP 453 is still a work in progress. Refer to
161 :issue:`19347` for the progress on additional steps:
Nick Coghland0cf0632013-11-11 22:11:55 +1000162
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000163 * Having the binary installers install ``pip`` by default
164 * Recommending the use of ``pip`` in the "Installing Python Module"
165 documentation.
Nick Coghland0cf0632013-11-11 22:11:55 +1000166
167.. seealso::
168
169 :pep:`453` - Explicit bootstrapping of pip in Python installations
170 PEP written by Donald Stufft and Nick Coghlan, implemented by
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000171 Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily.
Nick Coghland0cf0632013-11-11 22:11:55 +1000172
173
R David Murrayf9909c22013-12-20 14:50:12 -0500174.. _whatsnew-pep-446:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200175
176PEP 446: Make newly created file descriptors non-inheritable
177============================================================
178
Nick Coghlan367df122013-10-27 01:57:34 +1000179:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200180<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200181
182* :func:`os.get_inheritable`, :func:`os.set_inheritable`
183* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
184* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
185
Antoine Pitrou796564c2013-07-30 19:59:21 +0200186.. seealso::
187
Nick Coghlan367df122013-10-27 01:57:34 +1000188 :pep:`446` - Make newly created file descriptors non-inheritable
189 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200190
Georg Brandlb80f5112012-09-30 09:11:58 +0200191
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000192.. _codec-handling-improvements:
193
194Improvements to codec handling
195==============================
Nick Coghlan8b097b42013-11-13 23:49:21 +1000196
197Since it was first introduced, the :mod:`codecs` module has always been
198intended to operate as a type-neutral dynamic encoding and decoding
199system. However, its close coupling with the Python text model, especially
200the type restricted convenience methods on the builtin :class:`str`,
201:class:`bytes` and :class:`bytearray` types, has historically obscured that
202fact.
203
204As a key step in clarifying the situation, the :meth:`codecs.encode` and
205:meth:`codecs.decode` convenience functions are now properly documented in
206Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000207module (and have been covered by the regression test suite) since Python 2.4,
Nick Coghlan8b097b42013-11-13 23:49:21 +1000208but were previously only discoverable through runtime introspection.
209
210Unlike the convenience methods on :class:`str`, :class:`bytes` and
211:class:`bytearray`, these convenience functions support arbitrary codecs
212in both Python 2 and Python 3, rather than being limited to Unicode text
213encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
214(in Python 2).
215
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000216In Python 3.4, the interpreter is able to identify the known non-text
217encodings provided in the standard library and direct users towards these
218general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000219
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000220 >>> b"abcdef".decode("hex")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000221 Traceback (most recent call last):
222 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000223 LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000224
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000225 >>> "hello".encode("rot13")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000226 Traceback (most recent call last):
227 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000228 LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000229
230In a related change, whenever it is feasible without breaking backwards
231compatibility, exceptions raised during encoding and decoding operations
232will be wrapped in a chained exception of the same type that mentions the
233name of the codec responsible for producing the error::
234
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000235 >>> import codecs
236
237 >>> codecs.decode(b"abcdefgh", "hex")
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000238 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000239
240 The above exception was the direct cause of the following exception:
241
242 Traceback (most recent call last):
243 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000244 binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000245
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000246 >>> codecs.encode("hello", "bz2")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000247 TypeError: 'str' does not support the buffer interface
248
249 The above exception was the direct cause of the following exception:
250
251 Traceback (most recent call last):
252 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000253 TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not support the buffer interface)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000254
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000255Finally, as the examples above show, these improvements have permitted
256the restoration of the convenience aliases for the non-Unicode codecs that
257were themselves restored in Python 3.2. This means that encoding binary data
258to and from its hexadecimal representation (for example) can now be written
259as::
260
261 >>> from codecs import encode, decode
262 >>> encode(b"hello", "hex")
263 b'68656c6c6f'
264 >>> decode(b"68656c6c6f", "hex")
265 b'hello'
266
267The binary and text transforms provided in the standard library are detailed
268in :ref:`binary-transforms` and :ref:`text-transforms`.
269
270(Contributed by Nick Coghlan in :issue:`7475`, , :issue:`17827`,
271:issue:`17828` and :issue:`19619`)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000272
Eric Snowb523f842013-11-22 09:05:39 -0700273.. _pep-451:
274
275PEP 451: A ModuleSpec Type for the Import System
276================================================
277
278:pep:`451` provides an encapsulation of the information about a module
279that the import machinery will use to load it, (i.e. a module spec).
280This helps simplify both the import implementation and several
281import-related APIs. The change is also a stepping stone for several
282future import-related improvements.
283
284https://mail.python.org/pipermail/python-dev/2013-November/130111.html
285
286The public-facing changes from the PEP are entirely backward-compatible.
287Furthermore, they should be transparent to everyone but importer
288authors. Key finder and loader methods have been deprecated, but they
289will continue working. New importers should use the new methods
290described in the PEP. Existing importers should be updated to implement
291the new methods.
292
Nick Coghlan8b097b42013-11-13 23:49:21 +1000293
R David Murrayc0540402013-12-20 16:38:09 -0500294.. _whatsnew-protocol-4:
295
Antoine Pitrouc9dc4a22013-11-23 18:59:12 +0100296Pickle protocol 4
297=================
298
299The new :mod:`pickle` protocol addresses a number of issues that were present
300in previous protocols, such as the serialization of nested classes, very
301large strings and containers, or classes whose :meth:`__new__` method takes
302keyword-only arguments. It also brings a couple efficiency improvements.
303
304.. seealso::
305
306 :pep:`3154` - Pickle protocol 4
307 PEP written by Antoine Pitrou and implemented by Alexandre Vassalotti.
308
309
Georg Brandlb80f5112012-09-30 09:11:58 +0200310Other Language Changes
311======================
312
313Some smaller changes made to the core Python language are:
314
Ezio Melotti34808e22013-10-12 16:36:13 +0300315* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200316
R David Murray9a2f1392013-06-28 13:31:19 -0400317* :func:`min` and :func:`max` now accept a *default* argument that can be used
318 to specify the value they return if the iterable they are evaluating has no
319 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200320
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200321* Module objects are now :mod:`weakref`'able.
322
Nick Coghlan0acceb72013-10-20 13:22:21 +1000323* Module ``__file__`` attributes (and related values) should now always
324 contain absolute paths by default, with the sole exception of
325 ``__main__.__file__`` when a script has been executed directly using
326 a relative path (Contributed by Brett Cannon in :issue:`18416`).
327
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200328* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
329 encoding and decoding unless the ``surrogatepass`` error handler is used,
330 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
331 and the UTF-16 encoder that produces them while encoding non-BMP characters.
332 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
333 :issue:`12892`.
334
Georg Brandlb80f5112012-09-30 09:11:58 +0200335
336New Modules
337===========
338
Nick Coghlan0acceb72013-10-20 13:22:21 +1000339
340asyncio
341-------
342
343The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
344pluggable event loop model for Python, providing solid asynchronous IO
345support in the standard library, and making it easier for other event loop
346implementations to interoperate with the standard library and each other.
347
348For Python 3.4, this module is considered a :term:`provisional API`.
349
Nick Coghlan367df122013-10-27 01:57:34 +1000350.. seealso::
351
352 :pep:`3156` - Asynchronous IO Support Rebooted: the "asyncio" Module
353 PEP written and implementation led by Guido van Rossum.
354
Nick Coghlan0acceb72013-10-20 13:22:21 +1000355enum
356----
357
Nick Coghlan367df122013-10-27 01:57:34 +1000358The new :mod:`enum` module (defined in :pep:`435`) provides a standard
359implementation of enumeration types, allowing other modules (such as
360:mod:`socket`) to provide more informative error messages and better
361debugging support by replacing opaque integer constants with backwards
362compatible enumeration values.
363
364.. seealso::
365
366 :pep:`435` - Adding an Enum type to the Python standard library
367 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
368 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000369
370
Antoine Pitrou31119e42013-11-22 17:38:12 +0100371pathlib
372-------
373
374The new :mod:`pathlib` module offers classes representing filesystem paths
375with semantics appropriate for different operating systems. Path classes are
376divided between *pure paths*, which provide purely computational operations
377without I/O, and *concrete paths*, which inherit from pure paths but also
378provide I/O operations.
379
380For Python 3.4, this module is considered a :term:`provisional API`.
381
382.. seealso::
383
384 :pep:`428` - The pathlib module -- object-oriented filesystem paths
385 PEP written and implemented by Antoine Pitrou.
386
387
Charles-François Natali243d8d82013-09-04 19:02:49 +0200388selectors
389---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200390
Nick Coghlan0acceb72013-10-20 13:22:21 +1000391The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
392allows high-level and efficient I/O multiplexing, built upon the
393:mod:`select` module primitives.
394
395
396statistics
397----------
398
399The new :mod:`statistics` module (defined in :pep:`450`) offers some core
400statistics functionality directly in the standard library. This module
401supports calculation of the mean, median, mode, variance and standard
402deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200403
Nick Coghlan367df122013-10-27 01:57:34 +1000404.. seealso::
405
406 :pep:`450` - Adding A Statistics Module To The Standard Library
407 PEP written and implemented by Steven D'Aprano
408
Georg Brandlb80f5112012-09-30 09:11:58 +0200409
Victor Stinnerd2736af2013-11-25 09:40:27 +0100410tracemalloc
411-----------
412
413The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to
414trace memory blocks allocated by Python. It provides the following information:
415
416* Traceback where an object was allocated
417* Statistics on allocated memory blocks per filename and per line number:
418 total size, number and average size of allocated memory blocks
419* Compute the differences between two snapshots to detect memory leaks
420
421.. seealso::
422
423 :pep:`454` - Add a new tracemalloc module to trace Python memory allocations
424 PEP written and implemented by Victor Stinner
425
426
Georg Brandlb80f5112012-09-30 09:11:58 +0200427Improved Modules
428================
429
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200430aifc
431----
432
433The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
434plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
435
436
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300437audioop
438-------
439
440Added support for 24-bit samples (:issue:`12866`).
441
Serhiy Storchaka3062c9a2013-11-23 22:26:01 +0200442Added the :func:`~audioop.byteswap` function to convert big-endian samples
443to little-endian and vice versa (:issue:`19641`).
444
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300445
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000446base64
447------
448
449The encoding and decoding functions in :mod:`base64` now accept any
450:term:`bytes-like object` in cases where it previously required a
Georg Brandled007d52013-11-24 16:09:26 +0100451:class:`bytes` or :class:`bytearray` instance (:issue:`17839`).
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000452
453
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200454colorsys
455--------
456
457The number of digits in the coefficients for the RGB --- YIQ conversions have
458been expanded so that they match the FCC NTSC versions. The change in
459results should be less than 1% and may better match results found elsewhere.
460
R David Murray8e37d5d2013-04-13 14:49:48 -0400461
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000462contextlib
463----------
464
Nick Coghlan240f86d2013-10-17 23:40:57 +1000465The new :class:`contextlib.suppress` context manager helps to clarify the
466intent of code that deliberately suppresses exceptions from a single
467statement. (Contributed by Raymond Hettinger in :issue:`15806` and
468Zero Piraeus in :issue:`19266`)
469
Victor Stinner6633c392013-10-21 13:27:11 +0200470The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000471for utility scripts to handle inflexible APIs that don't provide any
472options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000473other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
474this context manager is also useful for checking expected output from
475command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
476
477The :mod:`contextlib` documentation has also been updated to include a
478:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
479differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000480
481
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000482dis
483---
484
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300485The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
486that provides details of individual bytecode operations and a
487:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000488given piece of Python code. The various display tools in the :mod:`dis`
489module have been updated to be based on these new components.
490
491The new :class:`dis.Bytecode` class provides an object-oriented API for
492inspecting bytecode, both in human-readable form and for iterating over
493instructions.
494
Nick Coghlan50c48b82013-11-23 00:57:00 +1000495(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
496and Claudiu Popa in :issue:`17916`)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000497
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200498
R David Murray5a9d7062012-11-21 15:09:21 -0500499doctest
500-------
501
R David Murray5707d502013-06-23 14:24:13 -0400502Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
503failure is detected. (Contributed by R. David Murray and Daniel Urban in
504:issue:`16522`.)
505
506Updated the doctest command line interface to use :mod:`argparse`, and added
507``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
508be specified on the command line, and ``-f`` is a shorthand for ``-o
509FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
510CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200511
R David Murray8e37d5d2013-04-13 14:49:48 -0400512
R David Murraybb17d2b2013-08-09 16:15:28 -0400513email
514-----
515
516:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
517override the default policy of the message when generating a string
518representation of it. This means that ``as_string`` can now be used in more
519circumstances, instead of having to create and use a :mod:`~email.generator` in
520order to pass formatting parameters to its ``flatten`` method.
521
522New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
523representation of the message in a fashion similar to how ``as_string``
524produces a string representation. It does not accept the *maxheaderlen*
525argument, but does accept the *unixfrom* and *policy* arguments. The
526:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
527calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
528result: a bytes object containing the fully formatted message.
529
530(Contributed by R. David Murray in :issue:`18600`.)
531
R David Murray3da240f2013-10-16 22:48:40 -0400532A pair of new subclasses of :class:`~email.message.Message` have been added,
533along with a new sub-module, :mod:`~email.contentmanager`. All documentation
534is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000535:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400536number of new methods that make extracting content from and inserting content
537into email messages much easier. See the :mod:`~email.contentmanager`
538documentation for details.
539
540These API additions complete the bulk of the work that was planned as part of
541the email6 project. The currently provisional API is scheduled to become final
542in Python 3.5 (possibly with a few minor additions in the area of error
543handling).
544
545(Contributed by R. David Murray in :issue:`18891`.)
546
R David Murraybb17d2b2013-08-09 16:15:28 -0400547
Victor Stinner854ffcb2013-06-21 00:36:30 +0200548functools
549---------
550
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000551The new :func:`~functools.partialmethod` descriptor bring partial argument
552application to descriptors, just as :func:`~functools.partial` provides
553for normal callables. The new descriptor also makes it easier to get
554arbitrary callables (including :func:`~functools.partial` instances)
555to behave like normal instance methods when included in a class definition.
556
557(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
558
R David Murray0a102162013-12-20 15:00:54 -0500559.. _whatsnew-singledispatch:
560
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000561The new :func:`~functools.singledispatch` decorator brings support for
562single-dispatch generic functions to the Python standard library. Where
563object oriented programming focuses on grouping multiple operations on a
564common set of data into a class, a generic function focuses on grouping
565multiple implementations of an operation that allows it to work with
566*different* kinds of data.
567
568.. seealso::
569
570 :pep:`443` - Single-dispatch generic functions
571 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200572
Nick Coghlane8c45d62013-07-28 20:00:01 +1000573
Christian Heimese92ef132013-10-13 00:52:43 +0200574hashlib
575-------
576
577New :func:`hashlib.pbkdf2_hmac` function.
Christian Heimese92ef132013-10-13 00:52:43 +0200578(Contributed by Christian Heimes in :issue:`18582`)
579
R David Murraycde1a062013-12-20 16:33:52 -0500580.. _whatsnew-sha3:
581
582New :ref:`hash algorithms <hash-algorithms>` ``sah3_224()``, ``sha3_256()``,
583``sha3_384()``, and ``sha3_512()``. (Contributed by Christian Heimes in
584:issue:`16113`.)
585
Christian Heimese92ef132013-10-13 00:52:43 +0200586
Ezio Melotti250a06c2013-11-25 06:18:47 +0200587html
588----
589
590Added a new :func:`html.unescape` function that converts HTML5 character
591references to the corresponding Unicode characters.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200592(Contributed by Ezio Melotti in :issue:`2927`)
593
594Added a new *convert_charrefs* keyword argument to
595:class:`~html.parser.HTMLParser` that, when ``True``, automatically converts
596all character references. For backward-compatibility, its value defaults
597to ``False``, but it will change to ``True`` in future versions, so you
598are invited to set it explicitly and update your code to use this new feature.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200599(Contributed by Ezio Melotti in :issue:`13633`)
600
601The *strict* argument of :class:`~html.parser.HTMLParser` is now deprecated.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200602(Contributed by Ezio Melotti in :issue:`15114`)
603
604
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200605inspect
606-------
607
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000608
Nick Coghlan367df122013-10-27 01:57:34 +1000609The inspect module now offers a basic :ref:`command line interface
610<inspect-module-cli>` to quickly display source code and other
611information for modules, classes and functions. (Contributed by Claudiu Popa
612and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000613
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200614:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
615created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000616``__wrapped__`` attribute on a wrapper function). (Contributed by
617Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
618
619As part of the implementation of the new :mod:`enum` module, the
620:mod:`inspect` module now has substantially better support for custom
621``__dir__`` methods and dynamic class attributes provided through
622metaclasses (Contributed by Ethan Furman in :issue:`18929` and
623:issue:`19030`)
624
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200625
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200626mmap
627----
628
629mmap objects can now be weakref'ed.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200630(Contributed by Valerie Lambert in :issue:`4885`.)
631
632
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100633multiprocessing
634---------------
635
R David Murrayac186222013-12-20 17:23:57 -0500636.. _whatsnew-multiprocessing-no-fork:
637
638On Unix, two new :ref:`start methods <multiprocessing-start-methods>`
639(``spawn`` and ``forkserver``) have been added for starting processes using
640:mod:`multiprocessing`. These make the mixing of processes with threads more
641robust, and the ``spawn`` method matches the semantics that multiprocessing has
642always used on Windows. (Contributed by Richard Oudkerk in :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100643
644Also, except when using the old *fork* start method, child processes
R David Murrayac186222013-12-20 17:23:57 -0500645will no longer inherit unneeded handles/file descriptors from their parents
646(part of :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100647
Nick Coghlan9a767352013-12-17 22:17:26 +1000648:mod:`multiprocessing` now relies on :mod:`runpy` (which implements the
649``-m`` switch) to initialise ``__main__`` appropriately in child processes
650when using the ``spawn`` or ``forkserver`` start methods. This resolves some
651edge cases where combining multiprocessing, the ``-m`` command line switch
652and explicit relative imports could cause obscure failures in child
653processes. (Contributed by Nick Coghlan in :issue:`19946`)
654
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100655
Victor Stinnerdaf45552013-08-28 00:53:59 +0200656os
657--
658
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200659New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200660descriptors or a Windows handle:
661
662* :func:`os.get_inheritable`, :func:`os.set_inheritable`
663* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
664
665
R David Murray78d692f2013-10-10 17:23:26 -0400666pdb
667---
668
669The ``print`` command has been removed from :mod:`pdb`, restoring access to the
670``print`` function.
671
672Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
673entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
674mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
675prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
676command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
677``print`` function, making it inaccessible at the ``pdb`` prompt.
678
679(Contributed by Connor Osborn in :issue:`18764`.)
680
681
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200682poplib
683------
684
685New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
686an encrypted POP3 session.
687
688New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
689POP3 server.
690
691(Contributed by Lorenzo Catucci in :issue:`4473`.)
692
693
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300694pprint
695------
696
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200697The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300698sequences (:issue:`19132`).
699
700
Nick Coghlan367df122013-10-27 01:57:34 +1000701pydoc
702-----
703
704While significant changes have not been made to :mod:`pydoc` directly,
705its handling of custom ``__dir__`` methods and various descriptor
706behaviours has been improved substantially by the underlying changes in
707the :mod:`inspect` module.
708
709
Serhiy Storchaka32eddc12013-11-23 23:20:30 +0200710re
711--
712
713Added :func:`re.fullmatch` function and :meth:`regex.fullmatch` method,
714which anchor the pattern at both ends of the string to match.
715(Contributed by Matthew Barnett in :issue:`16203`.)
716
Ezio Melottidd7e2912013-11-25 23:20:20 +0200717The repr of :ref:`regex objects <re-objects>` now includes the pattern
718and the flags; the repr of :ref:`match objects <match-objects>` now
719includes the start, end, and the part of the string that matched.
Ezio Melottidd7e2912013-11-25 23:20:20 +0200720(Contributed by Serhiy Storchaka in :issue:`13592` and :issue:`17087`.)
721
722
Christian Heimesb7bd5df2013-10-22 11:21:54 +0200723resource
724--------
725
726New :func:`resource.prlimit` function and Linux specific constants.
727(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
728
R David Murray8e37d5d2013-04-13 14:49:48 -0400729smtplib
730-------
731
R David Murray8a345962013-04-14 06:46:35 -0400732:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400733both socket level errors and SMTP protocol level errors to be caught in one
734try/except statement by code that only cares whether or not an error occurred.
735(:issue:`2118`).
736
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200737
Victor Stinnerdaf45552013-08-28 00:53:59 +0200738socket
739------
740
Georg Brandl5642ff92013-09-15 10:37:57 +0200741Socket objects have new methods to get or set their :ref:`inheritable flag
742<fd_inheritance>`:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200743
744* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
745
Eli Bendersky34567ec2013-08-31 15:18:48 -0700746The ``socket.AF_*`` and ``socket.SOCK_*`` constants are enumeration values,
747using the new :mod:`enum` module. This allows descriptive reporting during
748debugging, instead of seeing integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200749
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200750ssl
751---
752
R David Murray748bad22013-12-20 17:08:39 -0500753.. _whatsnew-tls-11-12:
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200754
R David Murray748bad22013-12-20 17:08:39 -0500755:data:`~ssl.PROTOCOL_TLSv1_1` and :data:`~ssl.PROTOCOL_TLSv1_2` (TLSv1.1 and
756TLSv1.2 support) have been added; support for these protocols is only available if
757Python is linked with OpenSSL 1.0.1 or later. (Contributed by Michele Orrù and
758Antoine Pitrou in :issue:`16692`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200759
R David Murray748bad22013-12-20 17:08:39 -0500760New diagnostic functions :func:`~ssl.get_default_verify_paths`,
761:meth:`~ssl.SSLContext.cert_store_stats` and
762:meth:`~ssl.SSLContext.get_ca_certs` (Contributed by Christian Heimes
763in :issue:`18143` and :issue:`18147`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200764
R David Murray748bad22013-12-20 17:08:39 -0500765Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
766cert store. (Contributed by Christian Heimes in :issue:`17134`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200767
768Support for server-side SNI using the new
769:meth:`ssl.SSLContext.set_servername_callback` method.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200770(Contributed by Daniel Black in :issue:`8109`.)
771
772
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200773stat
774----
775
776The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
777implementation is required as most of the values aren't standardized and
778platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
779
780The module supports new file types: door, event port and whiteout.
781
782
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200783struct
784------
785
786Streaming struct unpacking using :func:`struct.iter_unpack`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200787(Contributed by Antoine Pitrou in :issue:`17804`.)
788
789
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300790sunau
791-----
792
793The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
794plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
795
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300796:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
797
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300798
Andrew Kuchling173a1572013-09-15 18:15:56 -0400799traceback
800---------
801
802A new :func:`traceback.clear_frames` function takes a traceback object
803and clears the local variables in all of the frames it references,
804reducing the amount of memory consumed (:issue:`1565525`).
805
806
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200807urllib
808------
809
810Add support.for ``data:`` URLs in :mod:`urllib.request`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200811(Contributed by Mathias Panzenböck in :issue:`16423`.)
812
813
814unittest
815--------
816
817Support for easy dynamically-generated subtests using the
818:meth:`~unittest.TestCase.subTest` context manager.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200819(Contributed by Antoine Pitrou in :issue:`16997`.)
820
R David Murray8e37d5d2013-04-13 14:49:48 -0400821
R David Murray671cd322013-04-10 12:31:43 -0400822wave
823----
824
825The :meth:`~wave.getparams` method now returns a namedtuple rather than a
826plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
827
R David Murrayc91d5ee2013-07-31 13:46:08 -0400828:meth:`wave.open` now supports the context manager protocol. (Contributed
829by Claudiu Popa in :issue:`17616`.)
830
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200831
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200832weakref
833-------
834
835New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000836methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200837
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000838New :class:`~weakref.finalize` class makes it possible to register a callback
839to be invoked when an object is garbage collected, without needing to
840carefully manage the lifecycle of the weak reference itself. (Contributed by
841Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200842
843
844xml.etree
845---------
846
847Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -0700848:class:`~xml.etree.ElementTree.XMLPullParser`.
Eli Benderskyb5869342013-08-30 05:51:20 -0700849(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200850
Christian Tismer59202e52013-10-21 03:59:23 +0200851
852zipfile.PyZipfile
853-----------------
854
855Add a filter function to ignore some packages (tests for instance),
856:meth:`~zipfile.PyZipFile.writepy`.
Christian Tismer59202e52013-10-21 03:59:23 +0200857(Contributed by Christian Tismer in :issue:`19274`.)
858
859
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200860Other improvements
861==================
862
863Tab-completion is now enabled by default in the interactive interpreter.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200864(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
865
Eli Bendersky96d848a2013-09-06 06:55:58 -0700866Python invocation changes
867=========================
868
869Invoking the Python interpreter with ``--version`` now outputs the version to
870standard output instead of standard error (:issue:`18338`). Similar changes
871were made to :mod:`argparse` (:issue:`18920`) and other modules that have
872script-like invocation capabilities (:issue:`18922`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200873
Georg Brandlb80f5112012-09-30 09:11:58 +0200874Optimizations
875=============
876
877Major performance enhancements have been added:
878
Victor Stinnere64322e2012-10-30 23:12:47 +0100879* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200880
Raymond Hettingerc301b552013-08-19 09:12:20 -0700881* The cost of hash collisions for sets is now reduced. Each hash table
Raymond Hettinger8408dc52013-09-15 14:57:15 -0700882 probe now checks a series of consecutive, adjacent key/hash pairs before
883 continuing to make random probes through the hash table. This exploits
884 cache locality to make collision resolution less expensive.
885
886 The collision resolution scheme can be described as a hybrid of linear
887 probing and open addressing. The number of additional linear probes
888 defaults to nine. This can be changed at compile-time by defining
889 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
890 linear probing entirely.
Raymond Hettingerc301b552013-08-19 09:12:20 -0700891
Christian Heimes086b1af2013-10-22 11:49:34 +0200892 (Contributed by Raymond Hettinger in :issue:`18771`.)
Raymond Hettingerc301b552013-08-19 09:12:20 -0700893
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200894* The interpreter starts about 30% faster. A couple of measures lead to the
Eric V. Smith57841dd2013-10-13 00:36:08 -0400895 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200896 :mod:`collections` and :mod:`locale` modules and their dependencies are no
897 longer imported by default. The marshal module has been improved to load
898 compiled Python code faster.
899
900 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
901 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
902 :issue:`9548`)
903
904
Nick Coghlan367df122013-10-27 01:57:34 +1000905CPython Implementation Changes
906==============================
907
908
909.. _pep-445:
910
911PEP 445: Customization of CPython memory allocators
912---------------------------------------------------
913
914:pep:`445` adds new C level interfaces to customize memory allocation in
915the CPython interpreter.
916
917.. seealso::
918
919 :pep:`445` - Add new APIs to customize Python memory allocators
920 PEP written and implemented by Victor Stinner.
921
922
923.. _pep-442:
924
925PEP 442: Safe object finalization
926---------------------------------
927
928:pep:`442` removes the current limitations and quirks of object finalization
929in CPython. With it, objects with :meth:`__del__` methods, as well as
930generators with :keyword:`finally` clauses, can be finalized when they are
931part of a reference cycle.
932
933As part of this change, module globals are no longer forcibly set to
934:const:`None` during interpreter shutdown in most cases, instead relying
935on the normal operation of the cyclic garbage collector.
936
937.. seealso::
938
939 :pep:`442` - Safe object finalization
940 PEP written and implemented by Antoine Pitrou.
941
942
943Other build and C API changes
944-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200945
946Changes to Python's build process and to the C API include:
947
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000948* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
949 allows applications embedding the CPython interpreter to reliably force
950 a particular encoding and error handler for the standard streams
951 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200952
Nick Coghlan0acceb72013-10-20 13:22:21 +1000953* Most Python C APIs that don't mutate string arguments are now correctly
954 marked as accepting ``const char *`` rather than ``char *`` (Contributed
955 by Serhiy Storchaka in :issue:`1772673`).
956
957* "Argument Clinic" (:pep:`436`) is now part of the CPython build process
958 and can be used to simplify the process of defining and maintaining
959 accurate signatures for builtins and standard library extension modules
960 implemented in C.
961
Nick Coghlan367df122013-10-27 01:57:34 +1000962 .. note::
963 The Argument Clinic PEP is not fully up to date with the state of the
964 implementation. This has been deemed acceptable by the release manager
965 and core development team in this case, as Argument Clinic will not
966 be made available as a public API for third party use in Python 3.4.
967
Georg Brandlb80f5112012-09-30 09:11:58 +0200968
969Deprecated
970==========
971
972Unsupported Operating Systems
973-----------------------------
974
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200975* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200976* Windows 2000
Georg Brandlb80f5112012-09-30 09:11:58 +0200977
978
979Deprecated Python modules, functions and methods
980------------------------------------------------
981
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -0400982* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -0400983 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
984 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +0200985
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400986* :func:`importlib.util.module_for_loader` is pending deprecation. Using
987 :func:`importlib.util.module_to_load` and
988 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
989 to more easily customize module loading.
990
Brett Cannone4f41de2013-06-16 13:13:40 -0400991* The :mod:`imp` module is pending deprecation. To keep compatibility with
992 Python 2/3 code bases, the module's removal is currently not scheduled.
993
Brett Cannon1448ecf2013-10-04 11:38:59 -0400994* The :mod:`formatter` module is pending deprecation and is slated for removal
995 in Python 3.6.
996
Christian Heimes634919a2013-11-20 17:23:06 +0100997* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
998 require an explicit digest name or constructor as *digestmod* argument.
999
Georg Brandlb80f5112012-09-30 09:11:58 +02001000
1001Deprecated functions and types of the C API
1002-------------------------------------------
1003
Victor Stinner3dd263f2013-10-23 18:54:43 +02001004* The ``PyThreadState.tick_counter`` field has been removed: its value was
1005 meaningless since Python 3.2 ("new GIL").
Georg Brandlb80f5112012-09-30 09:11:58 +02001006
1007
1008Deprecated features
1009-------------------
1010
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +02001011* The site module adding a "site-python" directory to sys.path, if it
1012 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +02001013
1014
Benjamin Peterson88f3b232012-10-04 12:45:10 -04001015Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +02001016=====================
1017
Victor Stinner774b2e02013-12-13 14:33:01 +01001018Changes in the Python API
1019-------------------------
1020
Georg Brandlb80f5112012-09-30 09:11:58 +02001021This section lists previously described changes and other bugfixes
1022that may require changes to your code.
1023
Brett Cannon777622b2013-04-09 17:03:10 -04001024* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
1025 exception or return a default value instead of raising
1026 :exc:`NotImplementedError` blindly. This will only affect code calling
1027 :func:`super` and falling through all the way to the ABCs. For compatibility,
1028 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001029
1030* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
1031 attributes to ``None`` by default. To determine if these attributes were set
1032 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001033 ``getattr(module, '__loader__', None) is not None``.
1034
1035* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
1036 ``__package__`` unconditionally to properly support reloading. If this is not
1037 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -04001038 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -04001039
1040* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
1041 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
1042
Brett Cannon1448ecf2013-10-04 11:38:59 -04001043* Frozen packages no longer set ``__path__`` to a list containing the package
1044 name but an empty list instead. Determing if a module is a package should be
1045 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -04001046
Brett Cannon33915eb2013-06-14 18:33:00 -04001047* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
1048 it would write to is a symlink or a non-regular file. This is to act as a
1049 warning that import will overwrite those files with a regular file regardless
1050 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -04001051
1052* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
1053 :exc:`ImportError` when the source code being loaded triggers a
1054 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
1055 meant to be raised only when source code cannot be found but it should, it was
1056 felt to be over-reaching/overloading of that meaning when the source code is
1057 found but improperly structured. If you were catching ImportError before and
1058 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +02001059 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +10001060
1061* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
Nick Coghlan367df122013-10-27 01:57:34 +10001062 set the ``__wrapped__`` attribute to the function being wrapper, even if
1063 that function also had its ``__wrapped__`` attribute set. This means
1064 ``__wrapped__`` attributes now correctly link a stack of decorated
1065 functions rather than every ``__wrapped__`` attribute in the chain
1066 referring to the innermost function. Introspection libraries that
1067 assumed the previous behaviour was intentional can use
1068 :func:`inspect.unwrap` to access the first function in the chain that has
1069 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +02001070
Georg Brandl0f5bff22013-10-19 17:46:38 +02001071* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -04001072 directory to objects in :data:`sys.path_hooks` for the empty string. This
1073 results in :data:`sys.path_importer_cache` never containing ``''``, thus
1074 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
1075 will not find all keys. A module's ``__file__`` when imported in the current
1076 working directory will also now have an absolute path, including when using
1077 ``-m`` with the interpreter (this does not influence when the path to a file
1078 is specified on the command-line).
Victor Stinner2748bc72013-12-13 10:57:04 +01001079
Victor Stinner774b2e02013-12-13 14:33:01 +01001080Changes in the C API
1081--------------------
1082
1083* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
1084 argument is not set. Previously only ``NULL`` was returned with no exception
1085 set.
1086
1087* The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
1088 now be a string allocated by :c:func:`PyMem_RawMalloc` or
1089 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
1090 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
1091
1092* :c:func:`PyThread_set_key_value` now always set the value. In Python
Victor Stinner2748bc72013-12-13 10:57:04 +01001093 3.3, the function did nothing if the key already exists (if the current
1094 value is a non-NULL pointer).
1095
Victor Stinner774b2e02013-12-13 14:33:01 +01001096* The ``f_tstate`` (thread state) field of the :c:type:`PyFrameObject`
1097 structure has been removed to fix a bug: see :issue:`14432` for the
1098 rationale.
1099