blob: ac3e47afd473df88df66ce0369ef28031a5d20a7 [file] [log] [blame]
Georg Brandlb80f5112012-09-30 09:11:58 +02001****************************
2 What's New In Python 3.4
3****************************
4
Georg Brandl3b80d342012-10-28 13:37:54 +01005.. :Author: Someone <email>
6 (uncomment if there is a principal author)
Georg Brandlb80f5112012-09-30 09:11:58 +02007
8.. Rules for maintenance:
9
Nick Coghlan03074fd2012-09-30 18:51:53 +053010 * Anyone can add text to this document, but the maintainer reserves the
11 right to rewrite any additions. In particular, for obscure or esoteric
12 features, the maintainer may reduce any addition to a simple reference to
13 the new documentation rather than explaining the feature inline.
Georg Brandlb80f5112012-09-30 09:11:58 +020014
Nick Coghlan03074fd2012-09-30 18:51:53 +053015 * While the maintainer will periodically go through Misc/NEWS
16 and add changes, it's best not to rely on this. We know from experience
17 that any changes that aren't in the What's New documentation around the
18 time of the original release will remain largely unknown to the community
19 for years, even if they're added later. We also know from experience that
20 other priorities can arise, and the maintainer will run out of time to do
R David Murray061efb12013-12-24 12:35:59 -050021 updates -- in such cases, end users will be much better served by partial
Nick Coghlan03074fd2012-09-30 18:51:53 +053022 notifications that at least give a hint about new features to
23 investigate.
Georg Brandlb80f5112012-09-30 09:11:58 +020024
25 * This is not a complete list of every single change; completeness
Nick Coghlan03074fd2012-09-30 18:51:53 +053026 is the purpose of Misc/NEWS. The What's New should focus on changes that
27 are visible to Python *users* and that *require* a feature release (i.e.
28 most bug fixes should only be recorded in Misc/NEWS)
29
30 * PEPs should not be marked Final until they have an entry in What's New.
31 A placeholder entry that is just a section header and a link to the PEP
32 (e.g ":pep:`397` has been implemented") is acceptable. If a PEP has been
33 implemented and noted in What's New, don't forget to mark it as Final!
Georg Brandlb80f5112012-09-30 09:11:58 +020034
35 * If you want to draw your new text to the attention of the
36 maintainer, add 'XXX' to the beginning of the paragraph or
37 section.
38
Nick Coghlan03074fd2012-09-30 18:51:53 +053039 * It's OK to add just a very brief note about a change. For
40 example: "The :ref:`~socket.transmogrify()` function was added to the
41 :mod:`socket` module." The maintainer will research the change and
42 write the necessary text (if appropriate). The advantage of doing this
43 is that even if no more descriptive text is ever added, readers will at
44 least have a notification that the new feature exists and a link to the
45 relevant documentation.
Georg Brandlb80f5112012-09-30 09:11:58 +020046
47 * You can comment out your additions if you like, but it's not
48 necessary (especially when a final release is some months away).
49
50 * Credit the author of a patch or bugfix. Just the name is
51 sufficient; the e-mail address isn't necessary.
52
53 * It's helpful to add the bug/patch number as a comment:
54
Nick Coghlan03074fd2012-09-30 18:51:53 +053055 The :ref:`~socket.transmogrify()` function was added to the
56 :mod:`socket` module. (Contributed by P.Y. Developer in :issue:`12345`.)
Georg Brandlb80f5112012-09-30 09:11:58 +020057
58 This saves the maintainer the effort of going through the Mercurial log
59 when researching a change.
60
Nick Coghlan03074fd2012-09-30 18:51:53 +053061 * Cross referencing tip: :ref:`mod.attr` will display as ``mod.attr``,
62 while :ref:`~mod.attr` will display as ``attr``.
63
Georg Brandlb80f5112012-09-30 09:11:58 +020064This article explains the new features in Python 3.4, compared to 3.3.
65
Nick Coghlan03074fd2012-09-30 18:51:53 +053066.. Python 3.4 was released on TBD.
Georg Brandlb80f5112012-09-30 09:11:58 +020067
Ezio Melotti25bbe5e2012-11-17 19:30:48 +020068For full details, see the
69`changelog <http://docs.python.org/3.4/whatsnew/changelog.html>`_.
Georg Brandlb80f5112012-09-30 09:11:58 +020070
71.. note:: Prerelease users should be aware that this document is currently in
72 draft form. It will be updated substantially as Python 3.4 moves towards
73 release, so it's worth checking back even after reading earlier versions.
74
75
76.. seealso::
77
R David Murray061efb12013-12-24 12:35:59 -050078 :pep:`429` -- Python 3.4 Release Schedule
Georg Brandlb80f5112012-09-30 09:11:58 +020079
80
R David Murraye6082552014-01-03 16:15:45 -050081
R David Murraye7cf6782013-12-24 14:51:25 -050082Summary -- Release Highlights
Georg Brandlb80f5112012-09-30 09:11:58 +020083=============================
84
Kristjan Valur Jonssona1e82442013-03-26 13:56:14 +000085.. This section singles out the most important changes in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020086 Brevity is key.
87
88New syntax features:
89
R David Murraye0f7a782013-12-20 16:04:29 -050090* No new syntax features were added in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020091
R David Murray809487e2013-12-22 20:49:40 -050092New expected features for Python implementations:
93
R David Murray68790662013-12-23 11:17:51 -050094* :ref:`pip should always be "available" <whatsnew-pep-453>` (:pep:`453`).
R David Murray809487e2013-12-22 20:49:40 -050095* :ref:`Make newly created file descriptors non-inheritable <whatsnew-pep-446>`
96 (:pep:`446`).
97* command line option for :ref:`isolated mode <using-on-misc-options>`,
98 (:issue:`16499`).
R David Murray8d856782013-12-23 10:28:57 -050099* :ref:`improvements in the handling of codecs <codec-handling-improvements>`
100 that are not text encodings (multiple issues).
R David Murray809487e2013-12-22 20:49:40 -0500101* :ref:`A ModuleSpec Type <whatsnew-pep-451>` for the Import System
R David Murraye9b74d42013-12-22 21:05:04 -0500102 (:pep:`451`). (Affects importer authors.)
R David Murray809487e2013-12-22 20:49:40 -0500103
Georg Brandlb80f5112012-09-30 09:11:58 +0200104New library modules:
105
R David Murray9217dad2013-12-23 21:08:28 -0500106* :mod:`asyncio`: :ref:`New provisional API for asynchronous IO
107 <whatsnew-asyncio>` (:pep:`3156`).
108* :mod:`ensurepip`: :ref:`Bootstrapping the pip installer <whatsnew-ensurepip>`
109 (:pep:`453`).
110* :mod:`enum`: :ref:`Support for enumeration types <whatsnew-enum>`
111 (:pep:`435`).
112* :mod:`pathlib`: :ref:`Object-oriented filesystem paths <whatsnew-pathlib>`
113 (:pep:`428`).
R David Murrayf9976e72013-12-23 10:32:02 -0500114* :mod:`selectors`: :ref:`High-level and efficient I/O multiplexing
115 <whatsnew-selectors>`, built upon the :mod:`select` module primitives (part
116 of :pep:`3156`).
R David Murray9217dad2013-12-23 21:08:28 -0500117* :mod:`statistics`: A basic :ref:`numerically stable statistics library
118 <whatsnew-statistics>` (:pep:`450`).
119* :mod:`tracemalloc`: :ref:`Trace Python memory allocations
120 <whatsnew-tracemalloc>` (:pep:`454`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200121
Georg Brandlb80f5112012-09-30 09:11:58 +0200122Significantly Improved Library Modules:
123
R David Murray0a102162013-12-20 15:00:54 -0500124* :ref:`Single-dispatch generic functions <whatsnew-singledispatch>` in
R David Murray8d856782013-12-23 10:28:57 -0500125 :mod:`functools` (:pep:`443`).
126* New :mod:`pickle` :ref:`protocol 4 <whatsnew-protocol-4>` (:pep:`3154`).
R David Murray8d856782013-12-23 10:28:57 -0500127* :ref:`TLSv1.1 and TLSv1.2 support <whatsnew-tls-11-12>` for :mod:`ssl`
128 (:issue:`16692`).
R David Murrayac186222013-12-20 17:23:57 -0500129* :mod:`multiprocessing` now has :ref:`an option to avoid using os.fork
130 on Unix <whatsnew-multiprocessing-no-fork>` (:issue:`8713`).
R David Murray6adb4542013-12-20 13:10:43 -0500131* :mod:`email` has a new submodule, :mod:`~email.contentmanager`, and
132 a new :mod:`~email.message.Message` subclass
R David Murray26b80cfd2013-12-20 17:26:52 -0500133 (:class:`~email.contentmanager.EmailMessage`) that :ref:`simplify MIME
R David Murray8d856782013-12-23 10:28:57 -0500134 handling <whatsnew_email_contentmanager>` (:issue:`18891`).
Ronald Oussoren6db66532014-01-15 11:32:35 +0100135* :mod:`plistlib` has a cleaned up interface and support for binary
136 plist files (:issue:`14455`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200137
Nick Coghlan367df122013-10-27 01:57:34 +1000138CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200139
R David Murraya93ca972013-12-22 14:10:21 -0500140* :ref:`Safe object finalization <whatsnew-pep-442>` (:pep:`442`).
R David Murrayca794612013-12-22 14:05:11 -0500141* Leveraging :pep:`442`, :ref:`module globals are no longer set to None
142 during finalization <whatsnew-pep-442>`, in most cases (:issue:`18214`).
R David Murraya93ca972013-12-22 14:10:21 -0500143* :ref:`Configurable memory allocators <whatsnew-pep-445>` (:pep:`445`).
144* :ref:`Secure and interchangeable hash algorithm <whatsnew-pep-456>`
145 (:pep:`456`).
146* :ref:`Argument Clinic <whatsnew-pep-436>` (:pep:`436`).
R David Murray8f7664a2013-12-22 20:40:11 -0500147* The :mod:`marshal` format has been made :ref:`more compact and efficient
148 <whatsnew-marshal-3>` (:issue:`16475`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200149
R David Murray347f9c72013-12-23 21:30:06 -0500150Please read on for a comprehensive list of user-facing changes, including many
151other smaller improvements, CPython optimizations, deprecations, and potential
152porting issues.
Georg Brandlb80f5112012-09-30 09:11:58 +0200153
Nick Coghland0cf0632013-11-11 22:11:55 +1000154
R David Murraye6082552014-01-03 16:15:45 -0500155
R David Murraye7cf6782013-12-24 14:51:25 -0500156New Expected Features for Python Implementations
R David Murray809487e2013-12-22 20:49:40 -0500157================================================
158
R David Murray68790662013-12-23 11:17:51 -0500159.. _whatsnew-pep-453:
160
R David Murraye7cf6782013-12-24 14:51:25 -0500161PEP 453: Explicit Bootstrapping of PIP in Python Installations
R David Murray809487e2013-12-22 20:49:40 -0500162--------------------------------------------------------------
Nick Coghland0cf0632013-11-11 22:11:55 +1000163
164The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
165cross-platform mechanism to boostrap the pip installer into Python
166installations and virtual environments.
167
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000168The :mod:`venv` module and the :command:`pyvenv` utility make use of this
169module to make ``pip`` readily available in virtual environments. When
170using the command line interface, ``pip`` is installed by default, while
171for the module API installation of ``pip`` must be requested explicitly.
172
173For CPython source builds on POSIX systems, the ``make install`` and
174``make altinstall`` commands bootstrap ``pip`` by default. This behaviour
175can be controlled through configure options, and overridden through
176Makefile options.
177
Ned Deily44a0db02013-11-22 22:39:09 -0800178On Windows and Mac OS X, the CPython installers now offer the option to
179install ``pip`` along with CPython itself.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000180
R David Murray68790662013-12-23 11:17:51 -0500181As `discussed in the PEP`__, platform packagers may choose not to install
182``pip`` by default, as long as the command ``pip``, when invoked, provides
183clear and simple directions on how to install ``pip`` on the platform.
184
185__ http://www.python.org/dev/peps/pep-0453/#recommendations-for-downstream-distributors
186
Nick Coghland0cf0632013-11-11 22:11:55 +1000187.. note::
188
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000189 The implementation of PEP 453 is still a work in progress. Refer to
190 :issue:`19347` for the progress on additional steps:
Nick Coghland0cf0632013-11-11 22:11:55 +1000191
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000192 * Having the binary installers install ``pip`` by default
193 * Recommending the use of ``pip`` in the "Installing Python Module"
194 documentation.
Nick Coghland0cf0632013-11-11 22:11:55 +1000195
196.. seealso::
197
R David Murray061efb12013-12-24 12:35:59 -0500198 :pep:`453` -- Explicit bootstrapping of pip in Python installations
Nick Coghland0cf0632013-11-11 22:11:55 +1000199 PEP written by Donald Stufft and Nick Coghlan, implemented by
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000200 Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily.
Nick Coghland0cf0632013-11-11 22:11:55 +1000201
202
R David Murrayf9909c22013-12-20 14:50:12 -0500203.. _whatsnew-pep-446:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200204
R David Murraye7cf6782013-12-24 14:51:25 -0500205PEP 446: Make Newly Created File Descriptors Non-Inheritable
R David Murray809487e2013-12-22 20:49:40 -0500206------------------------------------------------------------
Victor Stinnerdaf45552013-08-28 00:53:59 +0200207
Nick Coghlan367df122013-10-27 01:57:34 +1000208:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200209<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200210
211* :func:`os.get_inheritable`, :func:`os.set_inheritable`
212* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
213* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
214
Antoine Pitrou796564c2013-07-30 19:59:21 +0200215.. seealso::
216
R David Murray061efb12013-12-24 12:35:59 -0500217 :pep:`446` -- Make newly created file descriptors non-inheritable
Nick Coghlan367df122013-10-27 01:57:34 +1000218 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200219
Georg Brandlb80f5112012-09-30 09:11:58 +0200220
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000221.. _codec-handling-improvements:
222
R David Murraye7cf6782013-12-24 14:51:25 -0500223Improvements to Codec Handling
R David Murray809487e2013-12-22 20:49:40 -0500224------------------------------
Nick Coghlan8b097b42013-11-13 23:49:21 +1000225
226Since it was first introduced, the :mod:`codecs` module has always been
227intended to operate as a type-neutral dynamic encoding and decoding
228system. However, its close coupling with the Python text model, especially
229the type restricted convenience methods on the builtin :class:`str`,
230:class:`bytes` and :class:`bytearray` types, has historically obscured that
231fact.
232
233As a key step in clarifying the situation, the :meth:`codecs.encode` and
234:meth:`codecs.decode` convenience functions are now properly documented in
235Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000236module (and have been covered by the regression test suite) since Python 2.4,
Nick Coghlan8b097b42013-11-13 23:49:21 +1000237but were previously only discoverable through runtime introspection.
238
239Unlike the convenience methods on :class:`str`, :class:`bytes` and
240:class:`bytearray`, these convenience functions support arbitrary codecs
241in both Python 2 and Python 3, rather than being limited to Unicode text
242encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
243(in Python 2).
244
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000245In Python 3.4, the interpreter is able to identify the known non-text
246encodings provided in the standard library and direct users towards these
247general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000248
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000249 >>> b"abcdef".decode("hex")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000250 Traceback (most recent call last):
251 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000252 LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000253
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000254 >>> "hello".encode("rot13")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000255 Traceback (most recent call last):
256 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000257 LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000258
259In a related change, whenever it is feasible without breaking backwards
260compatibility, exceptions raised during encoding and decoding operations
261will be wrapped in a chained exception of the same type that mentions the
262name of the codec responsible for producing the error::
263
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000264 >>> import codecs
265
266 >>> codecs.decode(b"abcdefgh", "hex")
Nick Coghlan77b286b2014-01-27 00:53:38 +1000267 Traceback (most recent call last):
268 File "/usr/lib/python3.4/encodings/hex_codec.py", line 20, in hex_decode
269 return (binascii.a2b_hex(input), len(input))
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000270 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000271
272 The above exception was the direct cause of the following exception:
273
274 Traceback (most recent call last):
275 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000276 binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000277
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000278 >>> codecs.encode("hello", "bz2")
Nick Coghlan77b286b2014-01-27 00:53:38 +1000279 Traceback (most recent call last):
280 File "/usr/lib/python3.4/encodings/bz2_codec.py", line 17, in bz2_encode
281 return (bz2.compress(input), len(input))
282 File "/usr/lib/python3.4/bz2.py", line 498, in compress
283 return comp.compress(data) + comp.flush()
Nick Coghlan8b097b42013-11-13 23:49:21 +1000284 TypeError: 'str' does not support the buffer interface
285
286 The above exception was the direct cause of the following exception:
287
288 Traceback (most recent call last):
289 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000290 TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not support the buffer interface)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000291
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000292Finally, as the examples above show, these improvements have permitted
293the restoration of the convenience aliases for the non-Unicode codecs that
294were themselves restored in Python 3.2. This means that encoding binary data
295to and from its hexadecimal representation (for example) can now be written
296as::
297
298 >>> from codecs import encode, decode
299 >>> encode(b"hello", "hex")
300 b'68656c6c6f'
301 >>> decode(b"68656c6c6f", "hex")
302 b'hello'
303
304The binary and text transforms provided in the standard library are detailed
305in :ref:`binary-transforms` and :ref:`text-transforms`.
306
R David Murray9217dad2013-12-23 21:08:28 -0500307(Contributed by Nick Coghlan in :issue:`7475`, , :issue:`17827`,
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000308:issue:`17828` and :issue:`19619`)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000309
R David Murray809487e2013-12-22 20:49:40 -0500310.. _whatsnew-pep-451:
Eric Snowb523f842013-11-22 09:05:39 -0700311
312PEP 451: A ModuleSpec Type for the Import System
R David Murray809487e2013-12-22 20:49:40 -0500313------------------------------------------------
Eric Snowb523f842013-11-22 09:05:39 -0700314
R David Murrayf85b2a82013-12-22 21:06:13 -0500315:pep:`451` provides an encapsulation of the information about a module that the
316import machinery will use to load it (that is, a module specification). This
317helps simplify both the import implementation and several import-related APIs.
318The change is also a stepping stone for `several future import-related
319improvements`__.
Eric Snowb523f842013-11-22 09:05:39 -0700320
R David Murraye9b74d42013-12-22 21:05:04 -0500321__ https://mail.python.org/pipermail/python-dev/2013-November/130111.html
Eric Snowb523f842013-11-22 09:05:39 -0700322
323The public-facing changes from the PEP are entirely backward-compatible.
R David Murrayf85b2a82013-12-22 21:06:13 -0500324Furthermore, they should be transparent to everyone but importer authors. Key
325finder and loader methods have been deprecated, but they will continue working.
326New importers should use the new methods described in the PEP. Existing
327importers should be updated to implement the new methods.
Eric Snowb523f842013-11-22 09:05:39 -0700328
Nick Coghlan8b097b42013-11-13 23:49:21 +1000329
Georg Brandlb80f5112012-09-30 09:11:58 +0200330Other Language Changes
R David Murray809487e2013-12-22 20:49:40 -0500331----------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200332
333Some smaller changes made to the core Python language are:
334
Ezio Melotti34808e22013-10-12 16:36:13 +0300335* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200336
R David Murray9a2f1392013-06-28 13:31:19 -0400337* :func:`min` and :func:`max` now accept a *default* argument that can be used
338 to specify the value they return if the iterable they are evaluating has no
339 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200340
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200341* Module objects are now :mod:`weakref`'able.
342
Nick Coghlan0acceb72013-10-20 13:22:21 +1000343* Module ``__file__`` attributes (and related values) should now always
344 contain absolute paths by default, with the sole exception of
345 ``__main__.__file__`` when a script has been executed directly using
346 a relative path (Contributed by Brett Cannon in :issue:`18416`).
347
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200348* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
349 encoding and decoding unless the ``surrogatepass`` error handler is used,
350 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
351 and the UTF-16 encoder that produces them while encoding non-BMP characters.
352 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
353 :issue:`12892`.
354
Georg Brandlb80f5112012-09-30 09:11:58 +0200355
R David Murraye6082552014-01-03 16:15:45 -0500356
Georg Brandlb80f5112012-09-30 09:11:58 +0200357New Modules
358===========
359
Nick Coghlan0acceb72013-10-20 13:22:21 +1000360
R David Murray9217dad2013-12-23 21:08:28 -0500361.. _whatsnew-asyncio:
362
Nick Coghlan0acceb72013-10-20 13:22:21 +1000363asyncio
364-------
365
366The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
367pluggable event loop model for Python, providing solid asynchronous IO
368support in the standard library, and making it easier for other event loop
369implementations to interoperate with the standard library and each other.
370
371For Python 3.4, this module is considered a :term:`provisional API`.
372
Nick Coghlan367df122013-10-27 01:57:34 +1000373.. seealso::
374
R David Murray061efb12013-12-24 12:35:59 -0500375 :pep:`3156` -- Asynchronous IO Support Rebooted: the "asyncio" Module
Nick Coghlan367df122013-10-27 01:57:34 +1000376 PEP written and implementation led by Guido van Rossum.
377
R David Murray68790662013-12-23 11:17:51 -0500378
R David Murray9217dad2013-12-23 21:08:28 -0500379.. _whatsnew-ensurepip:
R David Murray68790662013-12-23 11:17:51 -0500380
381ensurepip
382---------
383
384The new :mod:`ensurepip` module is the primary infrastructure for the
385:pep:`453` implementation. In the normal course of events end users will not
386need to interact with this module, but it can be used to manually bootstrap
387``pip`` if the automated bootstrapping into an installation or virtual
388environment was declined.
389
390:mod:`ensurepip` includes a bundled copy of ``pip``, up-to-date as of the first
391release candidate of the release of CPython with which it ships (this applies
392to both maintenance releases and feature releases). ``ensurepip`` does not
393access the internet. (If the installation has Internet access, it is of course
394possible to upgrade ``pip`` to a release more recent than the bundled ``pip``
395by using the bundled ``pip`` command itself once it is installed.)
396
397The module is named *ensure*\ pip because if called when ``pip`` is already
398installed, it does nothing. It also has an ``--upgrade`` option that will
399cause it to install the bundled copy of ``pip`` if the existing installed
400version of ``pip`` is older than the bundled copy.
401
402
R David Murray9217dad2013-12-23 21:08:28 -0500403.. _whatsnew-enum:
404
Nick Coghlan0acceb72013-10-20 13:22:21 +1000405enum
406----
407
Nick Coghlan367df122013-10-27 01:57:34 +1000408The new :mod:`enum` module (defined in :pep:`435`) provides a standard
409implementation of enumeration types, allowing other modules (such as
410:mod:`socket`) to provide more informative error messages and better
411debugging support by replacing opaque integer constants with backwards
412compatible enumeration values.
413
414.. seealso::
415
R David Murray061efb12013-12-24 12:35:59 -0500416 :pep:`435` -- Adding an Enum type to the Python standard library
Nick Coghlan367df122013-10-27 01:57:34 +1000417 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
418 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000419
420
R David Murray9217dad2013-12-23 21:08:28 -0500421.. _whatsnew-pathlib:
422
Antoine Pitrou31119e42013-11-22 17:38:12 +0100423pathlib
424-------
425
426The new :mod:`pathlib` module offers classes representing filesystem paths
427with semantics appropriate for different operating systems. Path classes are
428divided between *pure paths*, which provide purely computational operations
429without I/O, and *concrete paths*, which inherit from pure paths but also
430provide I/O operations.
431
432For Python 3.4, this module is considered a :term:`provisional API`.
433
434.. seealso::
435
R David Murray061efb12013-12-24 12:35:59 -0500436 :pep:`428` -- The pathlib module -- object-oriented filesystem paths
Antoine Pitrou31119e42013-11-22 17:38:12 +0100437 PEP written and implemented by Antoine Pitrou.
438
439
R David Murrayf9976e72013-12-23 10:32:02 -0500440.. _whatsnew-selectors:
441
Charles-François Natali243d8d82013-09-04 19:02:49 +0200442selectors
443---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200444
Nick Coghlan0acceb72013-10-20 13:22:21 +1000445The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
446allows high-level and efficient I/O multiplexing, built upon the
447:mod:`select` module primitives.
448
449
R David Murray9217dad2013-12-23 21:08:28 -0500450.. _whatsnew-statistics:
451
Nick Coghlan0acceb72013-10-20 13:22:21 +1000452statistics
453----------
454
455The new :mod:`statistics` module (defined in :pep:`450`) offers some core
456statistics functionality directly in the standard library. This module
457supports calculation of the mean, median, mode, variance and standard
458deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200459
Nick Coghlan367df122013-10-27 01:57:34 +1000460.. seealso::
461
R David Murray061efb12013-12-24 12:35:59 -0500462 :pep:`450` -- Adding A Statistics Module To The Standard Library
Nick Coghlan367df122013-10-27 01:57:34 +1000463 PEP written and implemented by Steven D'Aprano
464
R David Murray9217dad2013-12-23 21:08:28 -0500465.. _whatsnew-tracemalloc:
Georg Brandlb80f5112012-09-30 09:11:58 +0200466
R David Murray8b2d6822013-12-31 15:06:05 -0500467
Victor Stinnerd2736af2013-11-25 09:40:27 +0100468tracemalloc
469-----------
470
471The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to
472trace memory blocks allocated by Python. It provides the following information:
473
474* Traceback where an object was allocated
475* Statistics on allocated memory blocks per filename and per line number:
476 total size, number and average size of allocated memory blocks
477* Compute the differences between two snapshots to detect memory leaks
478
479.. seealso::
480
R David Murray061efb12013-12-24 12:35:59 -0500481 :pep:`454` -- Add a new tracemalloc module to trace Python memory allocations
Victor Stinnerd2736af2013-11-25 09:40:27 +0100482 PEP written and implemented by Victor Stinner
483
484
R David Murraye6082552014-01-03 16:15:45 -0500485
Georg Brandlb80f5112012-09-30 09:11:58 +0200486Improved Modules
487================
488
R David Murray6e390152013-12-24 22:28:04 -0500489
R David Murray3edcc782013-12-24 16:13:32 -0500490abc
491---
492
493New function :func:`abc.get_cache_token` can be used to know when to invalidate
494caches that are affected by changes in the object graph. (Contributed
495by Łukasz Langa in :issue:`16832`.)
R David Murray72420ff2013-12-24 10:46:44 -0500496
R David Murray2691ee62013-12-28 23:15:12 -0500497New class :class:`~abc.ABC` has :class:`~abc.ABCMeta` as its meta class.
498Using ``ABC`` as a base class has essentially the same effect as specifying
499``metaclass=abc.ABCMeta``, but is simpler to type and easier to read.
500(Contributed by Bruno Dupuis in :issue:`16049`.)
501
502
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200503aifc
504----
505
506The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
507plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
508
R David Murrayd592bb22013-12-31 13:45:38 -0500509:func:`aifc.open` now supports the context manager protocol: when used in a
510:keyword:`with` block, the :meth:`~aifc.aifc.close` method of the returned
511object will be called automatically at the end of the block. (Contributed by
512Serhiy Storchacha in :issue:`16486`.)
513
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200514
R David Murrayfced3ec2013-12-31 11:18:01 -0500515argparse
516--------
517
518The :class:`~argparse.FileType` class now accepts *encoding* and
519*errors* arguments, which are passed through to :func:`open`. (Contributed
520by Lucas Maystre in :issue:`11175`.)
521
522
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300523audioop
524-------
525
526Added support for 24-bit samples (:issue:`12866`).
527
Serhiy Storchaka3062c9a2013-11-23 22:26:01 +0200528Added the :func:`~audioop.byteswap` function to convert big-endian samples
529to little-endian and vice versa (:issue:`19641`).
530
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300531
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000532base64
533------
534
535The encoding and decoding functions in :mod:`base64` now accept any
536:term:`bytes-like object` in cases where it previously required a
Georg Brandled007d52013-11-24 16:09:26 +0100537:class:`bytes` or :class:`bytearray` instance (:issue:`17839`).
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000538
539
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200540colorsys
541--------
542
543The number of digits in the coefficients for the RGB --- YIQ conversions have
544been expanded so that they match the FCC NTSC versions. The change in
545results should be less than 1% and may better match results found elsewhere.
R David Murray45e732d2014-02-03 01:33:39 -0500546(Contributed by Brian Landers and Serhiy Storchaka in :issue:`14323`.)
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200547
R David Murray8e37d5d2013-04-13 14:49:48 -0400548
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000549contextlib
550----------
551
Nick Coghlan240f86d2013-10-17 23:40:57 +1000552The new :class:`contextlib.suppress` context manager helps to clarify the
553intent of code that deliberately suppresses exceptions from a single
554statement. (Contributed by Raymond Hettinger in :issue:`15806` and
555Zero Piraeus in :issue:`19266`)
556
Victor Stinner6633c392013-10-21 13:27:11 +0200557The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000558for utility scripts to handle inflexible APIs that don't provide any
559options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000560other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
561this context manager is also useful for checking expected output from
562command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
563
564The :mod:`contextlib` documentation has also been updated to include a
565:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
566differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000567
568
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000569dis
570---
571
R David Murray0bce6e72014-01-07 14:30:17 -0500572Functions :func:`~dis.show_code`, :func:`~dis.dis`, :func:`~dis.distb`, and
573:func:`~dis.disassemble` now accept a keyword-only *file* argument that
574controls where they write their output.
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000575
R David Murray0bce6e72014-01-07 14:30:17 -0500576The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
577that provides object oriented access to the details of each individual bytecode
578operation.
579
580A new method, :func:`~dis.get_instructions`, provides an iterator that emits
581the Instruction stream for a given piece of Python code. Thus it is now
582possible to write a program that inspects and manipulates a bytecode
583object in ways different from those provided by the :mod:`~dis` module
584itself. For example::
585
586 >>> import dis
587 >>> for instr in dis.get_instructions(lambda x: x + 1):
588 ... print(instr.opname)
589 LOAD_FAST
590 LOAD_CONST
591 BINARY_ADD
592 RETURN_VALUE
593
594The various display tools in the :mod:`dis` module have been rewritten to use
595these new components.
596
597In addition, a new application-friendly class :class:`~dis.Bytecode` provides
598an object-oriented API for inspecting bytecode in both in human-readable form
599and for iterating over instructions. The :class:`~dis.Bytecode` constructor
600takes the same arguments that :func:`~dis.get_instruction` does (plus an
601optional *current_offset*), and the resulting object can be iterated to produce
602:class:`~dis.Instruction` objects. But it also has a :mod:`~dis.Bytecode.dis`
603method, equivalent to calling :mod:`~dis.dis` on the constructor argument, but
604returned as a multi-line string::
605
606 >>> bytecode = dis.Bytecode(lambda x: x +1, current_offset=3)
607 >>> for instr in bytecode:
608 ... print('{} ({})'.format(instr.opname, instr.opcode))
609 LOAD_FAST (124)
610 LOAD_CONST (100)
611 BINARY_ADD (23)
612 RETURN_VALUE (83)
613 >>> bytecode.dis().splitlines() # doctest: +NORMALIZE_WHITESPACE
614 [' 1 0 LOAD_FAST 0 (x)',
615 ' --> 3 LOAD_CONST 1 (1)',
616 ' 6 BINARY_ADD',
617 ' 7 RETURN_VALUE']
618
619:class:`~dis.Bytecode` also has a class method,
620:meth:`~dis.Bytecode.from_traceback`, that provides the ability to manipulate a
621traceback (that is, ``print(Bytecode.from_traceback(tb).dis())`` is equivalent
622to ``distb(tb)``).
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000623
Nick Coghlan50c48b82013-11-23 00:57:00 +1000624(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
625and Claudiu Popa in :issue:`17916`)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000626
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200627
R David Murray5a9d7062012-11-21 15:09:21 -0500628doctest
629-------
630
R David Murray473f45b2013-12-27 17:01:16 -0500631A new :ref:`option flag <doctest-options>`, :data:`~doctest.FAIL_FAST`, halts
632test running as soon as the first failure is detected. (Contributed by R.
633David Murray and Daniel Urban in :issue:`16522`.)
R David Murray5707d502013-06-23 14:24:13 -0400634
R David Murray473f45b2013-12-27 17:01:16 -0500635The :mod:`doctest` command line interface now uses :mod:`argparse`, and has two
636new options, ``-o`` and ``-f``. ``-o`` allows :ref:`doctest options
637<doctest-options>` to be specified on the command line, and ``-f`` is a
638shorthand for ``-o FAIL_FAST`` (to parallel the similar option supported by the
639:mod:`unittest` CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200640
R David Murray8e37d5d2013-04-13 14:49:48 -0400641
R David Murraybb17d2b2013-08-09 16:15:28 -0400642email
643-----
644
645:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
646override the default policy of the message when generating a string
647representation of it. This means that ``as_string`` can now be used in more
648circumstances, instead of having to create and use a :mod:`~email.generator` in
649order to pass formatting parameters to its ``flatten`` method.
650
651New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
652representation of the message in a fashion similar to how ``as_string``
653produces a string representation. It does not accept the *maxheaderlen*
654argument, but does accept the *unixfrom* and *policy* arguments. The
655:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
656calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
657result: a bytes object containing the fully formatted message.
658
659(Contributed by R. David Murray in :issue:`18600`.)
660
R David Murray26b80cfd2013-12-20 17:26:52 -0500661.. _whatsnew_email_contentmanager:
662
R David Murray3da240f2013-10-16 22:48:40 -0400663A pair of new subclasses of :class:`~email.message.Message` have been added,
664along with a new sub-module, :mod:`~email.contentmanager`. All documentation
665is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000666:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400667number of new methods that make extracting content from and inserting content
668into email messages much easier. See the :mod:`~email.contentmanager`
669documentation for details.
670
671These API additions complete the bulk of the work that was planned as part of
672the email6 project. The currently provisional API is scheduled to become final
673in Python 3.5 (possibly with a few minor additions in the area of error
674handling).
675
676(Contributed by R. David Murray in :issue:`18891`.)
677
R David Murraybb17d2b2013-08-09 16:15:28 -0400678
R David Murray4885f492014-02-02 11:11:01 -0500679filecmp
680-------
681
682A new :func:`~filecmp.clear_cache` function provides the ability to clear the
683:mod:`filecmp` comparison cache, which uses :func:`os.stat` information to
684determine if the file has changed since the last compare. This can be used,
685for example, if the file might have been changed and re-checked in less time
686than the resolution of a particular filesystem's file modification time field.
687(Contributed by Mark Levitt in :issue:`18149`.)
688
689
Victor Stinner854ffcb2013-06-21 00:36:30 +0200690functools
691---------
692
Andrew Kuchlingfe0f0b02014-01-31 12:17:53 -0500693The new :func:`~functools.partialmethod` descriptor brings partial argument
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000694application to descriptors, just as :func:`~functools.partial` provides
695for normal callables. The new descriptor also makes it easier to get
696arbitrary callables (including :func:`~functools.partial` instances)
697to behave like normal instance methods when included in a class definition.
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000698(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
699
R David Murray0a102162013-12-20 15:00:54 -0500700.. _whatsnew-singledispatch:
701
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000702The new :func:`~functools.singledispatch` decorator brings support for
703single-dispatch generic functions to the Python standard library. Where
704object oriented programming focuses on grouping multiple operations on a
705common set of data into a class, a generic function focuses on grouping
706multiple implementations of an operation that allows it to work with
707*different* kinds of data.
708
709.. seealso::
710
R David Murray061efb12013-12-24 12:35:59 -0500711 :pep:`443` -- Single-dispatch generic functions
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000712 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200713
R David Murrayd2653812013-12-27 14:06:15 -0500714A pure-python version of the :func:`~functools.partial` function is now in the
715stdlib; in CPython it is overridden by the C accelerated version, but it is
716available for other implementations to use. (Contributed by Brian Thorne in
717:issue:`12428`.)
718
Nick Coghlane8c45d62013-07-28 20:00:01 +1000719
R David Murray0e814632013-12-26 15:11:28 -0500720gc
721--
722
R David Murraya101bdb2014-01-06 16:32:05 -0500723New function :func:`~gc.get_stats` returns a list of three per-generation
724dictionaries containing the collections statistics since interpreter startup.
725(Contributed by Antoine Pitrou in :issue:`16351`.)
R David Murray0e814632013-12-26 15:11:28 -0500726
727
Christian Heimese92ef132013-10-13 00:52:43 +0200728hashlib
729-------
730
731New :func:`hashlib.pbkdf2_hmac` function.
Christian Heimese92ef132013-10-13 00:52:43 +0200732(Contributed by Christian Heimes in :issue:`18582`)
733
734
R David Murraya56d4e82014-02-02 12:50:48 -0500735hmac
736----
737
738:mod:`hmac` now accepts ``bytearray`` as well as ``bytes`` for the *key*
739argument to the :func:`~hmac.new` function, and the *msg* parameter to both the
740:func:`~hmac.new` function and the :meth:`~hmac.HMAC.update` method now
741accepts any type supported by the :mod:`hashlib` module. (Contributed
742by Jonas Borgström in :issue:`18240`.)
743
744
Ezio Melotti250a06c2013-11-25 06:18:47 +0200745html
746----
747
748Added a new :func:`html.unescape` function that converts HTML5 character
749references to the corresponding Unicode characters.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200750(Contributed by Ezio Melotti in :issue:`2927`)
751
752Added a new *convert_charrefs* keyword argument to
753:class:`~html.parser.HTMLParser` that, when ``True``, automatically converts
754all character references. For backward-compatibility, its value defaults
755to ``False``, but it will change to ``True`` in future versions, so you
756are invited to set it explicitly and update your code to use this new feature.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200757(Contributed by Ezio Melotti in :issue:`13633`)
758
759The *strict* argument of :class:`~html.parser.HTMLParser` is now deprecated.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200760(Contributed by Ezio Melotti in :issue:`15114`)
761
762
R David Murraya475a8d2014-01-03 13:03:00 -0500763http
764----
765
766:meth:`~http.server.BaseHTTPRequestHandler.send_error` now accepts an
Zachary Ware335957e2014-01-13 16:08:54 -0600767optional additional *explain* parameter which can be used to provide an
R David Murraya475a8d2014-01-03 13:03:00 -0500768extended error description, overriding the hardcoded default if there is one.
769This extended error description will be formatted using the
770:attr:`~http.server.HTTP.error_message_format` attribute and sent as the body
771of the error response. (Contributed by Karl Cow in :issue:`12921`.)
772
773
R David Murrayd2653812013-12-27 14:06:15 -0500774importlib
775---------
776
777The :class:`~importlib.abc.InspectLoader` ABC defines a new method,
778:meth:`~importlib.abc.InspectLoader.source_to_code` that accepts source
779data and a path and returns a code object. The default implementation
780is equivalent to ``compile(data, path, 'exec', dont_inherit=True)``.
781(Contributed by Eric Snow and Brett Cannon in :issue:`15627`.)
782
R David Murray0ae7ae12014-01-08 18:16:02 -0500783:class:`~importlib.abc.InspectLoader` also now has a default implementation
784for the :meth:`~importlib.abc.InspectLoader.get_code` method. However,
785it will normally be desirable to override the default implementation
786for performance reasons. (Contributed by Brett Cannon in :issue:`18072`.)
787
R David Murray70e04f52014-02-02 10:50:17 -0500788The :func:`~importlib.reload` function has been moved from :mod:`imp` to
789:mod:`importlib` as part of the :mod:`imp` module deprecation. (Contributed by
790Berker Peksag in :issue:`18193`.)
R David Murray8c561b52014-02-01 12:27:07 -0500791
R David Murray900aeb72014-02-02 11:32:31 -0500792:mod:`importlib.util` now has a :data:`~importlib.util.MAGIC_NUMBER` attribute
793providing access to the bytecode version number. This replaces the
794:func:`~imp.get_magic` function in the deprecated :mod:`imp` module.
795(Contributed by Brett Cannon in :issue:`18192`.)
796
797New :mod:`importlib.util` functions :func:`~importlib.util.cache_from_source`
798and :func:`~importlib.util.source_from_cache` replace the same-named functions
799in the deprecated :mod:`imp` module. (Contributed by Brett Cannon in
800:issue:`18194`.)
801
R David Murray5147e002014-02-02 12:19:57 -0500802The :mod:`importlib` bootstrap :class:`.NamespaceLoader` now conforms to
803the :class:`.InspectLoader` ABC, which means that ``runpy`` and
804``python -m`` can now be used with namespace packages. (Contributed
805by Brett Cannon in :issue:`18058`.)
806
R David Murraya56d4e82014-02-02 12:50:48 -0500807:mod:`importlib.util` has a new function :func:`~importlib.util.decode_source`
808that decodes source from bytes using universal newline processing. This is
809useful for implementing :meth:`.InspectLoader.get_source` methods.
810
R David Murrayd2653812013-12-27 14:06:15 -0500811
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200812inspect
813-------
814
Nick Coghlan367df122013-10-27 01:57:34 +1000815The inspect module now offers a basic :ref:`command line interface
816<inspect-module-cli>` to quickly display source code and other
817information for modules, classes and functions. (Contributed by Claudiu Popa
818and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000819
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200820:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
821created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000822``__wrapped__`` attribute on a wrapper function). (Contributed by
823Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
824
825As part of the implementation of the new :mod:`enum` module, the
826:mod:`inspect` module now has substantially better support for custom
827``__dir__`` methods and dynamic class attributes provided through
828metaclasses (Contributed by Ethan Furman in :issue:`18929` and
829:issue:`19030`)
830
Yury Selivanovd82eddc2014-01-29 11:24:39 -0500831:func:`~inspect.getfullargspec` and :func:`~inspect.getargspec`
832now use the :func:`~inspect.signature` API. This allows them to
833support much broader range of functions, including some builtins and
834callables that follow ``__signature__`` protocol. It is still
835recommended to update your code to use :func:`~inspect.signature`
836directly. (Contributed by Yury Selivanov in :issue:`17481`)
837
Yury Selivanov63da7c72014-01-31 14:48:37 -0500838:func:`~inspect.signature` now supports duck types of CPython functions,
839which adds support for functions compiled with Cython. (Contributed
840by Stefan Behnel and Yury Selivanov in :issue:`17159`)
841
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200842
R David Murray9cf617b2014-01-04 18:55:01 -0500843logging
844-------
845
846The :class:`~logging.handlers.TimedRotatingFileHandler` has a new *atTime*
847parameter that can be used to specify the time of day when rollover should
848happen. (Contributed by Ronald Oussoren in :issue:`9556`.)
849
850
R David Murray8f7664a2013-12-22 20:40:11 -0500851.. _whatsnew-marshal-3:
852
853marshal
854-------
855
856The default :mod:`marshal` version has been bumped to 3. The code implementing
857the new version restores the Python2 behavior of recording only one copy of
858interned strings and preserving the interning on deserialization, and extends
859this "one copy" ability to any object type (including handling recursive
860references). This reduces both the size of ``.pyc`` files and the amount of
861memory a module occupies in memory when it is loaded from a ``.pyc`` (or
862``.pyo``) file. (Contributed by Kristján Valur Jónsson in :issue:`16475`.)
863
864
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200865mmap
866----
867
868mmap objects can now be weakref'ed.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200869(Contributed by Valerie Lambert in :issue:`4885`.)
870
871
R David Murray33ef1ae2013-12-31 16:04:50 -0500872mock
873----
874
875:mod:`~unittest.mock` objects now inspect their specification signatures when
876matching calls, which means an argument can now be matched by either position
877or name, instead of only by position. (Contributed by Antoine Pitrou in
878:issue:`17015`.)
879
R David Murray57fcf762014-01-03 23:31:54 -0500880:func:`~mock.mock_open` objects now have ``readline`` and ``readlines``
881methods. (Contributed by Toshio Kuratomi in :issue:`17467`.)
882
R David Murray33ef1ae2013-12-31 16:04:50 -0500883
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100884multiprocessing
885---------------
886
R David Murrayac186222013-12-20 17:23:57 -0500887.. _whatsnew-multiprocessing-no-fork:
888
889On Unix, two new :ref:`start methods <multiprocessing-start-methods>`
890(``spawn`` and ``forkserver``) have been added for starting processes using
891:mod:`multiprocessing`. These make the mixing of processes with threads more
892robust, and the ``spawn`` method matches the semantics that multiprocessing has
893always used on Windows. (Contributed by Richard Oudkerk in :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100894
895Also, except when using the old *fork* start method, child processes
R David Murrayac186222013-12-20 17:23:57 -0500896will no longer inherit unneeded handles/file descriptors from their parents
897(part of :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100898
Nick Coghlan9a767352013-12-17 22:17:26 +1000899:mod:`multiprocessing` now relies on :mod:`runpy` (which implements the
900``-m`` switch) to initialise ``__main__`` appropriately in child processes
901when using the ``spawn`` or ``forkserver`` start methods. This resolves some
902edge cases where combining multiprocessing, the ``-m`` command line switch
903and explicit relative imports could cause obscure failures in child
904processes. (Contributed by Nick Coghlan in :issue:`19946`)
905
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100906
R David Murray98358272014-01-05 20:52:06 -0500907operator
908--------
909
910There is now a pure-python version of the :mod:`operator` module available for
911reference and for use by alternate implementations of Python. (Contributed by
912Zachary Ware in :issue:`16694`.)
913
914
Victor Stinnerdaf45552013-08-28 00:53:59 +0200915os
916--
917
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200918New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200919descriptors or a Windows handle:
920
921* :func:`os.get_inheritable`, :func:`os.set_inheritable`
922* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
923
R David Murray66bf12a2014-01-08 17:21:22 -0500924The :mod:`os` module now provides a :func:`~os.cpu_count` function, analogous to
925the :func:`multiprocessing.cpu_count` function (which is now implemented in
926terms of the new :mod:`os` function). (Contributed by Trent Nelson, Yogesh
927Chaudhari, Victor Stinner, and Charles-François Natali in :issue:`17914`.)
928
Victor Stinnerdaf45552013-08-28 00:53:59 +0200929
R David Murray78d692f2013-10-10 17:23:26 -0400930pdb
931---
932
933The ``print`` command has been removed from :mod:`pdb`, restoring access to the
934``print`` function.
935
936Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
937entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
938mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
939prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
940command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
941``print`` function, making it inaccessible at the ``pdb`` prompt.
942
943(Contributed by Connor Osborn in :issue:`18764`.)
944
945
R David Murray809487e2013-12-22 20:49:40 -0500946.. _whatsnew-protocol-4:
947
R David Murray5ea95242013-12-24 15:59:57 -0500948pickle
R David Murray809487e2013-12-22 20:49:40 -0500949------
950
951protocol 4
952
953:mod:`pickle` now supports (but does not use by default) a new pickle protocol,
954protocol 4. This new protocol addresses a number of issues that were present
955in previous protocols, such as the serialization of nested classes, very large
956strings and containers, or classes whose :meth:`__new__` method takes
957keyword-only arguments. It also provides some efficiency improvements.
958
959.. seealso::
960
R David Murray061efb12013-12-24 12:35:59 -0500961 :pep:`3154` -- Pickle protocol 4
R David Murray809487e2013-12-22 20:49:40 -0500962 PEP written by Antoine Pitrou and implemented by Alexandre Vassalotti.
963
964
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200965poplib
966------
967
R David Murray473f45b2013-12-27 17:01:16 -0500968Two new methods have been added to :mod:`poplib`: :meth:`~poplib.POP3.capa`,
969which returns the list of capabilities advertised by the POP server, and
970:meth:`~poplib.POP3.stls`, which switches a clear-text POP3 session into an
971encrypted POP3 session if the POP server supports it. (Contributed by Lorenzo
972Catucci in :issue:`4473`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200973
974
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300975pprint
976------
977
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200978The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300979sequences (:issue:`19132`).
980
R David Murrayb231b2b2014-01-04 17:11:23 -0500981Long strings are now wrapped using Python's normal line continuation
982syntax (Contributed by Antoine Pitrou in :issue:`17150`.)
983
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300984
R David Murray6e390152013-12-24 22:28:04 -0500985pty
986---
987
988:func:`pty.spawn` now returns the status value from :func:`os.waitpid` on
989the child process, instead of ``None``. (Contributed by Gregory P. Smith.)
990
991
Nick Coghlan367df122013-10-27 01:57:34 +1000992pydoc
993-----
994
995While significant changes have not been made to :mod:`pydoc` directly,
996its handling of custom ``__dir__`` methods and various descriptor
997behaviours has been improved substantially by the underlying changes in
998the :mod:`inspect` module.
999
1000
Serhiy Storchaka32eddc12013-11-23 23:20:30 +02001001re
1002--
1003
1004Added :func:`re.fullmatch` function and :meth:`regex.fullmatch` method,
1005which anchor the pattern at both ends of the string to match.
1006(Contributed by Matthew Barnett in :issue:`16203`.)
1007
Ezio Melottidd7e2912013-11-25 23:20:20 +02001008The repr of :ref:`regex objects <re-objects>` now includes the pattern
1009and the flags; the repr of :ref:`match objects <match-objects>` now
1010includes the start, end, and the part of the string that matched.
Ezio Melottidd7e2912013-11-25 23:20:20 +02001011(Contributed by Serhiy Storchaka in :issue:`13592` and :issue:`17087`.)
1012
1013
Christian Heimesb7bd5df2013-10-22 11:21:54 +02001014resource
1015--------
1016
1017New :func:`resource.prlimit` function and Linux specific constants.
1018(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
1019
R David Murray575fb312013-12-25 23:21:03 -05001020
R David Murray2bc930f2013-12-31 11:17:21 -05001021select
1022------
1023
1024:class:`~select.epoll` objects now support the context management protocol.
1025When used in a :keyword:`with` statement, the :meth:`~select.epoll.close`
1026method will be called automatically at the end of the block. (Contributed
1027by Serhiy Storchaka in :issue:`16488`.)
1028
1029
R David Murray575fb312013-12-25 23:21:03 -05001030shelve
1031------
1032
1033:class:`~shelve.Shelf` instances may now be used in :keyword:`with` statements,
1034and will be automatically closed at the end of the :keyword:`with` block.
1035(Contributed by Filip Gruszczyński in :issue:`13896`.)
1036
1037
R David Murrayf1e4fdc2014-01-21 18:30:42 -05001038smtpd
1039-----
1040
1041The :class:`~smtpd.SMTPServer` and :class:`~smtpd.SMTPChannel` classes now
1042accept a *map* keyword argument, which if specified is passed in to
1043:class:`asynchat.async_chat` as its *map* argument. This allows an application
1044to avoid affecting the global socket map. (Contributed by Vinay Sajip in
1045:issue:`11959`.)
1046
1047
R David Murray8e37d5d2013-04-13 14:49:48 -04001048smtplib
1049-------
1050
R David Murray8a345962013-04-14 06:46:35 -04001051:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -04001052both socket level errors and SMTP protocol level errors to be caught in one
1053try/except statement by code that only cares whether or not an error occurred.
1054(:issue:`2118`).
1055
Antoine Pitroud6cbd342013-08-12 20:48:15 +02001056
Victor Stinnerdaf45552013-08-28 00:53:59 +02001057socket
1058------
1059
R David Murray33ef1ae2013-12-31 16:04:50 -05001060The socket module now supports the :data:`~socket.CAN_BCM` protocol on
1061platforms that support it. (Contributed by Brian Thorne in :issue:`15359`.)
1062
Georg Brandl5642ff92013-09-15 10:37:57 +02001063Socket objects have new methods to get or set their :ref:`inheritable flag
R David Murray33ef1ae2013-12-31 16:04:50 -05001064<fd_inheritance>`, :meth:`~socket.socket.get_inheritable` and
1065:meth:`~socket.socket.set_inheritable`.
Victor Stinnerdaf45552013-08-28 00:53:59 +02001066
R David Murray33ef1ae2013-12-31 16:04:50 -05001067The ``socket.AF_*`` and ``socket.SOCK_*`` constants are now enumeration values
1068using the new :mod:`enum` module. This allows meaningful names to be printed
1069during debugging, instead of integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +02001070
R David Murray66bf12a2014-01-08 17:21:22 -05001071The :data:`~socket.AF_LINK` constant is now available on BSD and OSX.
1072
R David Murray8b2d6822013-12-31 15:06:05 -05001073
R David Murray9025f1c2014-01-02 13:44:18 -05001074sqlite3
1075-------
1076
1077A new boolean parameter, *uri*, to the :func:`~sqlite3.connect` function can
1078be used to indicate that the *database* parameter is a ``uri`` (see
1079the `SQLite URI documentation <http://www.sqlite.org/uri.html>`_).
1080(Contributed by poq in :issue:`13773`.)
1081
1082
Christian Heimes24cd4cf2013-06-22 19:31:58 +02001083ssl
1084---
1085
R David Murray748bad22013-12-20 17:08:39 -05001086.. _whatsnew-tls-11-12:
Christian Heimes24cd4cf2013-06-22 19:31:58 +02001087
R David Murray748bad22013-12-20 17:08:39 -05001088:data:`~ssl.PROTOCOL_TLSv1_1` and :data:`~ssl.PROTOCOL_TLSv1_2` (TLSv1.1 and
1089TLSv1.2 support) have been added; support for these protocols is only available if
1090Python is linked with OpenSSL 1.0.1 or later. (Contributed by Michele Orrù and
1091Antoine Pitrou in :issue:`16692`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001092
R David Murrayf1e4fdc2014-01-21 18:30:42 -05001093New function :func:`~ssl.get_default_verify_paths` returns
1094a named tuple of the paths and environment variables that the
1095:meth:`~ssl.SSLContext.set_default_verify_paths` method uses to set
1096OpenSSL's default ``cafile`` and ``capath``. This can be an aid in
1097debugging default verification issues. (Contributed by Christian Heimes
1098in :issue:`18143`.)
1099
1100:class:`~ssl.SSLContext` has a new method,
1101:meth:`~ssl.SSLContext.cert_store_stats`, that reports the number of loaded
1102``X.509`` certs, ``X.509 CA`` certs, and certificate revocation lists (``crl``\
1103s), as well as a :meth:`~ssl.SSLContext.get_ca_certs` method that returns a
1104list of the loaded ``CA`` certificates. (Contributed by Christian Heimes in
1105and :issue:`18147`.)
Christian Heimes24cd4cf2013-06-22 19:31:58 +02001106
R David Murray8c561b52014-02-01 12:27:07 -05001107Two new windows-only functions, :func:`~ssl.enum_certificates` and
1108:func:`~ssl.enum_crls` provide the ability to retrieve certificates,
1109certificate information, and CRLs from the Windows cert store. (Contributed
1110by Christian Heimes in :issue:`17134`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001111
1112Support for server-side SNI using the new
1113:meth:`ssl.SSLContext.set_servername_callback` method.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001114(Contributed by Daniel Black in :issue:`8109`.)
1115
1116
Antoine Pitroud6cbd342013-08-12 20:48:15 +02001117stat
1118----
1119
1120The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
1121implementation is required as most of the values aren't standardized and
1122platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
1123
1124The module supports new file types: door, event port and whiteout.
1125
1126
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001127struct
1128------
1129
R David Murray98358272014-01-05 20:52:06 -05001130:mod:`struct` now supports the streamed unpacking of a buffer containing
1131repeated instances of a given format of data. Both a module level
1132:mod:`~struct.iter_unpack` function and a :meth:`struct.Struct.iter_unpack`
1133method on compiled formats have been added. (Contributed by Antoine Pitrou in
1134:issue:`17804`.)
1135
1136
1137subprocess
1138----------
1139
1140:func:`~subprocess.check_output` now accepts an *input* argument that can
1141be used to provide the contents of ``stdin`` for the command that is run.
1142(Contributed by Zack Weinberg in :issue:`16624`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001143
1144
Serhiy Storchakae06a8962013-09-04 00:43:03 +03001145sunau
1146-----
1147
1148The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
1149plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
1150
Serhiy Storchaka34d20132013-09-05 17:01:53 +03001151:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
1152
Serhiy Storchakae06a8962013-09-04 00:43:03 +03001153
R David Murrayd17aba72013-12-24 14:46:23 -05001154sys
1155---
1156
1157New function :func:`sys.getallocatedblocks` returns the current number of
1158blocks allocated by the interpreter (in CPython with the default
1159``--with-pymalloc`` setting, this is allocations made through the
1160:c:func:`PyObject_Malloc` API). This can be useful for tracking memory leaks,
1161especially if automated via a test suite. (Contributed by Antoine Pitrou
1162in :issue:`13390`.)
1163
1164
Andrew Kuchling173a1572013-09-15 18:15:56 -04001165traceback
1166---------
1167
1168A new :func:`traceback.clear_frames` function takes a traceback object
1169and clears the local variables in all of the frames it references,
1170reducing the amount of memory consumed (:issue:`1565525`).
1171
1172
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001173urllib
1174------
1175
R David Murray473f45b2013-12-27 17:01:16 -05001176:mod:`urllib.request` now supports ``data:`` URLs via the
1177:class:`~urllib.request.DataHandler` class. (Contributed by Mathias Panzenböck
1178in :issue:`16423`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001179
1180
1181unittest
1182--------
1183
R David Murray57fcf762014-01-03 23:31:54 -05001184The :class:`~unittest.TestCase` class has a new method,
1185:meth:`~unittest.TestCase.subTest`, that produces a context manager whose
1186:keyword:`with` block becomes a "sub-test". This context manager allows a test
1187method to dynamically generate subtests by, say, calling the ``subTest``
1188context manager inside a loop. A single test method can thereby produce an
1189indefinite number of separately-identified and separately-counted tests, all of
1190which will run even if one or more of them fail. For example::
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001191
R David Murray57fcf762014-01-03 23:31:54 -05001192 class NumbersTest(unittest.TestCase):
1193 def test_even(self):
1194 for i in range(6):
1195 with self.subTest(i=1):
1196 self.assertEqual(i % 2, 0)
1197
1198will result in six subtests, each identified in the unittest verbose output
1199with a label consisting of the variable name ``i`` and a particular value for
1200that variable (``i=0``, ``i=1``, etc). See :ref:`subtests` for the full
1201version of this example. (Contributed by Antoine Pitrou in :issue:`16997`.)
1202
1203:func:`unittest.main` now accepts an iterable of test names for
R David Murray9025f1c2014-01-02 13:44:18 -05001204*defaultTest*, where previously it only accepted a single test name as a
1205string. (Contributed by Jyrki Pulliainen in :issue:`15132`.)
1206
R David Murray42fa1102014-01-03 13:03:36 -05001207If :class:`~unittest.SkipTest` is raised during test discovery (that is, at the
1208module level in the test file), it is now reported as a skip instead of an
1209error. (Contributed by Zach Ware in :issue:`16935`.)
1210
R David Murraydb085f52014-01-03 15:46:24 -05001211:meth:`~unittest.TestLoader.discover` now sorts the discovered files to provide
1212consistent test ordering. (Contributed by Martin Melin and Jeff Ramnani in
1213:issue:`16709`.)
1214
R David Murray8e37d5d2013-04-13 14:49:48 -04001215
R David Murray575fb312013-12-25 23:21:03 -05001216venv
1217----
1218
1219:mod:`venv` now includes activation scripts for the ``csh`` and ``fish``
1220shells (Contributed by Andrew Svetlov in :issue:`15417`.)
1221
1222
R David Murray671cd322013-04-10 12:31:43 -04001223wave
1224----
1225
1226The :meth:`~wave.getparams` method now returns a namedtuple rather than a
1227plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
1228
R David Murrayc91d5ee2013-07-31 13:46:08 -04001229:meth:`wave.open` now supports the context manager protocol. (Contributed
1230by Claudiu Popa in :issue:`17616`.)
1231
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001232
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001233weakref
1234-------
1235
1236New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +10001237methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001238
Nick Coghlanbe57ab82013-09-22 21:26:30 +10001239New :class:`~weakref.finalize` class makes it possible to register a callback
1240to be invoked when an object is garbage collected, without needing to
1241carefully manage the lifecycle of the weak reference itself. (Contributed by
1242Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001243
R David Murraya101bdb2014-01-06 16:32:05 -05001244The callback, if any, associated with a :class:`~weakref.ref` is now
1245exposed via the :attr:`~weakref.ref.__callback__` attribute. (Contributed
1246by Mark Dickinson in :issue:`17643`.)
1247
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001248
1249xml.etree
1250---------
1251
R David Murray410d3202014-01-04 23:52:50 -05001252A new parser, :class:`~xml.etree.ElementTree.XMLPullParser`, allows a
1253non-blocking applications to parse XML documents. An example can be
1254seen at :ref:`elementtree-pull-parsing`. (Contributed by Antoine
1255Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001256
R David Murray575fb312013-12-25 23:21:03 -05001257The :mod:`xml.etree.ElementTree` :func:`~xml.etree.ElementTree.tostring` and
1258:func:`~xml.etree.ElementTree.tostringlist` functions, and the
1259:class:`~xml.etree.ElementTree.ElementTree`
1260:meth:`~xml.etree.ElementTree.ElementTree.write` method, now have a
1261*short_empty_elements* :ref:`keyword-only parameter <keyword-only_parameter>`
1262providing control over whether elements with no content are written in
1263abbreviated (``<tag />``) or expanded (``<tag></tag>``) form. (Contributed by
1264Ariel Poliak and Serhiy Storchaka in :issue:`14377`.)
1265
Christian Tismer59202e52013-10-21 03:59:23 +02001266
1267zipfile.PyZipfile
1268-----------------
1269
1270Add a filter function to ignore some packages (tests for instance),
1271:meth:`~zipfile.PyZipFile.writepy`.
Christian Tismer59202e52013-10-21 03:59:23 +02001272(Contributed by Christian Tismer in :issue:`19274`.)
1273
1274
R David Murraye6082552014-01-03 16:15:45 -05001275
Nick Coghlan367df122013-10-27 01:57:34 +10001276CPython Implementation Changes
1277==============================
1278
1279
R David Murrayc16dfe12013-12-21 12:32:10 -05001280.. _whatsnew-pep-445:
Nick Coghlan367df122013-10-27 01:57:34 +10001281
R David Murraye7cf6782013-12-24 14:51:25 -05001282PEP 445: Customization of CPython Memory Allocators
Nick Coghlan367df122013-10-27 01:57:34 +10001283---------------------------------------------------
1284
1285:pep:`445` adds new C level interfaces to customize memory allocation in
1286the CPython interpreter.
1287
1288.. seealso::
1289
R David Murray061efb12013-12-24 12:35:59 -05001290 :pep:`445` -- Add new APIs to customize Python memory allocators
Nick Coghlan367df122013-10-27 01:57:34 +10001291 PEP written and implemented by Victor Stinner.
1292
1293
R David Murrayc16dfe12013-12-21 12:32:10 -05001294.. _whatsnew-pep-442:
Nick Coghlan367df122013-10-27 01:57:34 +10001295
R David Murraye7cf6782013-12-24 14:51:25 -05001296PEP 442: Safe Object Finalization
Nick Coghlan367df122013-10-27 01:57:34 +10001297---------------------------------
1298
1299:pep:`442` removes the current limitations and quirks of object finalization
1300in CPython. With it, objects with :meth:`__del__` methods, as well as
1301generators with :keyword:`finally` clauses, can be finalized when they are
1302part of a reference cycle.
1303
1304As part of this change, module globals are no longer forcibly set to
1305:const:`None` during interpreter shutdown in most cases, instead relying
R David Murrayca794612013-12-22 14:05:11 -05001306on the normal operation of the cyclic garbage collector. This avoids a
1307whole class of interpreter-shutdown-time errors, usually involving
1308``__del__`` methods, that have plagued Python since the cyclic GC
1309was first introduced.
Nick Coghlan367df122013-10-27 01:57:34 +10001310
1311.. seealso::
1312
R David Murray061efb12013-12-24 12:35:59 -05001313 :pep:`442` -- Safe object finalization
Nick Coghlan367df122013-10-27 01:57:34 +10001314 PEP written and implemented by Antoine Pitrou.
1315
1316
R David Murrayc16dfe12013-12-21 12:32:10 -05001317.. _whatsnew-pep-456:
1318
1319PEP 456: Secure and Interchangeable Hash Algorithm
1320--------------------------------------------------
1321
1322:pep:`456` follows up on earlier security fix work done on Python's hash
1323algorithm to address certain DOS attacks to which public facing APIs backed by
1324dictionary lookups may be subject. (See :issue:`14621` for the start of the
1325current round of improvements.) The PEP unifies CPython's hash code to make it
1326easier for a packager to substitute a different hash algorithm, and switches
1327Python's default implementation to a SipHash implementation on platforms that
1328have a 64 bit data type. Any performance differences in comparison with the
1329older FNV algorithm are trivial.
1330
1331The PEP adds additional fields to the :func:`sys.hash_info` struct sequence to
1332describe the hash algorithm in use by the currently executing binary. Otherwise,
1333the PEP does not alter any existing CPython APIs.
1334
1335
R David Murray6dd18302013-12-24 12:23:56 -05001336.. _whatsnew-pep-436:
1337
1338PEP 436: Argument Clinic
1339------------------------
1340
1341"Argument Clinic" (:pep:`436`) is now part of the CPython build process
1342and can be used to simplify the process of defining and maintaining
1343accurate signatures for builtins and standard library extension modules
1344implemented in C.
1345
1346.. note::
1347 The Argument Clinic PEP is not fully up to date with the state of the
1348 implementation. This has been deemed acceptable by the release manager
1349 and core development team in this case, as Argument Clinic will not
1350 be made available as a public API for third party use in Python 3.4.
1351
1352.. seealso::
1353
R David Murray061efb12013-12-24 12:35:59 -05001354 :pep:`436` -- The Argument Clinic DSL
R David Murray6dd18302013-12-24 12:23:56 -05001355 PEP written and implemented by Larry Hastings.
1356
1357
R David Murraye7cf6782013-12-24 14:51:25 -05001358Other Build and C API Changes
Nick Coghlan367df122013-10-27 01:57:34 +10001359-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +02001360
Nick Coghlan7d270ee2013-10-17 22:35:35 +10001361* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
1362 allows applications embedding the CPython interpreter to reliably force
1363 a particular encoding and error handler for the standard streams
1364 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +02001365
Nick Coghlan0acceb72013-10-20 13:22:21 +10001366* Most Python C APIs that don't mutate string arguments are now correctly
1367 marked as accepting ``const char *`` rather than ``char *`` (Contributed
1368 by Serhiy Storchaka in :issue:`1772673`).
1369
R David Murrayd91ba202013-12-24 12:13:44 -05001370* New shell version of ``python-config``; can be used even when a python
1371 interpreter is not available (for example, in cross compilation scenarios).
1372
Georg Brandlb80f5112012-09-30 09:11:58 +02001373
R David Murraye6082552014-01-03 16:15:45 -05001374
R David Murraye7cf6782013-12-24 14:51:25 -05001375Other Improvements
R David Murraybcaaecf2013-12-23 21:23:36 -05001376==================
1377
1378* Tab-completion is now enabled by default in the interactive interpreter.
1379 (Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
1380
1381* Invoking the Python interpreter with ``--version`` now outputs the version to
1382 standard output instead of standard error (:issue:`18338`). Similar changes
1383 were made to :mod:`argparse` (:issue:`18920`) and other modules that have
1384 script-like invocation capabilities (:issue:`18922`).
1385
R David Murray72420ff2013-12-24 10:46:44 -05001386* The CPython Windows installer now adds ``.py`` to the :envvar:`PATHEXT`
1387 variable when extensions are registered, allowing users to run a python
1388 script at the windows command prompt by just typing its name without the
1389 ``.py`` extension. (Contributed by Paul Moore in :issue:`18569`.)
1390
R David Murrayd17aba72013-12-24 14:46:23 -05001391* A new ``make`` target `coverage-report
1392 <http://docs.python.org/devguide/coverage.html#measuring-coverage-of-c-code-with-gcov-and-lcov>`_
1393 will build python, run the test suite, and generate an HTML coverage report
1394 for the C codebase using ``gcov`` and `lcov
1395 <http://ltp.sourceforge.net/coverage/lcov.php>`_.
1396
1397* The ``-R`` option to the :ref:`python regression test suite <regrtest>` now
1398 also checks for memory allocation leaks, using
1399 :func:`sys.getallocatedblocks()`. (Contributed by Antoine Pitrou in
1400 :issue:`13390`).
1401
R David Murray5147e002014-02-02 12:19:57 -05001402* ``python -m`` now works with namespace packages.
1403
R David Murraya56d4e82014-02-02 12:50:48 -05001404* The :mod:`stat` module is now implemented in C, which means it gets the
1405 values for its constants from the C header files, instead of having the
1406 values hard-coded in the python module as was previously the case.
1407
R David Murraybcaaecf2013-12-23 21:23:36 -05001408
R David Murraye6082552014-01-03 16:15:45 -05001409
R David Murrayd74d09a2013-12-24 15:33:02 -05001410Significant Optimizations
1411=========================
R David Murraybcaaecf2013-12-23 21:23:36 -05001412
R David Murray4908f4a2014-01-04 18:07:20 -05001413* The UTF-32 decoder is now 3x to 4x faster. (Contributed by Serhiy Storchaka
1414 in :issue:`14625`.)
R David Murraybcaaecf2013-12-23 21:23:36 -05001415
1416* The cost of hash collisions for sets is now reduced. Each hash table
1417 probe now checks a series of consecutive, adjacent key/hash pairs before
1418 continuing to make random probes through the hash table. This exploits
1419 cache locality to make collision resolution less expensive.
R David Murraybcaaecf2013-12-23 21:23:36 -05001420 The collision resolution scheme can be described as a hybrid of linear
1421 probing and open addressing. The number of additional linear probes
1422 defaults to nine. This can be changed at compile-time by defining
1423 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
R David Murray59171722014-01-03 15:52:22 -05001424 linear probing entirely. (Contributed by Raymond Hettinger in
1425 :issue:`18771`.)
R David Murraybcaaecf2013-12-23 21:23:36 -05001426
1427* The interpreter starts about 30% faster. A couple of measures lead to the
1428 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
1429 :mod:`collections` and :mod:`locale` modules and their dependencies are no
1430 longer imported by default. The marshal module has been improved to load
R David Murray59171722014-01-03 15:52:22 -05001431 compiled Python code faster. (Contributed by Antoine Pitrou, Christian
1432 Heimes and Victor Stinner in :issue:`19219`, :issue:`19218`, :issue:`19209`,
1433 :issue:`19205` and :issue:`9548`)
R David Murraybcaaecf2013-12-23 21:23:36 -05001434
R David Murray6e390152013-12-24 22:28:04 -05001435* :class:`bz2.BZ2File` is now as fast or faster than the Python2 version for
1436 most cases. :class:`lzma.LZMAFile` has also been optimized. (Contributed by
1437 Serhiy Storchaka and Nadeem Vawda in :issue:`16034`.)
1438
R David Murray8b2d6822013-12-31 15:06:05 -05001439* :func:`random.getrandbits` is 20%-40% faster for small integers (the most
1440 common use case). (Contributed by Serhiy Storchaka in :issue:`16674`).
1441
R David Murrayb231b2b2014-01-04 17:11:23 -05001442* By taking advantage of the new storage format for strings, pickling of
1443 strings is now significantly faster. (Contributed by Victor Stinner and
1444 Antoine Pitrou in :issue:`15596`.)
1445
R David Murray66bf12a2014-01-08 17:21:22 -05001446* A performance issue in :meth:`io.FileIO.readall` has been solved. This
1447 particularly affects Windows, and significantly speeds up the case of piping
1448 significant amounts of data through :mod:`subprocess`. (Contributed
1449 by Richard Oudkerk in :issue:`15758`.)
1450
R David Murraybf0ab832014-02-03 01:14:03 -05001451* :func:`html.escape` is now 10x faster. (Contributed by Matt Bryant in
1452 :issue:`18020`.)
R David Murraybcaaecf2013-12-23 21:23:36 -05001453
R David Murraye6082552014-01-03 16:15:45 -05001454
Georg Brandlb80f5112012-09-30 09:11:58 +02001455Deprecated
1456==========
1457
R David Murrayd74d09a2013-12-24 15:33:02 -05001458This section covers various APIs and other features that have been deprecated
1459in Python 3.4, and will be removed in Python 3.5 or later. In most (but not
1460all) cases, using the deprecated APIs will produce a :exc:`DeprecationWarning`
1461when the interpreter is run with deprecation warnings enabled (for example, by
1462using ``-Wd``).
1463
Georg Brandlb80f5112012-09-30 09:11:58 +02001464
R David Murraye7cf6782013-12-24 14:51:25 -05001465Deprecated Python Modules, Functions and Methods
Georg Brandlb80f5112012-09-30 09:11:58 +02001466------------------------------------------------
1467
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -04001468* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -04001469 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
1470 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +02001471
Brett Cannon82b3d6a2013-06-14 22:37:11 -04001472* :func:`importlib.util.module_for_loader` is pending deprecation. Using
1473 :func:`importlib.util.module_to_load` and
1474 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
1475 to more easily customize module loading.
1476
Brett Cannone4f41de2013-06-16 13:13:40 -04001477* The :mod:`imp` module is pending deprecation. To keep compatibility with
1478 Python 2/3 code bases, the module's removal is currently not scheduled.
1479
Brett Cannon1448ecf2013-10-04 11:38:59 -04001480* The :mod:`formatter` module is pending deprecation and is slated for removal
1481 in Python 3.6.
1482
Christian Heimes634919a2013-11-20 17:23:06 +01001483* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
1484 require an explicit digest name or constructor as *digestmod* argument.
1485
R David Murray9025f1c2014-01-02 13:44:18 -05001486* The internal ``Netrc`` class in the :mod:`ftplib` module has been documented
1487 as deprecated in its docstring for quite some time. It now emits a
1488 :exc:`DeprecationWarning` and will be removed completely in Python 3.5.
1489
Georg Brandlb80f5112012-09-30 09:11:58 +02001490
R David Murraye7cf6782013-12-24 14:51:25 -05001491Deprecated Functions and Types in the C API
Georg Brandlb80f5112012-09-30 09:11:58 +02001492-------------------------------------------
1493
R David Murrayd74d09a2013-12-24 15:33:02 -05001494XXX: None so far
Georg Brandlb80f5112012-09-30 09:11:58 +02001495
1496
R David Murraye7cf6782013-12-24 14:51:25 -05001497Deprecated Features
Georg Brandlb80f5112012-09-30 09:11:58 +02001498-------------------
1499
R David Murray5ea95242013-12-24 15:59:57 -05001500* Running :ref:`idle` with the ``-n`` flag (no subprocess) is deprecated.
1501 However, the feature will not be removed until :issue:`18823` is resolved.
1502
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +02001503* The site module adding a "site-python" directory to sys.path, if it
1504 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +02001505
1506
R David Murray59171722014-01-03 15:52:22 -05001507
R David Murray72420ff2013-12-24 10:46:44 -05001508Removed
1509=======
1510
R David Murray59171722014-01-03 15:52:22 -05001511
1512Operating Systems No Longer Supported
1513-------------------------------------
1514
1515Support for the following operating systems has been removed from the source
1516and build tools:
1517
1518* OS/2 (:issue:`16135`).
1519* Windows 2000 (changeset e52df05b496a).
1520* VMS (:issue:`16136`).
1521
1522
1523API and Feature Removals
1524------------------------
1525
R David Murrayd2653812013-12-27 14:06:15 -05001526The following obsolete and previously deprecated APIs and features have been
R David Murray59171722014-01-03 15:52:22 -05001527removed:
R David Murray076dead2013-12-24 14:59:50 -05001528
R David Murray72420ff2013-12-24 10:46:44 -05001529* The unmaintained ``Misc/TextMate`` and ``Misc/vim`` directories have been
R David Murrayd91ba202013-12-24 12:13:44 -05001530 removed (see the `devguide <http://docs.python.org/devguide>`_
R David Murray00569362014-01-03 13:04:25 -05001531 for suggestions on what to use instead).
R David Murray72420ff2013-12-24 10:46:44 -05001532
R David Murrayd17aba72013-12-24 14:46:23 -05001533* The ``SO`` makefile macro is removed (it was replaced by the
1534 ``SHLIB_SUFFIX`` and ``EXT_SUFFIX`` macros) (:issue:`16754`).
1535
R David Murrayd74d09a2013-12-24 15:33:02 -05001536* The ``PyThreadState.tick_counter`` field has been removed; its value has
1537 been meaningless since Python 3.2, when the "new GIL" was introduced.
1538
R David Murrayd2653812013-12-27 14:06:15 -05001539* ``PyLoader`` and ``PyPycLoader`` have been removed from :mod:`importlib`.
1540 (Contributed by Taras Lyapun in :issue:`15641`.)
1541
R David Murraya2924ca2014-01-03 14:06:01 -05001542* The *strict* argument to :class:`~http.client.HTTPConnection` and
1543 :class:`~http.client.HTTPSConnection` has been removed. HTTP 0.9-style
1544 "Simple Responses" are no longer supported.
R David Murray00569362014-01-03 13:04:25 -05001545
R David Murraydb085f52014-01-03 15:46:24 -05001546* The deprecated :mod:`urllib.request.Request` getter and setter methods
1547 ``add_data``, ``has_data``, ``get_data``, ``get_type``, ``get_host``,
1548 ``get_selector``, ``set_proxy``, ``get_origin_req_host``, and
1549 ``is_unverifiable`` have been removed (use direct attribute access instead).
1550
R David Murray244ad602014-01-04 21:17:52 -05001551* Support for loading the deprecated ``TYPE_INT64`` has been removed from
1552 :mod:`marshal`. (Contributed by Dan Riti in :issue:`15480`.)
1553
Yury Selivanov2393dca2014-01-27 15:07:58 -05001554* :class:`inspect.Signature`: positional-only parameters are now required
1555 to have a valid name.
1556
R David Murray72420ff2013-12-24 10:46:44 -05001557
R David Murray98358272014-01-05 20:52:06 -05001558Code Cleanups
1559-------------
1560
1561* The unused and undocumented internal ``Scanner`` class has been removed from
1562 the :mod:`pydoc` module.
1563
R David Murraybf0ab832014-02-03 01:14:03 -05001564* The private and effectively unused ``_gestalt`` module has been removed,
1565 along with the private :mod:`platform` functions ``_mac_ver_lookup``,
1566 ``_mac_ver_gstalt``, and ``_bcd2str``, which would only have ever been called
1567 on badly broken OSX systems (see :issue:`18393`).
1568
R David Murray98358272014-01-05 20:52:06 -05001569
R David Murraye6082552014-01-03 16:15:45 -05001570
Benjamin Peterson88f3b232012-10-04 12:45:10 -04001571Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +02001572=====================
1573
1574This section lists previously described changes and other bugfixes
1575that may require changes to your code.
1576
R David Murrayd74d09a2013-12-24 15:33:02 -05001577Changes in the Python API
1578-------------------------
1579
Brett Cannon777622b2013-04-09 17:03:10 -04001580* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
1581 exception or return a default value instead of raising
1582 :exc:`NotImplementedError` blindly. This will only affect code calling
1583 :func:`super` and falling through all the way to the ABCs. For compatibility,
1584 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001585
1586* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
1587 attributes to ``None`` by default. To determine if these attributes were set
1588 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001589 ``getattr(module, '__loader__', None) is not None``.
1590
1591* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
1592 ``__package__`` unconditionally to properly support reloading. If this is not
1593 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -04001594 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -04001595
1596* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
1597 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
1598
Brett Cannon1448ecf2013-10-04 11:38:59 -04001599* Frozen packages no longer set ``__path__`` to a list containing the package
1600 name but an empty list instead. Determing if a module is a package should be
1601 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -04001602
Brett Cannon33915eb2013-06-14 18:33:00 -04001603* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
1604 it would write to is a symlink or a non-regular file. This is to act as a
1605 warning that import will overwrite those files with a regular file regardless
1606 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -04001607
1608* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
1609 :exc:`ImportError` when the source code being loaded triggers a
1610 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
1611 meant to be raised only when source code cannot be found but it should, it was
1612 felt to be over-reaching/overloading of that meaning when the source code is
1613 found but improperly structured. If you were catching ImportError before and
1614 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +02001615 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +10001616
1617* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
R David Murraybf0ab832014-02-03 01:14:03 -05001618 set the ``__wrapped__`` attribute to the function being wrapped, even if
Nick Coghlan367df122013-10-27 01:57:34 +10001619 that function also had its ``__wrapped__`` attribute set. This means
1620 ``__wrapped__`` attributes now correctly link a stack of decorated
1621 functions rather than every ``__wrapped__`` attribute in the chain
1622 referring to the innermost function. Introspection libraries that
1623 assumed the previous behaviour was intentional can use
1624 :func:`inspect.unwrap` to access the first function in the chain that has
1625 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +02001626
Georg Brandl0f5bff22013-10-19 17:46:38 +02001627* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -04001628 directory to objects in :data:`sys.path_hooks` for the empty string. This
1629 results in :data:`sys.path_importer_cache` never containing ``''``, thus
1630 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
1631 will not find all keys. A module's ``__file__`` when imported in the current
1632 working directory will also now have an absolute path, including when using
1633 ``-m`` with the interpreter (this does not influence when the path to a file
1634 is specified on the command-line).
Victor Stinner2748bc72013-12-13 10:57:04 +01001635
R David Murraya2924ca2014-01-03 14:06:01 -05001636* The removal of the *strict* argument to :class:`~http.client.HTTPConnection`
1637 and :class:`~http.client.HTTPSConnection` changes the meaning of the
1638 remaining arguments if you are specifying them positionally rather than by
1639 keyword. If you've been paying attention to deprecation warnings your code
1640 should already be specifying any additional arguments via keywords.
1641
R David Murray4908f4a2014-01-04 18:07:20 -05001642* Strings between ``from __future__ import ...`` statements now *always* raise
1643 a :exc:`SyntaxError`. Previously if there was no leading docstring, an
1644 interstitial string would sometimes be ignored. This brings CPython into
1645 compliance with the language spec; Jython and PyPy already were.
1646 (:issue:`17434`).
1647
R David Murraya101bdb2014-01-06 16:32:05 -05001648* :meth:`ssl.SSLSocket.getpeercert` and :meth:`ssl.SSLSocket.do_handshake`
1649 now raise an :exc:`OSError` with ``ENOTCONN`` when the ``SSLSocket`` is not
1650 connected, instead of the previous behavior of raising an
1651 :exc:`AttributError`. In addition, :meth:`~ssl.SSLSocket.getpeercert`
1652 will raise a :exc:`ValueError` if the handshake has not yet been done.
1653
R David Murray0ae7ae12014-01-08 18:16:02 -05001654* :func:`base64.b32decode` now raises a :exc:`binascii.Error` when the
1655 input string contains non-b32-alphabet characters, instead of a
1656 :exc:`TypeError`. This particular :exc:`TypeError` was missed when the other
1657 :exc:`TypeError`\ s were converted. (Contributed by Serhiy Storchaka in
1658 :issue:`18011`.) Note: this change was also inadvertently applied in Python
1659 3.3.3.
1660
Brett Cannonc089f702014-01-17 11:03:19 -05001661* The :attr:`~cgi.FieldStorage.file` attribute is now automatically closed when
1662 the creating :class:`cgi.FieldStorage` instance is garbage collected. If you
1663 were pulling the file object out separately from the :class:`cgi.FieldStorage`
1664 instance and not keeping the instance alive, then you should either store the
1665 entire :class:`cgi.FieldStorage` instance or read the contents of the file
1666 before the :class:`cgi.FieldStorage` instance is garbage collected.
1667
R David Murray45e732d2014-02-03 01:33:39 -05001668* Calling ``read`` or ``write`` on a closed SSL socket now raises an
1669 informative :exc:`ValueError` rather than the previous more mysterious
1670 :exc:`AttributeError` (:issue:`9177`).
1671
R David Murrayd2653812013-12-27 14:06:15 -05001672
Victor Stinner774b2e02013-12-13 14:33:01 +01001673Changes in the C API
1674--------------------
1675
1676* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
1677 argument is not set. Previously only ``NULL`` was returned with no exception
1678 set.
1679
1680* The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
1681 now be a string allocated by :c:func:`PyMem_RawMalloc` or
1682 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
1683 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
1684
1685* :c:func:`PyThread_set_key_value` now always set the value. In Python
Victor Stinner2748bc72013-12-13 10:57:04 +01001686 3.3, the function did nothing if the key already exists (if the current
1687 value is a non-NULL pointer).
1688
Victor Stinner774b2e02013-12-13 14:33:01 +01001689* The ``f_tstate`` (thread state) field of the :c:type:`PyFrameObject`
1690 structure has been removed to fix a bug: see :issue:`14432` for the
1691 rationale.