blob: 10c63dd847ef62fea9290b991e2d8cc63524d867 [file] [log] [blame]
Georg Brandlb80f5112012-09-30 09:11:58 +02001****************************
2 What's New In Python 3.4
3****************************
4
Georg Brandl3b80d342012-10-28 13:37:54 +01005.. :Author: Someone <email>
6 (uncomment if there is a principal author)
Georg Brandlb80f5112012-09-30 09:11:58 +02007
8.. Rules for maintenance:
9
Nick Coghlan03074fd2012-09-30 18:51:53 +053010 * Anyone can add text to this document, but the maintainer reserves the
11 right to rewrite any additions. In particular, for obscure or esoteric
12 features, the maintainer may reduce any addition to a simple reference to
13 the new documentation rather than explaining the feature inline.
Georg Brandlb80f5112012-09-30 09:11:58 +020014
Nick Coghlan03074fd2012-09-30 18:51:53 +053015 * While the maintainer will periodically go through Misc/NEWS
16 and add changes, it's best not to rely on this. We know from experience
17 that any changes that aren't in the What's New documentation around the
18 time of the original release will remain largely unknown to the community
19 for years, even if they're added later. We also know from experience that
20 other priorities can arise, and the maintainer will run out of time to do
21 updates - in such cases, end users will be much better served by partial
22 notifications that at least give a hint about new features to
23 investigate.
Georg Brandlb80f5112012-09-30 09:11:58 +020024
25 * This is not a complete list of every single change; completeness
Nick Coghlan03074fd2012-09-30 18:51:53 +053026 is the purpose of Misc/NEWS. The What's New should focus on changes that
27 are visible to Python *users* and that *require* a feature release (i.e.
28 most bug fixes should only be recorded in Misc/NEWS)
29
30 * PEPs should not be marked Final until they have an entry in What's New.
31 A placeholder entry that is just a section header and a link to the PEP
32 (e.g ":pep:`397` has been implemented") is acceptable. If a PEP has been
33 implemented and noted in What's New, don't forget to mark it as Final!
Georg Brandlb80f5112012-09-30 09:11:58 +020034
35 * If you want to draw your new text to the attention of the
36 maintainer, add 'XXX' to the beginning of the paragraph or
37 section.
38
Nick Coghlan03074fd2012-09-30 18:51:53 +053039 * It's OK to add just a very brief note about a change. For
40 example: "The :ref:`~socket.transmogrify()` function was added to the
41 :mod:`socket` module." The maintainer will research the change and
42 write the necessary text (if appropriate). The advantage of doing this
43 is that even if no more descriptive text is ever added, readers will at
44 least have a notification that the new feature exists and a link to the
45 relevant documentation.
Georg Brandlb80f5112012-09-30 09:11:58 +020046
47 * You can comment out your additions if you like, but it's not
48 necessary (especially when a final release is some months away).
49
50 * Credit the author of a patch or bugfix. Just the name is
51 sufficient; the e-mail address isn't necessary.
52
53 * It's helpful to add the bug/patch number as a comment:
54
Nick Coghlan03074fd2012-09-30 18:51:53 +053055 The :ref:`~socket.transmogrify()` function was added to the
56 :mod:`socket` module. (Contributed by P.Y. Developer in :issue:`12345`.)
Georg Brandlb80f5112012-09-30 09:11:58 +020057
58 This saves the maintainer the effort of going through the Mercurial log
59 when researching a change.
60
Nick Coghlan03074fd2012-09-30 18:51:53 +053061 * Cross referencing tip: :ref:`mod.attr` will display as ``mod.attr``,
62 while :ref:`~mod.attr` will display as ``attr``.
63
Georg Brandlb80f5112012-09-30 09:11:58 +020064This article explains the new features in Python 3.4, compared to 3.3.
65
Nick Coghlan03074fd2012-09-30 18:51:53 +053066.. Python 3.4 was released on TBD.
Georg Brandlb80f5112012-09-30 09:11:58 +020067
Ezio Melotti25bbe5e2012-11-17 19:30:48 +020068For full details, see the
69`changelog <http://docs.python.org/3.4/whatsnew/changelog.html>`_.
Georg Brandlb80f5112012-09-30 09:11:58 +020070
71.. note:: Prerelease users should be aware that this document is currently in
72 draft form. It will be updated substantially as Python 3.4 moves towards
73 release, so it's worth checking back even after reading earlier versions.
74
75
76.. seealso::
77
Nick Coghlan367df122013-10-27 01:57:34 +100078 :pep:`429` - Python 3.4 Release Schedule
Georg Brandlb80f5112012-09-30 09:11:58 +020079
80
81Summary -- Release highlights
82=============================
83
Kristjan Valur Jonssona1e82442013-03-26 13:56:14 +000084.. This section singles out the most important changes in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020085 Brevity is key.
86
87New syntax features:
88
R David Murraye0f7a782013-12-20 16:04:29 -050089* No new syntax features were added in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020090
R David Murray809487e2013-12-22 20:49:40 -050091New expected features for Python implementations:
92
93* :ref:`Make newly created file descriptors non-inheritable <whatsnew-pep-446>`
94 (:pep:`446`).
95* command line option for :ref:`isolated mode <using-on-misc-options>`,
96 (:issue:`16499`).
R David Murray8d856782013-12-23 10:28:57 -050097* :ref:`improvements in the handling of codecs <codec-handling-improvements>`
98 that are not text encodings (multiple issues).
R David Murray809487e2013-12-22 20:49:40 -050099* :ref:`A ModuleSpec Type <whatsnew-pep-451>` for the Import System
R David Murraye9b74d42013-12-22 21:05:04 -0500100 (:pep:`451`). (Affects importer authors.)
R David Murray809487e2013-12-22 20:49:40 -0500101
Georg Brandlb80f5112012-09-30 09:11:58 +0200102New library modules:
103
R David Murray8d856782013-12-23 10:28:57 -0500104* :mod:`asyncio`: New provisional API for asynchronous IO (:pep:`3156`).
Nick Coghlan0acceb72013-10-20 13:22:21 +1000105* :mod:`enum`: Support for enumeration types (:pep:`435`).
Nick Coghland0cf0632013-11-11 22:11:55 +1000106* :mod:`ensurepip`: Bootstrapping the pip installer (:pep:`453`).
Antoine Pitrou31119e42013-11-22 17:38:12 +0100107* :mod:`pathlib`: Object-oriented filesystem paths (:pep:`428`).
Victor Stinner4aea4a02013-09-04 20:30:34 +0200108* :mod:`selectors`: High-level and efficient I/O multiplexing, built upon the
R David Murray8d856782013-12-23 10:28:57 -0500109 :mod:`select` module primitives (part of :pep:`3156`).
Nick Coghlan0acceb72013-10-20 13:22:21 +1000110* :mod:`statistics`: A basic numerically stable statistics library (:pep:`450`).
Victor Stinnerd2736af2013-11-25 09:40:27 +0100111* :mod:`tracemalloc`: Trace Python memory allocations (:pep:`454`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200112
Georg Brandlb80f5112012-09-30 09:11:58 +0200113Significantly Improved Library Modules:
114
R David Murray0a102162013-12-20 15:00:54 -0500115* :ref:`Single-dispatch generic functions <whatsnew-singledispatch>` in
R David Murray8d856782013-12-23 10:28:57 -0500116 :mod:`functools` (:pep:`443`).
117* New :mod:`pickle` :ref:`protocol 4 <whatsnew-protocol-4>` (:pep:`3154`).
118* :ref:`SHA-3 (Keccak) support <whatsnew-sha3>` for :mod:`hashlib`
119 (:issue:`16113`).
120* :ref:`TLSv1.1 and TLSv1.2 support <whatsnew-tls-11-12>` for :mod:`ssl`
121 (:issue:`16692`).
R David Murrayac186222013-12-20 17:23:57 -0500122* :mod:`multiprocessing` now has :ref:`an option to avoid using os.fork
123 on Unix <whatsnew-multiprocessing-no-fork>` (:issue:`8713`).
R David Murray6adb4542013-12-20 13:10:43 -0500124* :mod:`email` has a new submodule, :mod:`~email.contentmanager`, and
125 a new :mod:`~email.message.Message` subclass
R David Murray26b80cfd2013-12-20 17:26:52 -0500126 (:class:`~email.contentmanager.EmailMessage`) that :ref:`simplify MIME
R David Murray8d856782013-12-23 10:28:57 -0500127 handling <whatsnew_email_contentmanager>` (:issue:`18891`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200128
Nick Coghlan367df122013-10-27 01:57:34 +1000129CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200130
R David Murraya93ca972013-12-22 14:10:21 -0500131* :ref:`Safe object finalization <whatsnew-pep-442>` (:pep:`442`).
R David Murrayca794612013-12-22 14:05:11 -0500132* Leveraging :pep:`442`, :ref:`module globals are no longer set to None
133 during finalization <whatsnew-pep-442>`, in most cases (:issue:`18214`).
R David Murraya93ca972013-12-22 14:10:21 -0500134* :ref:`Configurable memory allocators <whatsnew-pep-445>` (:pep:`445`).
135* :ref:`Secure and interchangeable hash algorithm <whatsnew-pep-456>`
136 (:pep:`456`).
137* :ref:`Argument Clinic <whatsnew-pep-436>` (:pep:`436`).
R David Murray8f7664a2013-12-22 20:40:11 -0500138* The :mod:`marshal` format has been made :ref:`more compact and efficient
139 <whatsnew-marshal-3>` (:issue:`16475`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200140
R David Murray3f122d62013-12-22 21:09:16 -0500141Please read on for a comprehensive list of user-facing changes, including
142sections on deprecations and porting issues.
Georg Brandlb80f5112012-09-30 09:11:58 +0200143
Nick Coghland0cf0632013-11-11 22:11:55 +1000144
R David Murray809487e2013-12-22 20:49:40 -0500145New expected features for Python implementations
146================================================
147
Nick Coghland0cf0632013-11-11 22:11:55 +1000148PEP 453: Explicit bootstrapping of pip in Python installations
R David Murray809487e2013-12-22 20:49:40 -0500149--------------------------------------------------------------
Nick Coghland0cf0632013-11-11 22:11:55 +1000150
151The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
152cross-platform mechanism to boostrap the pip installer into Python
153installations and virtual environments.
154
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000155The :mod:`venv` module and the :command:`pyvenv` utility make use of this
156module to make ``pip`` readily available in virtual environments. When
157using the command line interface, ``pip`` is installed by default, while
158for the module API installation of ``pip`` must be requested explicitly.
159
160For CPython source builds on POSIX systems, the ``make install`` and
161``make altinstall`` commands bootstrap ``pip`` by default. This behaviour
162can be controlled through configure options, and overridden through
163Makefile options.
164
Ned Deily44a0db02013-11-22 22:39:09 -0800165On Windows and Mac OS X, the CPython installers now offer the option to
166install ``pip`` along with CPython itself.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000167
Nick Coghland0cf0632013-11-11 22:11:55 +1000168.. note::
169
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000170 The implementation of PEP 453 is still a work in progress. Refer to
171 :issue:`19347` for the progress on additional steps:
Nick Coghland0cf0632013-11-11 22:11:55 +1000172
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000173 * Having the binary installers install ``pip`` by default
174 * Recommending the use of ``pip`` in the "Installing Python Module"
175 documentation.
Nick Coghland0cf0632013-11-11 22:11:55 +1000176
177.. seealso::
178
179 :pep:`453` - Explicit bootstrapping of pip in Python installations
180 PEP written by Donald Stufft and Nick Coghlan, implemented by
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000181 Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily.
Nick Coghland0cf0632013-11-11 22:11:55 +1000182
183
R David Murrayf9909c22013-12-20 14:50:12 -0500184.. _whatsnew-pep-446:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200185
186PEP 446: Make newly created file descriptors non-inheritable
R David Murray809487e2013-12-22 20:49:40 -0500187------------------------------------------------------------
Victor Stinnerdaf45552013-08-28 00:53:59 +0200188
Nick Coghlan367df122013-10-27 01:57:34 +1000189:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200190<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200191
192* :func:`os.get_inheritable`, :func:`os.set_inheritable`
193* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
194* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
195
Antoine Pitrou796564c2013-07-30 19:59:21 +0200196.. seealso::
197
Nick Coghlan367df122013-10-27 01:57:34 +1000198 :pep:`446` - Make newly created file descriptors non-inheritable
199 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200200
Georg Brandlb80f5112012-09-30 09:11:58 +0200201
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000202.. _codec-handling-improvements:
203
204Improvements to codec handling
R David Murray809487e2013-12-22 20:49:40 -0500205------------------------------
Nick Coghlan8b097b42013-11-13 23:49:21 +1000206
207Since it was first introduced, the :mod:`codecs` module has always been
208intended to operate as a type-neutral dynamic encoding and decoding
209system. However, its close coupling with the Python text model, especially
210the type restricted convenience methods on the builtin :class:`str`,
211:class:`bytes` and :class:`bytearray` types, has historically obscured that
212fact.
213
214As a key step in clarifying the situation, the :meth:`codecs.encode` and
215:meth:`codecs.decode` convenience functions are now properly documented in
216Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000217module (and have been covered by the regression test suite) since Python 2.4,
Nick Coghlan8b097b42013-11-13 23:49:21 +1000218but were previously only discoverable through runtime introspection.
219
220Unlike the convenience methods on :class:`str`, :class:`bytes` and
221:class:`bytearray`, these convenience functions support arbitrary codecs
222in both Python 2 and Python 3, rather than being limited to Unicode text
223encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
224(in Python 2).
225
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000226In Python 3.4, the interpreter is able to identify the known non-text
227encodings provided in the standard library and direct users towards these
228general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000229
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000230 >>> b"abcdef".decode("hex")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000231 Traceback (most recent call last):
232 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000233 LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000234
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000235 >>> "hello".encode("rot13")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000236 Traceback (most recent call last):
237 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000238 LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000239
240In a related change, whenever it is feasible without breaking backwards
241compatibility, exceptions raised during encoding and decoding operations
242will be wrapped in a chained exception of the same type that mentions the
243name of the codec responsible for producing the error::
244
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000245 >>> import codecs
246
247 >>> codecs.decode(b"abcdefgh", "hex")
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000248 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000249
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 binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000255
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000256 >>> codecs.encode("hello", "bz2")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000257 TypeError: 'str' does not support the buffer interface
258
259 The above exception was the direct cause of the following exception:
260
261 Traceback (most recent call last):
262 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000263 TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not support the buffer interface)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000264
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000265Finally, as the examples above show, these improvements have permitted
266the restoration of the convenience aliases for the non-Unicode codecs that
267were themselves restored in Python 3.2. This means that encoding binary data
268to and from its hexadecimal representation (for example) can now be written
269as::
270
271 >>> from codecs import encode, decode
272 >>> encode(b"hello", "hex")
273 b'68656c6c6f'
274 >>> decode(b"68656c6c6f", "hex")
275 b'hello'
276
277The binary and text transforms provided in the standard library are detailed
278in :ref:`binary-transforms` and :ref:`text-transforms`.
279
Serhiy Storchaka2a614522013-12-23 18:21:57 +0200280(Contributed by Nick Coghlan in :issue:`7475`, :issue:`17827`,
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000281:issue:`17828` and :issue:`19619`)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000282
R David Murray809487e2013-12-22 20:49:40 -0500283.. _whatsnew-pep-451:
Eric Snowb523f842013-11-22 09:05:39 -0700284
285PEP 451: A ModuleSpec Type for the Import System
R David Murray809487e2013-12-22 20:49:40 -0500286------------------------------------------------
Eric Snowb523f842013-11-22 09:05:39 -0700287
R David Murrayf85b2a82013-12-22 21:06:13 -0500288:pep:`451` provides an encapsulation of the information about a module that the
289import machinery will use to load it (that is, a module specification). This
290helps simplify both the import implementation and several import-related APIs.
291The change is also a stepping stone for `several future import-related
292improvements`__.
Eric Snowb523f842013-11-22 09:05:39 -0700293
R David Murraye9b74d42013-12-22 21:05:04 -0500294__ https://mail.python.org/pipermail/python-dev/2013-November/130111.html
Eric Snowb523f842013-11-22 09:05:39 -0700295
296The public-facing changes from the PEP are entirely backward-compatible.
R David Murrayf85b2a82013-12-22 21:06:13 -0500297Furthermore, they should be transparent to everyone but importer authors. Key
298finder and loader methods have been deprecated, but they will continue working.
299New importers should use the new methods described in the PEP. Existing
300importers should be updated to implement the new methods.
Eric Snowb523f842013-11-22 09:05:39 -0700301
Nick Coghlan8b097b42013-11-13 23:49:21 +1000302
Georg Brandlb80f5112012-09-30 09:11:58 +0200303Other Language Changes
R David Murray809487e2013-12-22 20:49:40 -0500304----------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200305
306Some smaller changes made to the core Python language are:
307
Ezio Melotti34808e22013-10-12 16:36:13 +0300308* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200309
R David Murray9a2f1392013-06-28 13:31:19 -0400310* :func:`min` and :func:`max` now accept a *default* argument that can be used
311 to specify the value they return if the iterable they are evaluating has no
312 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200313
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200314* Module objects are now :mod:`weakref`'able.
315
Nick Coghlan0acceb72013-10-20 13:22:21 +1000316* Module ``__file__`` attributes (and related values) should now always
317 contain absolute paths by default, with the sole exception of
318 ``__main__.__file__`` when a script has been executed directly using
319 a relative path (Contributed by Brett Cannon in :issue:`18416`).
320
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200321* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
322 encoding and decoding unless the ``surrogatepass`` error handler is used,
323 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
324 and the UTF-16 encoder that produces them while encoding non-BMP characters.
325 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
326 :issue:`12892`.
327
Georg Brandlb80f5112012-09-30 09:11:58 +0200328
329New Modules
330===========
331
Nick Coghlan0acceb72013-10-20 13:22:21 +1000332
333asyncio
334-------
335
336The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
337pluggable event loop model for Python, providing solid asynchronous IO
338support in the standard library, and making it easier for other event loop
339implementations to interoperate with the standard library and each other.
340
341For Python 3.4, this module is considered a :term:`provisional API`.
342
Nick Coghlan367df122013-10-27 01:57:34 +1000343.. seealso::
344
345 :pep:`3156` - Asynchronous IO Support Rebooted: the "asyncio" Module
346 PEP written and implementation led by Guido van Rossum.
347
Nick Coghlan0acceb72013-10-20 13:22:21 +1000348enum
349----
350
Nick Coghlan367df122013-10-27 01:57:34 +1000351The new :mod:`enum` module (defined in :pep:`435`) provides a standard
352implementation of enumeration types, allowing other modules (such as
353:mod:`socket`) to provide more informative error messages and better
354debugging support by replacing opaque integer constants with backwards
355compatible enumeration values.
356
357.. seealso::
358
359 :pep:`435` - Adding an Enum type to the Python standard library
360 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
361 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000362
363
Antoine Pitrou31119e42013-11-22 17:38:12 +0100364pathlib
365-------
366
367The new :mod:`pathlib` module offers classes representing filesystem paths
368with semantics appropriate for different operating systems. Path classes are
369divided between *pure paths*, which provide purely computational operations
370without I/O, and *concrete paths*, which inherit from pure paths but also
371provide I/O operations.
372
373For Python 3.4, this module is considered a :term:`provisional API`.
374
375.. seealso::
376
377 :pep:`428` - The pathlib module -- object-oriented filesystem paths
378 PEP written and implemented by Antoine Pitrou.
379
380
Charles-François Natali243d8d82013-09-04 19:02:49 +0200381selectors
382---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200383
Nick Coghlan0acceb72013-10-20 13:22:21 +1000384The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
385allows high-level and efficient I/O multiplexing, built upon the
386:mod:`select` module primitives.
387
388
389statistics
390----------
391
392The new :mod:`statistics` module (defined in :pep:`450`) offers some core
393statistics functionality directly in the standard library. This module
394supports calculation of the mean, median, mode, variance and standard
395deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200396
Nick Coghlan367df122013-10-27 01:57:34 +1000397.. seealso::
398
399 :pep:`450` - Adding A Statistics Module To The Standard Library
400 PEP written and implemented by Steven D'Aprano
401
Georg Brandlb80f5112012-09-30 09:11:58 +0200402
Victor Stinnerd2736af2013-11-25 09:40:27 +0100403tracemalloc
404-----------
405
406The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to
407trace memory blocks allocated by Python. It provides the following information:
408
409* Traceback where an object was allocated
410* Statistics on allocated memory blocks per filename and per line number:
411 total size, number and average size of allocated memory blocks
412* Compute the differences between two snapshots to detect memory leaks
413
414.. seealso::
415
416 :pep:`454` - Add a new tracemalloc module to trace Python memory allocations
417 PEP written and implemented by Victor Stinner
418
419
Georg Brandlb80f5112012-09-30 09:11:58 +0200420Improved Modules
421================
422
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200423aifc
424----
425
426The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
427plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
428
429
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300430audioop
431-------
432
433Added support for 24-bit samples (:issue:`12866`).
434
Serhiy Storchaka3062c9a2013-11-23 22:26:01 +0200435Added the :func:`~audioop.byteswap` function to convert big-endian samples
436to little-endian and vice versa (:issue:`19641`).
437
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300438
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000439base64
440------
441
442The encoding and decoding functions in :mod:`base64` now accept any
443:term:`bytes-like object` in cases where it previously required a
Georg Brandled007d52013-11-24 16:09:26 +0100444:class:`bytes` or :class:`bytearray` instance (:issue:`17839`).
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000445
446
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200447colorsys
448--------
449
450The number of digits in the coefficients for the RGB --- YIQ conversions have
451been expanded so that they match the FCC NTSC versions. The change in
452results should be less than 1% and may better match results found elsewhere.
453
R David Murray8e37d5d2013-04-13 14:49:48 -0400454
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000455contextlib
456----------
457
Nick Coghlan240f86d2013-10-17 23:40:57 +1000458The new :class:`contextlib.suppress` context manager helps to clarify the
459intent of code that deliberately suppresses exceptions from a single
460statement. (Contributed by Raymond Hettinger in :issue:`15806` and
461Zero Piraeus in :issue:`19266`)
462
Victor Stinner6633c392013-10-21 13:27:11 +0200463The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000464for utility scripts to handle inflexible APIs that don't provide any
465options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000466other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
467this context manager is also useful for checking expected output from
468command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
469
470The :mod:`contextlib` documentation has also been updated to include a
471:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
472differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000473
474
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000475dis
476---
477
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300478The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
479that provides details of individual bytecode operations and a
480:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000481given piece of Python code. The various display tools in the :mod:`dis`
482module have been updated to be based on these new components.
483
484The new :class:`dis.Bytecode` class provides an object-oriented API for
485inspecting bytecode, both in human-readable form and for iterating over
486instructions.
487
Nick Coghlan50c48b82013-11-23 00:57:00 +1000488(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
489and Claudiu Popa in :issue:`17916`)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000490
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200491
R David Murray5a9d7062012-11-21 15:09:21 -0500492doctest
493-------
494
R David Murray5707d502013-06-23 14:24:13 -0400495Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
496failure is detected. (Contributed by R. David Murray and Daniel Urban in
497:issue:`16522`.)
498
499Updated the doctest command line interface to use :mod:`argparse`, and added
500``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
501be specified on the command line, and ``-f`` is a shorthand for ``-o
502FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
503CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200504
R David Murray8e37d5d2013-04-13 14:49:48 -0400505
R David Murraybb17d2b2013-08-09 16:15:28 -0400506email
507-----
508
509:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
510override the default policy of the message when generating a string
511representation of it. This means that ``as_string`` can now be used in more
512circumstances, instead of having to create and use a :mod:`~email.generator` in
513order to pass formatting parameters to its ``flatten`` method.
514
515New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
516representation of the message in a fashion similar to how ``as_string``
517produces a string representation. It does not accept the *maxheaderlen*
518argument, but does accept the *unixfrom* and *policy* arguments. The
519:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
520calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
521result: a bytes object containing the fully formatted message.
522
523(Contributed by R. David Murray in :issue:`18600`.)
524
R David Murray26b80cfd2013-12-20 17:26:52 -0500525.. _whatsnew_email_contentmanager:
526
R David Murray3da240f2013-10-16 22:48:40 -0400527A pair of new subclasses of :class:`~email.message.Message` have been added,
528along with a new sub-module, :mod:`~email.contentmanager`. All documentation
529is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000530:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400531number of new methods that make extracting content from and inserting content
532into email messages much easier. See the :mod:`~email.contentmanager`
533documentation for details.
534
535These API additions complete the bulk of the work that was planned as part of
536the email6 project. The currently provisional API is scheduled to become final
537in Python 3.5 (possibly with a few minor additions in the area of error
538handling).
539
540(Contributed by R. David Murray in :issue:`18891`.)
541
R David Murraybb17d2b2013-08-09 16:15:28 -0400542
Victor Stinner854ffcb2013-06-21 00:36:30 +0200543functools
544---------
545
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000546The new :func:`~functools.partialmethod` descriptor bring partial argument
547application to descriptors, just as :func:`~functools.partial` provides
548for normal callables. The new descriptor also makes it easier to get
549arbitrary callables (including :func:`~functools.partial` instances)
550to behave like normal instance methods when included in a class definition.
551
552(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
553
R David Murray0a102162013-12-20 15:00:54 -0500554.. _whatsnew-singledispatch:
555
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000556The new :func:`~functools.singledispatch` decorator brings support for
557single-dispatch generic functions to the Python standard library. Where
558object oriented programming focuses on grouping multiple operations on a
559common set of data into a class, a generic function focuses on grouping
560multiple implementations of an operation that allows it to work with
561*different* kinds of data.
562
563.. seealso::
564
565 :pep:`443` - Single-dispatch generic functions
566 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200567
Nick Coghlane8c45d62013-07-28 20:00:01 +1000568
Christian Heimese92ef132013-10-13 00:52:43 +0200569hashlib
570-------
571
572New :func:`hashlib.pbkdf2_hmac` function.
Christian Heimese92ef132013-10-13 00:52:43 +0200573(Contributed by Christian Heimes in :issue:`18582`)
574
R David Murraycde1a062013-12-20 16:33:52 -0500575.. _whatsnew-sha3:
576
577New :ref:`hash algorithms <hash-algorithms>` ``sah3_224()``, ``sha3_256()``,
578``sha3_384()``, and ``sha3_512()``. (Contributed by Christian Heimes in
579:issue:`16113`.)
580
Christian Heimese92ef132013-10-13 00:52:43 +0200581
Ezio Melotti250a06c2013-11-25 06:18:47 +0200582html
583----
584
585Added a new :func:`html.unescape` function that converts HTML5 character
586references to the corresponding Unicode characters.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200587(Contributed by Ezio Melotti in :issue:`2927`)
588
589Added a new *convert_charrefs* keyword argument to
590:class:`~html.parser.HTMLParser` that, when ``True``, automatically converts
591all character references. For backward-compatibility, its value defaults
592to ``False``, but it will change to ``True`` in future versions, so you
593are invited to set it explicitly and update your code to use this new feature.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200594(Contributed by Ezio Melotti in :issue:`13633`)
595
596The *strict* argument of :class:`~html.parser.HTMLParser` is now deprecated.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200597(Contributed by Ezio Melotti in :issue:`15114`)
598
599
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200600inspect
601-------
602
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000603
Nick Coghlan367df122013-10-27 01:57:34 +1000604The inspect module now offers a basic :ref:`command line interface
605<inspect-module-cli>` to quickly display source code and other
606information for modules, classes and functions. (Contributed by Claudiu Popa
607and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000608
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200609:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
610created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000611``__wrapped__`` attribute on a wrapper function). (Contributed by
612Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
613
614As part of the implementation of the new :mod:`enum` module, the
615:mod:`inspect` module now has substantially better support for custom
616``__dir__`` methods and dynamic class attributes provided through
617metaclasses (Contributed by Ethan Furman in :issue:`18929` and
618:issue:`19030`)
619
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200620
R David Murray8f7664a2013-12-22 20:40:11 -0500621.. _whatsnew-marshal-3:
622
623marshal
624-------
625
626The default :mod:`marshal` version has been bumped to 3. The code implementing
627the new version restores the Python2 behavior of recording only one copy of
628interned strings and preserving the interning on deserialization, and extends
629this "one copy" ability to any object type (including handling recursive
630references). This reduces both the size of ``.pyc`` files and the amount of
631memory a module occupies in memory when it is loaded from a ``.pyc`` (or
632``.pyo``) file. (Contributed by Kristján Valur Jónsson in :issue:`16475`.)
633
634
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200635mmap
636----
637
638mmap objects can now be weakref'ed.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200639(Contributed by Valerie Lambert in :issue:`4885`.)
640
641
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100642multiprocessing
643---------------
644
R David Murrayac186222013-12-20 17:23:57 -0500645.. _whatsnew-multiprocessing-no-fork:
646
647On Unix, two new :ref:`start methods <multiprocessing-start-methods>`
648(``spawn`` and ``forkserver``) have been added for starting processes using
649:mod:`multiprocessing`. These make the mixing of processes with threads more
650robust, and the ``spawn`` method matches the semantics that multiprocessing has
651always used on Windows. (Contributed by Richard Oudkerk in :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100652
653Also, except when using the old *fork* start method, child processes
R David Murrayac186222013-12-20 17:23:57 -0500654will no longer inherit unneeded handles/file descriptors from their parents
655(part of :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100656
Nick Coghlan9a767352013-12-17 22:17:26 +1000657:mod:`multiprocessing` now relies on :mod:`runpy` (which implements the
658``-m`` switch) to initialise ``__main__`` appropriately in child processes
659when using the ``spawn`` or ``forkserver`` start methods. This resolves some
660edge cases where combining multiprocessing, the ``-m`` command line switch
661and explicit relative imports could cause obscure failures in child
662processes. (Contributed by Nick Coghlan in :issue:`19946`)
663
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100664
Victor Stinnerdaf45552013-08-28 00:53:59 +0200665os
666--
667
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200668New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200669descriptors or a Windows handle:
670
671* :func:`os.get_inheritable`, :func:`os.set_inheritable`
672* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
673
674
R David Murray78d692f2013-10-10 17:23:26 -0400675pdb
676---
677
678The ``print`` command has been removed from :mod:`pdb`, restoring access to the
679``print`` function.
680
681Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
682entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
683mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
684prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
685command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
686``print`` function, making it inaccessible at the ``pdb`` prompt.
687
688(Contributed by Connor Osborn in :issue:`18764`.)
689
690
R David Murray809487e2013-12-22 20:49:40 -0500691.. _whatsnew-protocol-4:
692
693Pickle
694------
695
696protocol 4
697
698:mod:`pickle` now supports (but does not use by default) a new pickle protocol,
699protocol 4. This new protocol addresses a number of issues that were present
700in previous protocols, such as the serialization of nested classes, very large
701strings and containers, or classes whose :meth:`__new__` method takes
702keyword-only arguments. It also provides some efficiency improvements.
703
704.. seealso::
705
706 :pep:`3154` - Pickle protocol 4
707 PEP written by Antoine Pitrou and implemented by Alexandre Vassalotti.
708
709
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200710poplib
711------
712
713New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
714an encrypted POP3 session.
715
716New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
717POP3 server.
718
719(Contributed by Lorenzo Catucci in :issue:`4473`.)
720
721
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300722pprint
723------
724
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200725The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300726sequences (:issue:`19132`).
727
728
Nick Coghlan367df122013-10-27 01:57:34 +1000729pydoc
730-----
731
732While significant changes have not been made to :mod:`pydoc` directly,
733its handling of custom ``__dir__`` methods and various descriptor
734behaviours has been improved substantially by the underlying changes in
735the :mod:`inspect` module.
736
737
Serhiy Storchaka32eddc12013-11-23 23:20:30 +0200738re
739--
740
741Added :func:`re.fullmatch` function and :meth:`regex.fullmatch` method,
742which anchor the pattern at both ends of the string to match.
743(Contributed by Matthew Barnett in :issue:`16203`.)
744
Ezio Melottidd7e2912013-11-25 23:20:20 +0200745The repr of :ref:`regex objects <re-objects>` now includes the pattern
746and the flags; the repr of :ref:`match objects <match-objects>` now
747includes the start, end, and the part of the string that matched.
Ezio Melottidd7e2912013-11-25 23:20:20 +0200748(Contributed by Serhiy Storchaka in :issue:`13592` and :issue:`17087`.)
749
750
Christian Heimesb7bd5df2013-10-22 11:21:54 +0200751resource
752--------
753
754New :func:`resource.prlimit` function and Linux specific constants.
755(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
756
R David Murray8e37d5d2013-04-13 14:49:48 -0400757smtplib
758-------
759
R David Murray8a345962013-04-14 06:46:35 -0400760:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400761both socket level errors and SMTP protocol level errors to be caught in one
762try/except statement by code that only cares whether or not an error occurred.
763(:issue:`2118`).
764
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200765
Victor Stinnerdaf45552013-08-28 00:53:59 +0200766socket
767------
768
Georg Brandl5642ff92013-09-15 10:37:57 +0200769Socket objects have new methods to get or set their :ref:`inheritable flag
770<fd_inheritance>`:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200771
772* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
773
Eli Bendersky34567ec2013-08-31 15:18:48 -0700774The ``socket.AF_*`` and ``socket.SOCK_*`` constants are enumeration values,
775using the new :mod:`enum` module. This allows descriptive reporting during
776debugging, instead of seeing integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200777
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200778ssl
779---
780
R David Murray748bad22013-12-20 17:08:39 -0500781.. _whatsnew-tls-11-12:
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200782
R David Murray748bad22013-12-20 17:08:39 -0500783:data:`~ssl.PROTOCOL_TLSv1_1` and :data:`~ssl.PROTOCOL_TLSv1_2` (TLSv1.1 and
784TLSv1.2 support) have been added; support for these protocols is only available if
785Python is linked with OpenSSL 1.0.1 or later. (Contributed by Michele Orrù and
786Antoine Pitrou in :issue:`16692`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200787
R David Murray748bad22013-12-20 17:08:39 -0500788New diagnostic functions :func:`~ssl.get_default_verify_paths`,
789:meth:`~ssl.SSLContext.cert_store_stats` and
790:meth:`~ssl.SSLContext.get_ca_certs` (Contributed by Christian Heimes
791in :issue:`18143` and :issue:`18147`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200792
R David Murray748bad22013-12-20 17:08:39 -0500793Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
794cert store. (Contributed by Christian Heimes in :issue:`17134`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200795
796Support for server-side SNI using the new
797:meth:`ssl.SSLContext.set_servername_callback` method.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200798(Contributed by Daniel Black in :issue:`8109`.)
799
800
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200801stat
802----
803
804The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
805implementation is required as most of the values aren't standardized and
806platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
807
808The module supports new file types: door, event port and whiteout.
809
810
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200811struct
812------
813
814Streaming struct unpacking using :func:`struct.iter_unpack`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200815(Contributed by Antoine Pitrou in :issue:`17804`.)
816
817
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300818sunau
819-----
820
821The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
822plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
823
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300824:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
825
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300826
Andrew Kuchling173a1572013-09-15 18:15:56 -0400827traceback
828---------
829
830A new :func:`traceback.clear_frames` function takes a traceback object
831and clears the local variables in all of the frames it references,
832reducing the amount of memory consumed (:issue:`1565525`).
833
834
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200835urllib
836------
837
838Add support.for ``data:`` URLs in :mod:`urllib.request`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200839(Contributed by Mathias Panzenböck in :issue:`16423`.)
840
841
842unittest
843--------
844
845Support for easy dynamically-generated subtests using the
846:meth:`~unittest.TestCase.subTest` context manager.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200847(Contributed by Antoine Pitrou in :issue:`16997`.)
848
R David Murray8e37d5d2013-04-13 14:49:48 -0400849
R David Murray671cd322013-04-10 12:31:43 -0400850wave
851----
852
853The :meth:`~wave.getparams` method now returns a namedtuple rather than a
854plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
855
R David Murrayc91d5ee2013-07-31 13:46:08 -0400856:meth:`wave.open` now supports the context manager protocol. (Contributed
857by Claudiu Popa in :issue:`17616`.)
858
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200859
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200860weakref
861-------
862
863New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000864methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200865
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000866New :class:`~weakref.finalize` class makes it possible to register a callback
867to be invoked when an object is garbage collected, without needing to
868carefully manage the lifecycle of the weak reference itself. (Contributed by
869Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200870
871
872xml.etree
873---------
874
875Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -0700876:class:`~xml.etree.ElementTree.XMLPullParser`.
Eli Benderskyb5869342013-08-30 05:51:20 -0700877(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200878
Christian Tismer59202e52013-10-21 03:59:23 +0200879
880zipfile.PyZipfile
881-----------------
882
883Add a filter function to ignore some packages (tests for instance),
884:meth:`~zipfile.PyZipFile.writepy`.
Christian Tismer59202e52013-10-21 03:59:23 +0200885(Contributed by Christian Tismer in :issue:`19274`.)
886
887
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200888Other improvements
889==================
890
891Tab-completion is now enabled by default in the interactive interpreter.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200892(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
893
Eli Bendersky96d848a2013-09-06 06:55:58 -0700894Python invocation changes
895=========================
896
897Invoking the Python interpreter with ``--version`` now outputs the version to
898standard output instead of standard error (:issue:`18338`). Similar changes
899were made to :mod:`argparse` (:issue:`18920`) and other modules that have
900script-like invocation capabilities (:issue:`18922`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200901
Georg Brandlb80f5112012-09-30 09:11:58 +0200902Optimizations
903=============
904
905Major performance enhancements have been added:
906
Victor Stinnere64322e2012-10-30 23:12:47 +0100907* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200908
Raymond Hettingerc301b552013-08-19 09:12:20 -0700909* The cost of hash collisions for sets is now reduced. Each hash table
Raymond Hettinger8408dc52013-09-15 14:57:15 -0700910 probe now checks a series of consecutive, adjacent key/hash pairs before
911 continuing to make random probes through the hash table. This exploits
912 cache locality to make collision resolution less expensive.
913
914 The collision resolution scheme can be described as a hybrid of linear
915 probing and open addressing. The number of additional linear probes
916 defaults to nine. This can be changed at compile-time by defining
917 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
918 linear probing entirely.
Raymond Hettingerc301b552013-08-19 09:12:20 -0700919
Christian Heimes086b1af2013-10-22 11:49:34 +0200920 (Contributed by Raymond Hettinger in :issue:`18771`.)
Raymond Hettingerc301b552013-08-19 09:12:20 -0700921
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200922* The interpreter starts about 30% faster. A couple of measures lead to the
Eric V. Smith57841dd2013-10-13 00:36:08 -0400923 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200924 :mod:`collections` and :mod:`locale` modules and their dependencies are no
925 longer imported by default. The marshal module has been improved to load
926 compiled Python code faster.
927
928 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
929 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
930 :issue:`9548`)
931
932
Nick Coghlan367df122013-10-27 01:57:34 +1000933CPython Implementation Changes
934==============================
935
936
R David Murrayc16dfe12013-12-21 12:32:10 -0500937.. _whatsnew-pep-445:
Nick Coghlan367df122013-10-27 01:57:34 +1000938
939PEP 445: Customization of CPython memory allocators
940---------------------------------------------------
941
942:pep:`445` adds new C level interfaces to customize memory allocation in
943the CPython interpreter.
944
945.. seealso::
946
947 :pep:`445` - Add new APIs to customize Python memory allocators
948 PEP written and implemented by Victor Stinner.
949
950
R David Murrayc16dfe12013-12-21 12:32:10 -0500951.. _whatsnew-pep-442:
Nick Coghlan367df122013-10-27 01:57:34 +1000952
953PEP 442: Safe object finalization
954---------------------------------
955
956:pep:`442` removes the current limitations and quirks of object finalization
957in CPython. With it, objects with :meth:`__del__` methods, as well as
958generators with :keyword:`finally` clauses, can be finalized when they are
959part of a reference cycle.
960
961As part of this change, module globals are no longer forcibly set to
962:const:`None` during interpreter shutdown in most cases, instead relying
R David Murrayca794612013-12-22 14:05:11 -0500963on the normal operation of the cyclic garbage collector. This avoids a
964whole class of interpreter-shutdown-time errors, usually involving
965``__del__`` methods, that have plagued Python since the cyclic GC
966was first introduced.
Nick Coghlan367df122013-10-27 01:57:34 +1000967
968.. seealso::
969
970 :pep:`442` - Safe object finalization
971 PEP written and implemented by Antoine Pitrou.
972
973
R David Murrayc16dfe12013-12-21 12:32:10 -0500974.. _whatsnew-pep-456:
975
976PEP 456: Secure and Interchangeable Hash Algorithm
977--------------------------------------------------
978
979:pep:`456` follows up on earlier security fix work done on Python's hash
980algorithm to address certain DOS attacks to which public facing APIs backed by
981dictionary lookups may be subject. (See :issue:`14621` for the start of the
982current round of improvements.) The PEP unifies CPython's hash code to make it
983easier for a packager to substitute a different hash algorithm, and switches
984Python's default implementation to a SipHash implementation on platforms that
985have a 64 bit data type. Any performance differences in comparison with the
986older FNV algorithm are trivial.
987
988The PEP adds additional fields to the :func:`sys.hash_info` struct sequence to
989describe the hash algorithm in use by the currently executing binary. Otherwise,
990the PEP does not alter any existing CPython APIs.
991
992
Nick Coghlan367df122013-10-27 01:57:34 +1000993Other build and C API changes
994-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200995
996Changes to Python's build process and to the C API include:
997
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000998* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
999 allows applications embedding the CPython interpreter to reliably force
1000 a particular encoding and error handler for the standard streams
1001 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +02001002
Nick Coghlan0acceb72013-10-20 13:22:21 +10001003* Most Python C APIs that don't mutate string arguments are now correctly
1004 marked as accepting ``const char *`` rather than ``char *`` (Contributed
1005 by Serhiy Storchaka in :issue:`1772673`).
1006
R David Murray2aa9d522013-12-22 13:57:45 -05001007.. _whatsnew-pep-436:
1008
Nick Coghlan0acceb72013-10-20 13:22:21 +10001009* "Argument Clinic" (:pep:`436`) is now part of the CPython build process
1010 and can be used to simplify the process of defining and maintaining
1011 accurate signatures for builtins and standard library extension modules
1012 implemented in C.
1013
Nick Coghlan367df122013-10-27 01:57:34 +10001014 .. note::
1015 The Argument Clinic PEP is not fully up to date with the state of the
1016 implementation. This has been deemed acceptable by the release manager
1017 and core development team in this case, as Argument Clinic will not
1018 be made available as a public API for third party use in Python 3.4.
1019
Georg Brandlb80f5112012-09-30 09:11:58 +02001020
1021Deprecated
1022==========
1023
1024Unsupported Operating Systems
1025-----------------------------
1026
Victor Stinnerf3fd13b2013-08-04 10:30:57 +02001027* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +02001028* Windows 2000
Christian Heimesaf01f662013-12-21 16:19:10 +01001029* VMS
Georg Brandlb80f5112012-09-30 09:11:58 +02001030
1031
1032Deprecated Python modules, functions and methods
1033------------------------------------------------
1034
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -04001035* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -04001036 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
1037 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +02001038
Brett Cannon82b3d6a2013-06-14 22:37:11 -04001039* :func:`importlib.util.module_for_loader` is pending deprecation. Using
1040 :func:`importlib.util.module_to_load` and
1041 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
1042 to more easily customize module loading.
1043
Brett Cannone4f41de2013-06-16 13:13:40 -04001044* The :mod:`imp` module is pending deprecation. To keep compatibility with
1045 Python 2/3 code bases, the module's removal is currently not scheduled.
1046
Brett Cannon1448ecf2013-10-04 11:38:59 -04001047* The :mod:`formatter` module is pending deprecation and is slated for removal
1048 in Python 3.6.
1049
Christian Heimes634919a2013-11-20 17:23:06 +01001050* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
1051 require an explicit digest name or constructor as *digestmod* argument.
1052
Georg Brandlb80f5112012-09-30 09:11:58 +02001053
1054Deprecated functions and types of the C API
1055-------------------------------------------
1056
Victor Stinner3dd263f2013-10-23 18:54:43 +02001057* The ``PyThreadState.tick_counter`` field has been removed: its value was
1058 meaningless since Python 3.2 ("new GIL").
Georg Brandlb80f5112012-09-30 09:11:58 +02001059
1060
1061Deprecated features
1062-------------------
1063
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +02001064* The site module adding a "site-python" directory to sys.path, if it
1065 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +02001066
1067
Benjamin Peterson88f3b232012-10-04 12:45:10 -04001068Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +02001069=====================
1070
Victor Stinner774b2e02013-12-13 14:33:01 +01001071Changes in the Python API
1072-------------------------
1073
Georg Brandlb80f5112012-09-30 09:11:58 +02001074This section lists previously described changes and other bugfixes
1075that may require changes to your code.
1076
Brett Cannon777622b2013-04-09 17:03:10 -04001077* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
1078 exception or return a default value instead of raising
1079 :exc:`NotImplementedError` blindly. This will only affect code calling
1080 :func:`super` and falling through all the way to the ABCs. For compatibility,
1081 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001082
1083* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
1084 attributes to ``None`` by default. To determine if these attributes were set
1085 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001086 ``getattr(module, '__loader__', None) is not None``.
1087
1088* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
1089 ``__package__`` unconditionally to properly support reloading. If this is not
1090 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -04001091 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -04001092
1093* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
1094 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
1095
Brett Cannon1448ecf2013-10-04 11:38:59 -04001096* Frozen packages no longer set ``__path__`` to a list containing the package
1097 name but an empty list instead. Determing if a module is a package should be
1098 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -04001099
Brett Cannon33915eb2013-06-14 18:33:00 -04001100* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
1101 it would write to is a symlink or a non-regular file. This is to act as a
1102 warning that import will overwrite those files with a regular file regardless
1103 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -04001104
1105* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
1106 :exc:`ImportError` when the source code being loaded triggers a
1107 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
1108 meant to be raised only when source code cannot be found but it should, it was
1109 felt to be over-reaching/overloading of that meaning when the source code is
1110 found but improperly structured. If you were catching ImportError before and
1111 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +02001112 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +10001113
1114* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
Nick Coghlan367df122013-10-27 01:57:34 +10001115 set the ``__wrapped__`` attribute to the function being wrapper, even if
1116 that function also had its ``__wrapped__`` attribute set. This means
1117 ``__wrapped__`` attributes now correctly link a stack of decorated
1118 functions rather than every ``__wrapped__`` attribute in the chain
1119 referring to the innermost function. Introspection libraries that
1120 assumed the previous behaviour was intentional can use
1121 :func:`inspect.unwrap` to access the first function in the chain that has
1122 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +02001123
Georg Brandl0f5bff22013-10-19 17:46:38 +02001124* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -04001125 directory to objects in :data:`sys.path_hooks` for the empty string. This
1126 results in :data:`sys.path_importer_cache` never containing ``''``, thus
1127 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
1128 will not find all keys. A module's ``__file__`` when imported in the current
1129 working directory will also now have an absolute path, including when using
1130 ``-m`` with the interpreter (this does not influence when the path to a file
1131 is specified on the command-line).
Victor Stinner2748bc72013-12-13 10:57:04 +01001132
Victor Stinner774b2e02013-12-13 14:33:01 +01001133Changes in the C API
1134--------------------
1135
1136* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
1137 argument is not set. Previously only ``NULL`` was returned with no exception
1138 set.
1139
1140* The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
1141 now be a string allocated by :c:func:`PyMem_RawMalloc` or
1142 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
1143 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
1144
1145* :c:func:`PyThread_set_key_value` now always set the value. In Python
Victor Stinner2748bc72013-12-13 10:57:04 +01001146 3.3, the function did nothing if the key already exists (if the current
1147 value is a non-NULL pointer).
1148
Victor Stinner774b2e02013-12-13 14:33:01 +01001149* The ``f_tstate`` (thread state) field of the :c:type:`PyFrameObject`
1150 structure has been removed to fix a bug: see :issue:`14432` for the
1151 rationale.
1152