blob: 820d0cb9ddadfc95c494e99a532097e87d1f4a5e [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`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200135
Nick Coghlan367df122013-10-27 01:57:34 +1000136CPython implementation improvements:
Georg Brandlb80f5112012-09-30 09:11:58 +0200137
R David Murraya93ca972013-12-22 14:10:21 -0500138* :ref:`Safe object finalization <whatsnew-pep-442>` (:pep:`442`).
R David Murrayca794612013-12-22 14:05:11 -0500139* Leveraging :pep:`442`, :ref:`module globals are no longer set to None
140 during finalization <whatsnew-pep-442>`, in most cases (:issue:`18214`).
R David Murraya93ca972013-12-22 14:10:21 -0500141* :ref:`Configurable memory allocators <whatsnew-pep-445>` (:pep:`445`).
142* :ref:`Secure and interchangeable hash algorithm <whatsnew-pep-456>`
143 (:pep:`456`).
144* :ref:`Argument Clinic <whatsnew-pep-436>` (:pep:`436`).
R David Murray8f7664a2013-12-22 20:40:11 -0500145* The :mod:`marshal` format has been made :ref:`more compact and efficient
146 <whatsnew-marshal-3>` (:issue:`16475`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200147
R David Murray347f9c72013-12-23 21:30:06 -0500148Please read on for a comprehensive list of user-facing changes, including many
149other smaller improvements, CPython optimizations, deprecations, and potential
150porting issues.
Georg Brandlb80f5112012-09-30 09:11:58 +0200151
Nick Coghland0cf0632013-11-11 22:11:55 +1000152
R David Murraye6082552014-01-03 16:15:45 -0500153
R David Murraye7cf6782013-12-24 14:51:25 -0500154New Expected Features for Python Implementations
R David Murray809487e2013-12-22 20:49:40 -0500155================================================
156
R David Murray68790662013-12-23 11:17:51 -0500157.. _whatsnew-pep-453:
158
R David Murraye7cf6782013-12-24 14:51:25 -0500159PEP 453: Explicit Bootstrapping of PIP in Python Installations
R David Murray809487e2013-12-22 20:49:40 -0500160--------------------------------------------------------------
Nick Coghland0cf0632013-11-11 22:11:55 +1000161
162The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard
163cross-platform mechanism to boostrap the pip installer into Python
164installations and virtual environments.
165
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000166The :mod:`venv` module and the :command:`pyvenv` utility make use of this
167module to make ``pip`` readily available in virtual environments. When
168using the command line interface, ``pip`` is installed by default, while
169for the module API installation of ``pip`` must be requested explicitly.
170
171For CPython source builds on POSIX systems, the ``make install`` and
172``make altinstall`` commands bootstrap ``pip`` by default. This behaviour
173can be controlled through configure options, and overridden through
174Makefile options.
175
Ned Deily44a0db02013-11-22 22:39:09 -0800176On Windows and Mac OS X, the CPython installers now offer the option to
177install ``pip`` along with CPython itself.
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000178
R David Murray68790662013-12-23 11:17:51 -0500179As `discussed in the PEP`__, platform packagers may choose not to install
180``pip`` by default, as long as the command ``pip``, when invoked, provides
181clear and simple directions on how to install ``pip`` on the platform.
182
183__ http://www.python.org/dev/peps/pep-0453/#recommendations-for-downstream-distributors
184
Nick Coghland0cf0632013-11-11 22:11:55 +1000185.. note::
186
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000187 The implementation of PEP 453 is still a work in progress. Refer to
188 :issue:`19347` for the progress on additional steps:
Nick Coghland0cf0632013-11-11 22:11:55 +1000189
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000190 * Having the binary installers install ``pip`` by default
191 * Recommending the use of ``pip`` in the "Installing Python Module"
192 documentation.
Nick Coghland0cf0632013-11-11 22:11:55 +1000193
194.. seealso::
195
R David Murray061efb12013-12-24 12:35:59 -0500196 :pep:`453` -- Explicit bootstrapping of pip in Python installations
Nick Coghland0cf0632013-11-11 22:11:55 +1000197 PEP written by Donald Stufft and Nick Coghlan, implemented by
Nick Coghlan7bc4b3b2013-11-23 11:59:40 +1000198 Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily.
Nick Coghland0cf0632013-11-11 22:11:55 +1000199
200
R David Murrayf9909c22013-12-20 14:50:12 -0500201.. _whatsnew-pep-446:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200202
R David Murraye7cf6782013-12-24 14:51:25 -0500203PEP 446: Make Newly Created File Descriptors Non-Inheritable
R David Murray809487e2013-12-22 20:49:40 -0500204------------------------------------------------------------
Victor Stinnerdaf45552013-08-28 00:53:59 +0200205
Nick Coghlan367df122013-10-27 01:57:34 +1000206:pep:`446` makes newly created file descriptors :ref:`non-inheritable
Georg Brandl5642ff92013-09-15 10:37:57 +0200207<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200208
209* :func:`os.get_inheritable`, :func:`os.set_inheritable`
210* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
211* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
212
Antoine Pitrou796564c2013-07-30 19:59:21 +0200213.. seealso::
214
R David Murray061efb12013-12-24 12:35:59 -0500215 :pep:`446` -- Make newly created file descriptors non-inheritable
Nick Coghlan367df122013-10-27 01:57:34 +1000216 PEP written and implemented by Victor Stinner.
Antoine Pitrou796564c2013-07-30 19:59:21 +0200217
Georg Brandlb80f5112012-09-30 09:11:58 +0200218
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000219.. _codec-handling-improvements:
220
R David Murraye7cf6782013-12-24 14:51:25 -0500221Improvements to Codec Handling
R David Murray809487e2013-12-22 20:49:40 -0500222------------------------------
Nick Coghlan8b097b42013-11-13 23:49:21 +1000223
224Since it was first introduced, the :mod:`codecs` module has always been
225intended to operate as a type-neutral dynamic encoding and decoding
226system. However, its close coupling with the Python text model, especially
227the type restricted convenience methods on the builtin :class:`str`,
228:class:`bytes` and :class:`bytearray` types, has historically obscured that
229fact.
230
231As a key step in clarifying the situation, the :meth:`codecs.encode` and
232:meth:`codecs.decode` convenience functions are now properly documented in
233Python 2.7, 3.3 and 3.4. These functions have existed in the :mod:`codecs`
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000234module (and have been covered by the regression test suite) since Python 2.4,
Nick Coghlan8b097b42013-11-13 23:49:21 +1000235but were previously only discoverable through runtime introspection.
236
237Unlike the convenience methods on :class:`str`, :class:`bytes` and
238:class:`bytearray`, these convenience functions support arbitrary codecs
239in both Python 2 and Python 3, rather than being limited to Unicode text
240encodings (in Python 3) or ``basestring`` <-> ``basestring`` conversions
241(in Python 2).
242
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000243In Python 3.4, the interpreter is able to identify the known non-text
244encodings provided in the standard library and direct users towards these
245general purpose convenience functions when appropriate::
Nick Coghlan8b097b42013-11-13 23:49:21 +1000246
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000247 >>> b"abcdef".decode("hex")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000248 Traceback (most recent call last):
249 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000250 LookupError: 'hex' is not a text encoding; use codecs.decode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000251
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000252 >>> "hello".encode("rot13")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000253 Traceback (most recent call last):
254 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000255 LookupError: 'rot13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
Nick Coghlan8b097b42013-11-13 23:49:21 +1000256
257In a related change, whenever it is feasible without breaking backwards
258compatibility, exceptions raised during encoding and decoding operations
259will be wrapped in a chained exception of the same type that mentions the
260name of the codec responsible for producing the error::
261
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000262 >>> import codecs
263
264 >>> codecs.decode(b"abcdefgh", "hex")
Nick Coghlan8afc8f62013-11-22 23:00:22 +1000265 binascii.Error: Non-hexadecimal digit found
Nick Coghlan8b097b42013-11-13 23:49:21 +1000266
267 The above exception was the direct cause of the following exception:
268
269 Traceback (most recent call last):
270 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000271 binascii.Error: decoding with 'hex' codec failed (Error: Non-hexadecimal digit found)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000272
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000273 >>> codecs.encode("hello", "bz2")
Nick Coghlan8b097b42013-11-13 23:49:21 +1000274 TypeError: 'str' does not support the buffer interface
275
276 The above exception was the direct cause of the following exception:
277
278 Traceback (most recent call last):
279 File "<stdin>", line 1, in <module>
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000280 TypeError: encoding with 'bz2' codec failed (TypeError: 'str' does not support the buffer interface)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000281
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000282Finally, as the examples above show, these improvements have permitted
283the restoration of the convenience aliases for the non-Unicode codecs that
284were themselves restored in Python 3.2. This means that encoding binary data
285to and from its hexadecimal representation (for example) can now be written
286as::
287
288 >>> from codecs import encode, decode
289 >>> encode(b"hello", "hex")
290 b'68656c6c6f'
291 >>> decode(b"68656c6c6f", "hex")
292 b'hello'
293
294The binary and text transforms provided in the standard library are detailed
295in :ref:`binary-transforms` and :ref:`text-transforms`.
296
R David Murray9217dad2013-12-23 21:08:28 -0500297(Contributed by Nick Coghlan in :issue:`7475`, , :issue:`17827`,
Nick Coghlan9c1aed82013-11-23 11:13:36 +1000298:issue:`17828` and :issue:`19619`)
Nick Coghlan8b097b42013-11-13 23:49:21 +1000299
R David Murray809487e2013-12-22 20:49:40 -0500300.. _whatsnew-pep-451:
Eric Snowb523f842013-11-22 09:05:39 -0700301
302PEP 451: A ModuleSpec Type for the Import System
R David Murray809487e2013-12-22 20:49:40 -0500303------------------------------------------------
Eric Snowb523f842013-11-22 09:05:39 -0700304
R David Murrayf85b2a82013-12-22 21:06:13 -0500305:pep:`451` provides an encapsulation of the information about a module that the
306import machinery will use to load it (that is, a module specification). This
307helps simplify both the import implementation and several import-related APIs.
308The change is also a stepping stone for `several future import-related
309improvements`__.
Eric Snowb523f842013-11-22 09:05:39 -0700310
R David Murraye9b74d42013-12-22 21:05:04 -0500311__ https://mail.python.org/pipermail/python-dev/2013-November/130111.html
Eric Snowb523f842013-11-22 09:05:39 -0700312
313The public-facing changes from the PEP are entirely backward-compatible.
R David Murrayf85b2a82013-12-22 21:06:13 -0500314Furthermore, they should be transparent to everyone but importer authors. Key
315finder and loader methods have been deprecated, but they will continue working.
316New importers should use the new methods described in the PEP. Existing
317importers should be updated to implement the new methods.
Eric Snowb523f842013-11-22 09:05:39 -0700318
Nick Coghlan8b097b42013-11-13 23:49:21 +1000319
Georg Brandlb80f5112012-09-30 09:11:58 +0200320Other Language Changes
R David Murray809487e2013-12-22 20:49:40 -0500321----------------------
Georg Brandlb80f5112012-09-30 09:11:58 +0200322
323Some smaller changes made to the core Python language are:
324
Ezio Melotti34808e22013-10-12 16:36:13 +0300325* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200326
R David Murray9a2f1392013-06-28 13:31:19 -0400327* :func:`min` and :func:`max` now accept a *default* argument that can be used
328 to specify the value they return if the iterable they are evaluating has no
329 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200330
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200331* Module objects are now :mod:`weakref`'able.
332
Nick Coghlan0acceb72013-10-20 13:22:21 +1000333* Module ``__file__`` attributes (and related values) should now always
334 contain absolute paths by default, with the sole exception of
335 ``__main__.__file__`` when a script has been executed directly using
336 a relative path (Contributed by Brett Cannon in :issue:`18416`).
337
Serhiy Storchaka58cf6072013-11-19 11:32:41 +0200338* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
339 encoding and decoding unless the ``surrogatepass`` error handler is used,
340 with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
341 and the UTF-16 encoder that produces them while encoding non-BMP characters.
342 Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
343 :issue:`12892`.
344
Georg Brandlb80f5112012-09-30 09:11:58 +0200345
R David Murraye6082552014-01-03 16:15:45 -0500346
Georg Brandlb80f5112012-09-30 09:11:58 +0200347New Modules
348===========
349
Nick Coghlan0acceb72013-10-20 13:22:21 +1000350
R David Murray9217dad2013-12-23 21:08:28 -0500351.. _whatsnew-asyncio:
352
Nick Coghlan0acceb72013-10-20 13:22:21 +1000353asyncio
354-------
355
356The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
357pluggable event loop model for Python, providing solid asynchronous IO
358support in the standard library, and making it easier for other event loop
359implementations to interoperate with the standard library and each other.
360
361For Python 3.4, this module is considered a :term:`provisional API`.
362
Nick Coghlan367df122013-10-27 01:57:34 +1000363.. seealso::
364
R David Murray061efb12013-12-24 12:35:59 -0500365 :pep:`3156` -- Asynchronous IO Support Rebooted: the "asyncio" Module
Nick Coghlan367df122013-10-27 01:57:34 +1000366 PEP written and implementation led by Guido van Rossum.
367
R David Murray68790662013-12-23 11:17:51 -0500368
R David Murray9217dad2013-12-23 21:08:28 -0500369.. _whatsnew-ensurepip:
R David Murray68790662013-12-23 11:17:51 -0500370
371ensurepip
372---------
373
374The new :mod:`ensurepip` module is the primary infrastructure for the
375:pep:`453` implementation. In the normal course of events end users will not
376need to interact with this module, but it can be used to manually bootstrap
377``pip`` if the automated bootstrapping into an installation or virtual
378environment was declined.
379
380:mod:`ensurepip` includes a bundled copy of ``pip``, up-to-date as of the first
381release candidate of the release of CPython with which it ships (this applies
382to both maintenance releases and feature releases). ``ensurepip`` does not
383access the internet. (If the installation has Internet access, it is of course
384possible to upgrade ``pip`` to a release more recent than the bundled ``pip``
385by using the bundled ``pip`` command itself once it is installed.)
386
387The module is named *ensure*\ pip because if called when ``pip`` is already
388installed, it does nothing. It also has an ``--upgrade`` option that will
389cause it to install the bundled copy of ``pip`` if the existing installed
390version of ``pip`` is older than the bundled copy.
391
392
R David Murray9217dad2013-12-23 21:08:28 -0500393.. _whatsnew-enum:
394
Nick Coghlan0acceb72013-10-20 13:22:21 +1000395enum
396----
397
Nick Coghlan367df122013-10-27 01:57:34 +1000398The new :mod:`enum` module (defined in :pep:`435`) provides a standard
399implementation of enumeration types, allowing other modules (such as
400:mod:`socket`) to provide more informative error messages and better
401debugging support by replacing opaque integer constants with backwards
402compatible enumeration values.
403
404.. seealso::
405
R David Murray061efb12013-12-24 12:35:59 -0500406 :pep:`435` -- Adding an Enum type to the Python standard library
Nick Coghlan367df122013-10-27 01:57:34 +1000407 PEP written by Barry Warsaw, Eli Bendersky and Ethan Furman,
408 implemented by Ethan Furman.
Nick Coghlan0acceb72013-10-20 13:22:21 +1000409
410
R David Murray9217dad2013-12-23 21:08:28 -0500411.. _whatsnew-pathlib:
412
Antoine Pitrou31119e42013-11-22 17:38:12 +0100413pathlib
414-------
415
416The new :mod:`pathlib` module offers classes representing filesystem paths
417with semantics appropriate for different operating systems. Path classes are
418divided between *pure paths*, which provide purely computational operations
419without I/O, and *concrete paths*, which inherit from pure paths but also
420provide I/O operations.
421
422For Python 3.4, this module is considered a :term:`provisional API`.
423
424.. seealso::
425
R David Murray061efb12013-12-24 12:35:59 -0500426 :pep:`428` -- The pathlib module -- object-oriented filesystem paths
Antoine Pitrou31119e42013-11-22 17:38:12 +0100427 PEP written and implemented by Antoine Pitrou.
428
429
R David Murrayf9976e72013-12-23 10:32:02 -0500430.. _whatsnew-selectors:
431
Charles-François Natali243d8d82013-09-04 19:02:49 +0200432selectors
433---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200434
Nick Coghlan0acceb72013-10-20 13:22:21 +1000435The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
436allows high-level and efficient I/O multiplexing, built upon the
437:mod:`select` module primitives.
438
439
R David Murray9217dad2013-12-23 21:08:28 -0500440.. _whatsnew-statistics:
441
Nick Coghlan0acceb72013-10-20 13:22:21 +1000442statistics
443----------
444
445The new :mod:`statistics` module (defined in :pep:`450`) offers some core
446statistics functionality directly in the standard library. This module
447supports calculation of the mean, median, mode, variance and standard
448deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200449
Nick Coghlan367df122013-10-27 01:57:34 +1000450.. seealso::
451
R David Murray061efb12013-12-24 12:35:59 -0500452 :pep:`450` -- Adding A Statistics Module To The Standard Library
Nick Coghlan367df122013-10-27 01:57:34 +1000453 PEP written and implemented by Steven D'Aprano
454
R David Murray9217dad2013-12-23 21:08:28 -0500455.. _whatsnew-tracemalloc:
Georg Brandlb80f5112012-09-30 09:11:58 +0200456
R David Murray8b2d6822013-12-31 15:06:05 -0500457
Victor Stinnerd2736af2013-11-25 09:40:27 +0100458tracemalloc
459-----------
460
461The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to
462trace memory blocks allocated by Python. It provides the following information:
463
464* Traceback where an object was allocated
465* Statistics on allocated memory blocks per filename and per line number:
466 total size, number and average size of allocated memory blocks
467* Compute the differences between two snapshots to detect memory leaks
468
469.. seealso::
470
R David Murray061efb12013-12-24 12:35:59 -0500471 :pep:`454` -- Add a new tracemalloc module to trace Python memory allocations
Victor Stinnerd2736af2013-11-25 09:40:27 +0100472 PEP written and implemented by Victor Stinner
473
474
R David Murraye6082552014-01-03 16:15:45 -0500475
Georg Brandlb80f5112012-09-30 09:11:58 +0200476Improved Modules
477================
478
R David Murray6e390152013-12-24 22:28:04 -0500479
R David Murray3edcc782013-12-24 16:13:32 -0500480abc
481---
482
483New function :func:`abc.get_cache_token` can be used to know when to invalidate
484caches that are affected by changes in the object graph. (Contributed
485by Łukasz Langa in :issue:`16832`.)
R David Murray72420ff2013-12-24 10:46:44 -0500486
R David Murray2691ee62013-12-28 23:15:12 -0500487New class :class:`~abc.ABC` has :class:`~abc.ABCMeta` as its meta class.
488Using ``ABC`` as a base class has essentially the same effect as specifying
489``metaclass=abc.ABCMeta``, but is simpler to type and easier to read.
490(Contributed by Bruno Dupuis in :issue:`16049`.)
491
492
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200493aifc
494----
495
496The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
497plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
498
R David Murrayd592bb22013-12-31 13:45:38 -0500499:func:`aifc.open` now supports the context manager protocol: when used in a
500:keyword:`with` block, the :meth:`~aifc.aifc.close` method of the returned
501object will be called automatically at the end of the block. (Contributed by
502Serhiy Storchacha in :issue:`16486`.)
503
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200504
R David Murrayfced3ec2013-12-31 11:18:01 -0500505argparse
506--------
507
508The :class:`~argparse.FileType` class now accepts *encoding* and
509*errors* arguments, which are passed through to :func:`open`. (Contributed
510by Lucas Maystre in :issue:`11175`.)
511
512
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300513audioop
514-------
515
516Added support for 24-bit samples (:issue:`12866`).
517
Serhiy Storchaka3062c9a2013-11-23 22:26:01 +0200518Added the :func:`~audioop.byteswap` function to convert big-endian samples
519to little-endian and vice versa (:issue:`19641`).
520
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300521
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000522base64
523------
524
525The encoding and decoding functions in :mod:`base64` now accept any
526:term:`bytes-like object` in cases where it previously required a
Georg Brandled007d52013-11-24 16:09:26 +0100527:class:`bytes` or :class:`bytearray` instance (:issue:`17839`).
Nick Coghland4fdbcc2013-11-14 00:24:31 +1000528
529
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200530colorsys
531--------
532
533The number of digits in the coefficients for the RGB --- YIQ conversions have
534been expanded so that they match the FCC NTSC versions. The change in
535results should be less than 1% and may better match results found elsewhere.
536
R David Murray8e37d5d2013-04-13 14:49:48 -0400537
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000538contextlib
539----------
540
Nick Coghlan240f86d2013-10-17 23:40:57 +1000541The new :class:`contextlib.suppress` context manager helps to clarify the
542intent of code that deliberately suppresses exceptions from a single
543statement. (Contributed by Raymond Hettinger in :issue:`15806` and
544Zero Piraeus in :issue:`19266`)
545
Victor Stinner6633c392013-10-21 13:27:11 +0200546The new :func:`contextlib.redirect_stdout` context manager makes it easier
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000547for utility scripts to handle inflexible APIs that don't provide any
548options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000549other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
550this context manager is also useful for checking expected output from
551command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
552
553The :mod:`contextlib` documentation has also been updated to include a
554:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
555differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000556
557
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000558dis
559---
560
R David Murray0bce6e72014-01-07 14:30:17 -0500561Functions :func:`~dis.show_code`, :func:`~dis.dis`, :func:`~dis.distb`, and
562:func:`~dis.disassemble` now accept a keyword-only *file* argument that
563controls where they write their output.
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000564
R David Murray0bce6e72014-01-07 14:30:17 -0500565The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
566that provides object oriented access to the details of each individual bytecode
567operation.
568
569A new method, :func:`~dis.get_instructions`, provides an iterator that emits
570the Instruction stream for a given piece of Python code. Thus it is now
571possible to write a program that inspects and manipulates a bytecode
572object in ways different from those provided by the :mod:`~dis` module
573itself. For example::
574
575 >>> import dis
576 >>> for instr in dis.get_instructions(lambda x: x + 1):
577 ... print(instr.opname)
578 LOAD_FAST
579 LOAD_CONST
580 BINARY_ADD
581 RETURN_VALUE
582
583The various display tools in the :mod:`dis` module have been rewritten to use
584these new components.
585
586In addition, a new application-friendly class :class:`~dis.Bytecode` provides
587an object-oriented API for inspecting bytecode in both in human-readable form
588and for iterating over instructions. The :class:`~dis.Bytecode` constructor
589takes the same arguments that :func:`~dis.get_instruction` does (plus an
590optional *current_offset*), and the resulting object can be iterated to produce
591:class:`~dis.Instruction` objects. But it also has a :mod:`~dis.Bytecode.dis`
592method, equivalent to calling :mod:`~dis.dis` on the constructor argument, but
593returned as a multi-line string::
594
595 >>> bytecode = dis.Bytecode(lambda x: x +1, current_offset=3)
596 >>> for instr in bytecode:
597 ... print('{} ({})'.format(instr.opname, instr.opcode))
598 LOAD_FAST (124)
599 LOAD_CONST (100)
600 BINARY_ADD (23)
601 RETURN_VALUE (83)
602 >>> bytecode.dis().splitlines() # doctest: +NORMALIZE_WHITESPACE
603 [' 1 0 LOAD_FAST 0 (x)',
604 ' --> 3 LOAD_CONST 1 (1)',
605 ' 6 BINARY_ADD',
606 ' 7 RETURN_VALUE']
607
608:class:`~dis.Bytecode` also has a class method,
609:meth:`~dis.Bytecode.from_traceback`, that provides the ability to manipulate a
610traceback (that is, ``print(Bytecode.from_traceback(tb).dis())`` is equivalent
611to ``distb(tb)``).
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000612
Nick Coghlan50c48b82013-11-23 00:57:00 +1000613(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`
614and Claudiu Popa in :issue:`17916`)
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000615
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200616
R David Murray5a9d7062012-11-21 15:09:21 -0500617doctest
618-------
619
R David Murray473f45b2013-12-27 17:01:16 -0500620A new :ref:`option flag <doctest-options>`, :data:`~doctest.FAIL_FAST`, halts
621test running as soon as the first failure is detected. (Contributed by R.
622David Murray and Daniel Urban in :issue:`16522`.)
R David Murray5707d502013-06-23 14:24:13 -0400623
R David Murray473f45b2013-12-27 17:01:16 -0500624The :mod:`doctest` command line interface now uses :mod:`argparse`, and has two
625new options, ``-o`` and ``-f``. ``-o`` allows :ref:`doctest options
626<doctest-options>` to be specified on the command line, and ``-f`` is a
627shorthand for ``-o FAIL_FAST`` (to parallel the similar option supported by the
628:mod:`unittest` CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200629
R David Murray8e37d5d2013-04-13 14:49:48 -0400630
R David Murraybb17d2b2013-08-09 16:15:28 -0400631email
632-----
633
634:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
635override the default policy of the message when generating a string
636representation of it. This means that ``as_string`` can now be used in more
637circumstances, instead of having to create and use a :mod:`~email.generator` in
638order to pass formatting parameters to its ``flatten`` method.
639
640New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
641representation of the message in a fashion similar to how ``as_string``
642produces a string representation. It does not accept the *maxheaderlen*
643argument, but does accept the *unixfrom* and *policy* arguments. The
644:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
645calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
646result: a bytes object containing the fully formatted message.
647
648(Contributed by R. David Murray in :issue:`18600`.)
649
R David Murray26b80cfd2013-12-20 17:26:52 -0500650.. _whatsnew_email_contentmanager:
651
R David Murray3da240f2013-10-16 22:48:40 -0400652A pair of new subclasses of :class:`~email.message.Message` have been added,
653along with a new sub-module, :mod:`~email.contentmanager`. All documentation
654is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000655:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400656number of new methods that make extracting content from and inserting content
657into email messages much easier. See the :mod:`~email.contentmanager`
658documentation for details.
659
660These API additions complete the bulk of the work that was planned as part of
661the email6 project. The currently provisional API is scheduled to become final
662in Python 3.5 (possibly with a few minor additions in the area of error
663handling).
664
665(Contributed by R. David Murray in :issue:`18891`.)
666
R David Murraybb17d2b2013-08-09 16:15:28 -0400667
Victor Stinner854ffcb2013-06-21 00:36:30 +0200668functools
669---------
670
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000671The new :func:`~functools.partialmethod` descriptor bring partial argument
672application to descriptors, just as :func:`~functools.partial` provides
673for normal callables. The new descriptor also makes it easier to get
674arbitrary callables (including :func:`~functools.partial` instances)
675to behave like normal instance methods when included in a class definition.
676
677(Contributed by Alon Horev and Nick Coghlan in :issue:`4331`)
678
R David Murray0a102162013-12-20 15:00:54 -0500679.. _whatsnew-singledispatch:
680
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000681The new :func:`~functools.singledispatch` decorator brings support for
682single-dispatch generic functions to the Python standard library. Where
683object oriented programming focuses on grouping multiple operations on a
684common set of data into a class, a generic function focuses on grouping
685multiple implementations of an operation that allows it to work with
686*different* kinds of data.
687
688.. seealso::
689
R David Murray061efb12013-12-24 12:35:59 -0500690 :pep:`443` -- Single-dispatch generic functions
Nick Coghlanf4cb48a2013-11-03 16:41:46 +1000691 PEP written and implemented by Łukasz Langa.
Victor Stinner854ffcb2013-06-21 00:36:30 +0200692
R David Murrayd2653812013-12-27 14:06:15 -0500693A pure-python version of the :func:`~functools.partial` function is now in the
694stdlib; in CPython it is overridden by the C accelerated version, but it is
695available for other implementations to use. (Contributed by Brian Thorne in
696:issue:`12428`.)
697
Nick Coghlane8c45d62013-07-28 20:00:01 +1000698
R David Murray0e814632013-12-26 15:11:28 -0500699gc
700--
701
R David Murraya101bdb2014-01-06 16:32:05 -0500702New function :func:`~gc.get_stats` returns a list of three per-generation
703dictionaries containing the collections statistics since interpreter startup.
704(Contributed by Antoine Pitrou in :issue:`16351`.)
R David Murray0e814632013-12-26 15:11:28 -0500705
706
Christian Heimese92ef132013-10-13 00:52:43 +0200707hashlib
708-------
709
710New :func:`hashlib.pbkdf2_hmac` function.
Christian Heimese92ef132013-10-13 00:52:43 +0200711(Contributed by Christian Heimes in :issue:`18582`)
712
713
Ezio Melotti250a06c2013-11-25 06:18:47 +0200714html
715----
716
717Added a new :func:`html.unescape` function that converts HTML5 character
718references to the corresponding Unicode characters.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200719(Contributed by Ezio Melotti in :issue:`2927`)
720
721Added a new *convert_charrefs* keyword argument to
722:class:`~html.parser.HTMLParser` that, when ``True``, automatically converts
723all character references. For backward-compatibility, its value defaults
724to ``False``, but it will change to ``True`` in future versions, so you
725are invited to set it explicitly and update your code to use this new feature.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200726(Contributed by Ezio Melotti in :issue:`13633`)
727
728The *strict* argument of :class:`~html.parser.HTMLParser` is now deprecated.
Ezio Melotti250a06c2013-11-25 06:18:47 +0200729(Contributed by Ezio Melotti in :issue:`15114`)
730
731
R David Murraya475a8d2014-01-03 13:03:00 -0500732http
733----
734
735:meth:`~http.server.BaseHTTPRequestHandler.send_error` now accepts an
736optional additional *exaplain* parameter which can be used to provide an
737extended error description, overriding the hardcoded default if there is one.
738This extended error description will be formatted using the
739:attr:`~http.server.HTTP.error_message_format` attribute and sent as the body
740of the error response. (Contributed by Karl Cow in :issue:`12921`.)
741
742
743
R David Murrayd2653812013-12-27 14:06:15 -0500744importlib
745---------
746
747The :class:`~importlib.abc.InspectLoader` ABC defines a new method,
748:meth:`~importlib.abc.InspectLoader.source_to_code` that accepts source
749data and a path and returns a code object. The default implementation
750is equivalent to ``compile(data, path, 'exec', dont_inherit=True)``.
751(Contributed by Eric Snow and Brett Cannon in :issue:`15627`.)
752
753
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200754inspect
755-------
756
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000757
Nick Coghlan367df122013-10-27 01:57:34 +1000758The inspect module now offers a basic :ref:`command line interface
759<inspect-module-cli>` to quickly display source code and other
760information for modules, classes and functions. (Contributed by Claudiu Popa
761and Nick Coghlan in :issue:`18626`)
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000762
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200763:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
764created by :func:`functools.wraps` (and any other API that sets the
Nick Coghlan367df122013-10-27 01:57:34 +1000765``__wrapped__`` attribute on a wrapper function). (Contributed by
766Daniel Urban, Aaron Iles and Nick Coghlan in :issue:`13266`)
767
768As part of the implementation of the new :mod:`enum` module, the
769:mod:`inspect` module now has substantially better support for custom
770``__dir__`` methods and dynamic class attributes provided through
771metaclasses (Contributed by Ethan Furman in :issue:`18929` and
772:issue:`19030`)
773
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200774
R David Murray9cf617b2014-01-04 18:55:01 -0500775logging
776-------
777
778The :class:`~logging.handlers.TimedRotatingFileHandler` has a new *atTime*
779parameter that can be used to specify the time of day when rollover should
780happen. (Contributed by Ronald Oussoren in :issue:`9556`.)
781
782
R David Murray8f7664a2013-12-22 20:40:11 -0500783.. _whatsnew-marshal-3:
784
785marshal
786-------
787
788The default :mod:`marshal` version has been bumped to 3. The code implementing
789the new version restores the Python2 behavior of recording only one copy of
790interned strings and preserving the interning on deserialization, and extends
791this "one copy" ability to any object type (including handling recursive
792references). This reduces both the size of ``.pyc`` files and the amount of
793memory a module occupies in memory when it is loaded from a ``.pyc`` (or
794``.pyo``) file. (Contributed by Kristján Valur Jónsson in :issue:`16475`.)
795
796
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200797mmap
798----
799
800mmap objects can now be weakref'ed.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200801(Contributed by Valerie Lambert in :issue:`4885`.)
802
803
R David Murray33ef1ae2013-12-31 16:04:50 -0500804mock
805----
806
807:mod:`~unittest.mock` objects now inspect their specification signatures when
808matching calls, which means an argument can now be matched by either position
809or name, instead of only by position. (Contributed by Antoine Pitrou in
810:issue:`17015`.)
811
R David Murray57fcf762014-01-03 23:31:54 -0500812:func:`~mock.mock_open` objects now have ``readline`` and ``readlines``
813methods. (Contributed by Toshio Kuratomi in :issue:`17467`.)
814
R David Murray33ef1ae2013-12-31 16:04:50 -0500815
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100816multiprocessing
817---------------
818
R David Murrayac186222013-12-20 17:23:57 -0500819.. _whatsnew-multiprocessing-no-fork:
820
821On Unix, two new :ref:`start methods <multiprocessing-start-methods>`
822(``spawn`` and ``forkserver``) have been added for starting processes using
823:mod:`multiprocessing`. These make the mixing of processes with threads more
824robust, and the ``spawn`` method matches the semantics that multiprocessing has
825always used on Windows. (Contributed by Richard Oudkerk in :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100826
827Also, except when using the old *fork* start method, child processes
R David Murrayac186222013-12-20 17:23:57 -0500828will no longer inherit unneeded handles/file descriptors from their parents
829(part of :issue:`8713`).
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100830
Nick Coghlan9a767352013-12-17 22:17:26 +1000831:mod:`multiprocessing` now relies on :mod:`runpy` (which implements the
832``-m`` switch) to initialise ``__main__`` appropriately in child processes
833when using the ``spawn`` or ``forkserver`` start methods. This resolves some
834edge cases where combining multiprocessing, the ``-m`` command line switch
835and explicit relative imports could cause obscure failures in child
836processes. (Contributed by Nick Coghlan in :issue:`19946`)
837
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100838
R David Murray98358272014-01-05 20:52:06 -0500839operator
840--------
841
842There is now a pure-python version of the :mod:`operator` module available for
843reference and for use by alternate implementations of Python. (Contributed by
844Zachary Ware in :issue:`16694`.)
845
846
Victor Stinnerdaf45552013-08-28 00:53:59 +0200847os
848--
849
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200850New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200851descriptors or a Windows handle:
852
853* :func:`os.get_inheritable`, :func:`os.set_inheritable`
854* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
855
856
R David Murray78d692f2013-10-10 17:23:26 -0400857pdb
858---
859
860The ``print`` command has been removed from :mod:`pdb`, restoring access to the
861``print`` function.
862
863Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
864entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
865mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
866prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
867command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
868``print`` function, making it inaccessible at the ``pdb`` prompt.
869
870(Contributed by Connor Osborn in :issue:`18764`.)
871
872
R David Murray809487e2013-12-22 20:49:40 -0500873.. _whatsnew-protocol-4:
874
R David Murray5ea95242013-12-24 15:59:57 -0500875pickle
R David Murray809487e2013-12-22 20:49:40 -0500876------
877
878protocol 4
879
880:mod:`pickle` now supports (but does not use by default) a new pickle protocol,
881protocol 4. This new protocol addresses a number of issues that were present
882in previous protocols, such as the serialization of nested classes, very large
883strings and containers, or classes whose :meth:`__new__` method takes
884keyword-only arguments. It also provides some efficiency improvements.
885
886.. seealso::
887
R David Murray061efb12013-12-24 12:35:59 -0500888 :pep:`3154` -- Pickle protocol 4
R David Murray809487e2013-12-22 20:49:40 -0500889 PEP written by Antoine Pitrou and implemented by Alexandre Vassalotti.
890
891
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200892poplib
893------
894
R David Murray473f45b2013-12-27 17:01:16 -0500895Two new methods have been added to :mod:`poplib`: :meth:`~poplib.POP3.capa`,
896which returns the list of capabilities advertised by the POP server, and
897:meth:`~poplib.POP3.stls`, which switches a clear-text POP3 session into an
898encrypted POP3 session if the POP server supports it. (Contributed by Lorenzo
899Catucci in :issue:`4473`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200900
901
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300902pprint
903------
904
Christian Heimese1bfd3e2013-10-21 12:32:21 +0200905The :mod:`pprint` module now supports *compact* mode for formatting long
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300906sequences (:issue:`19132`).
907
R David Murrayb231b2b2014-01-04 17:11:23 -0500908Long strings are now wrapped using Python's normal line continuation
909syntax (Contributed by Antoine Pitrou in :issue:`17150`.)
910
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300911
R David Murray6e390152013-12-24 22:28:04 -0500912pty
913---
914
915:func:`pty.spawn` now returns the status value from :func:`os.waitpid` on
916the child process, instead of ``None``. (Contributed by Gregory P. Smith.)
917
918
Nick Coghlan367df122013-10-27 01:57:34 +1000919pydoc
920-----
921
922While significant changes have not been made to :mod:`pydoc` directly,
923its handling of custom ``__dir__`` methods and various descriptor
924behaviours has been improved substantially by the underlying changes in
925the :mod:`inspect` module.
926
927
Serhiy Storchaka32eddc12013-11-23 23:20:30 +0200928re
929--
930
931Added :func:`re.fullmatch` function and :meth:`regex.fullmatch` method,
932which anchor the pattern at both ends of the string to match.
933(Contributed by Matthew Barnett in :issue:`16203`.)
934
Ezio Melottidd7e2912013-11-25 23:20:20 +0200935The repr of :ref:`regex objects <re-objects>` now includes the pattern
936and the flags; the repr of :ref:`match objects <match-objects>` now
937includes the start, end, and the part of the string that matched.
Ezio Melottidd7e2912013-11-25 23:20:20 +0200938(Contributed by Serhiy Storchaka in :issue:`13592` and :issue:`17087`.)
939
940
Christian Heimesb7bd5df2013-10-22 11:21:54 +0200941resource
942--------
943
944New :func:`resource.prlimit` function and Linux specific constants.
945(Contributed by Christian Heimes in :issue:`16595` and :issue:`19324`.)
946
R David Murray575fb312013-12-25 23:21:03 -0500947
R David Murray2bc930f2013-12-31 11:17:21 -0500948select
949------
950
951:class:`~select.epoll` objects now support the context management protocol.
952When used in a :keyword:`with` statement, the :meth:`~select.epoll.close`
953method will be called automatically at the end of the block. (Contributed
954by Serhiy Storchaka in :issue:`16488`.)
955
956
R David Murray575fb312013-12-25 23:21:03 -0500957shelve
958------
959
960:class:`~shelve.Shelf` instances may now be used in :keyword:`with` statements,
961and will be automatically closed at the end of the :keyword:`with` block.
962(Contributed by Filip Gruszczyński in :issue:`13896`.)
963
964
R David Murray8e37d5d2013-04-13 14:49:48 -0400965smtplib
966-------
967
R David Murray8a345962013-04-14 06:46:35 -0400968:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400969both socket level errors and SMTP protocol level errors to be caught in one
970try/except statement by code that only cares whether or not an error occurred.
971(:issue:`2118`).
972
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200973
Victor Stinnerdaf45552013-08-28 00:53:59 +0200974socket
975------
976
R David Murray33ef1ae2013-12-31 16:04:50 -0500977The socket module now supports the :data:`~socket.CAN_BCM` protocol on
978platforms that support it. (Contributed by Brian Thorne in :issue:`15359`.)
979
Georg Brandl5642ff92013-09-15 10:37:57 +0200980Socket objects have new methods to get or set their :ref:`inheritable flag
R David Murray33ef1ae2013-12-31 16:04:50 -0500981<fd_inheritance>`, :meth:`~socket.socket.get_inheritable` and
982:meth:`~socket.socket.set_inheritable`.
Victor Stinnerdaf45552013-08-28 00:53:59 +0200983
R David Murray33ef1ae2013-12-31 16:04:50 -0500984The ``socket.AF_*`` and ``socket.SOCK_*`` constants are now enumeration values
985using the new :mod:`enum` module. This allows meaningful names to be printed
986during debugging, instead of integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200987
R David Murray8b2d6822013-12-31 15:06:05 -0500988
R David Murray9025f1c2014-01-02 13:44:18 -0500989sqlite3
990-------
991
992A new boolean parameter, *uri*, to the :func:`~sqlite3.connect` function can
993be used to indicate that the *database* parameter is a ``uri`` (see
994the `SQLite URI documentation <http://www.sqlite.org/uri.html>`_).
995(Contributed by poq in :issue:`13773`.)
996
997
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200998ssl
999---
1000
R David Murray748bad22013-12-20 17:08:39 -05001001.. _whatsnew-tls-11-12:
Christian Heimes24cd4cf2013-06-22 19:31:58 +02001002
R David Murray748bad22013-12-20 17:08:39 -05001003:data:`~ssl.PROTOCOL_TLSv1_1` and :data:`~ssl.PROTOCOL_TLSv1_2` (TLSv1.1 and
1004TLSv1.2 support) have been added; support for these protocols is only available if
1005Python is linked with OpenSSL 1.0.1 or later. (Contributed by Michele Orrù and
1006Antoine Pitrou in :issue:`16692`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001007
R David Murray748bad22013-12-20 17:08:39 -05001008New diagnostic functions :func:`~ssl.get_default_verify_paths`,
1009:meth:`~ssl.SSLContext.cert_store_stats` and
1010:meth:`~ssl.SSLContext.get_ca_certs` (Contributed by Christian Heimes
1011in :issue:`18143` and :issue:`18147`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +02001012
R David Murray748bad22013-12-20 17:08:39 -05001013Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
1014cert store. (Contributed by Christian Heimes in :issue:`17134`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001015
1016Support for server-side SNI using the new
1017:meth:`ssl.SSLContext.set_servername_callback` method.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001018(Contributed by Daniel Black in :issue:`8109`.)
1019
1020
Antoine Pitroud6cbd342013-08-12 20:48:15 +02001021stat
1022----
1023
1024The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
1025implementation is required as most of the values aren't standardized and
1026platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
1027
1028The module supports new file types: door, event port and whiteout.
1029
1030
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001031struct
1032------
1033
R David Murray98358272014-01-05 20:52:06 -05001034:mod:`struct` now supports the streamed unpacking of a buffer containing
1035repeated instances of a given format of data. Both a module level
1036:mod:`~struct.iter_unpack` function and a :meth:`struct.Struct.iter_unpack`
1037method on compiled formats have been added. (Contributed by Antoine Pitrou in
1038:issue:`17804`.)
1039
1040
1041subprocess
1042----------
1043
1044:func:`~subprocess.check_output` now accepts an *input* argument that can
1045be used to provide the contents of ``stdin`` for the command that is run.
1046(Contributed by Zack Weinberg in :issue:`16624`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001047
1048
Serhiy Storchakae06a8962013-09-04 00:43:03 +03001049sunau
1050-----
1051
1052The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
1053plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
1054
Serhiy Storchaka34d20132013-09-05 17:01:53 +03001055:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
1056
Serhiy Storchakae06a8962013-09-04 00:43:03 +03001057
R David Murrayd17aba72013-12-24 14:46:23 -05001058sys
1059---
1060
1061New function :func:`sys.getallocatedblocks` returns the current number of
1062blocks allocated by the interpreter (in CPython with the default
1063``--with-pymalloc`` setting, this is allocations made through the
1064:c:func:`PyObject_Malloc` API). This can be useful for tracking memory leaks,
1065especially if automated via a test suite. (Contributed by Antoine Pitrou
1066in :issue:`13390`.)
1067
1068
Andrew Kuchling173a1572013-09-15 18:15:56 -04001069traceback
1070---------
1071
1072A new :func:`traceback.clear_frames` function takes a traceback object
1073and clears the local variables in all of the frames it references,
1074reducing the amount of memory consumed (:issue:`1565525`).
1075
1076
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001077urllib
1078------
1079
R David Murray473f45b2013-12-27 17:01:16 -05001080:mod:`urllib.request` now supports ``data:`` URLs via the
1081:class:`~urllib.request.DataHandler` class. (Contributed by Mathias Panzenböck
1082in :issue:`16423`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001083
1084
1085unittest
1086--------
1087
R David Murray57fcf762014-01-03 23:31:54 -05001088The :class:`~unittest.TestCase` class has a new method,
1089:meth:`~unittest.TestCase.subTest`, that produces a context manager whose
1090:keyword:`with` block becomes a "sub-test". This context manager allows a test
1091method to dynamically generate subtests by, say, calling the ``subTest``
1092context manager inside a loop. A single test method can thereby produce an
1093indefinite number of separately-identified and separately-counted tests, all of
1094which will run even if one or more of them fail. For example::
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001095
R David Murray57fcf762014-01-03 23:31:54 -05001096 class NumbersTest(unittest.TestCase):
1097 def test_even(self):
1098 for i in range(6):
1099 with self.subTest(i=1):
1100 self.assertEqual(i % 2, 0)
1101
1102will result in six subtests, each identified in the unittest verbose output
1103with a label consisting of the variable name ``i`` and a particular value for
1104that variable (``i=0``, ``i=1``, etc). See :ref:`subtests` for the full
1105version of this example. (Contributed by Antoine Pitrou in :issue:`16997`.)
1106
1107:func:`unittest.main` now accepts an iterable of test names for
R David Murray9025f1c2014-01-02 13:44:18 -05001108*defaultTest*, where previously it only accepted a single test name as a
1109string. (Contributed by Jyrki Pulliainen in :issue:`15132`.)
1110
R David Murray42fa1102014-01-03 13:03:36 -05001111If :class:`~unittest.SkipTest` is raised during test discovery (that is, at the
1112module level in the test file), it is now reported as a skip instead of an
1113error. (Contributed by Zach Ware in :issue:`16935`.)
1114
R David Murraydb085f52014-01-03 15:46:24 -05001115:meth:`~unittest.TestLoader.discover` now sorts the discovered files to provide
1116consistent test ordering. (Contributed by Martin Melin and Jeff Ramnani in
1117:issue:`16709`.)
1118
R David Murray8e37d5d2013-04-13 14:49:48 -04001119
R David Murray575fb312013-12-25 23:21:03 -05001120venv
1121----
1122
1123:mod:`venv` now includes activation scripts for the ``csh`` and ``fish``
1124shells (Contributed by Andrew Svetlov in :issue:`15417`.)
1125
1126
R David Murray671cd322013-04-10 12:31:43 -04001127wave
1128----
1129
1130The :meth:`~wave.getparams` method now returns a namedtuple rather than a
1131plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
1132
R David Murrayc91d5ee2013-07-31 13:46:08 -04001133:meth:`wave.open` now supports the context manager protocol. (Contributed
1134by Claudiu Popa in :issue:`17616`.)
1135
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001136
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001137weakref
1138-------
1139
1140New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +10001141methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001142
Nick Coghlanbe57ab82013-09-22 21:26:30 +10001143New :class:`~weakref.finalize` class makes it possible to register a callback
1144to be invoked when an object is garbage collected, without needing to
1145carefully manage the lifecycle of the weak reference itself. (Contributed by
1146Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001147
R David Murraya101bdb2014-01-06 16:32:05 -05001148The callback, if any, associated with a :class:`~weakref.ref` is now
1149exposed via the :attr:`~weakref.ref.__callback__` attribute. (Contributed
1150by Mark Dickinson in :issue:`17643`.)
1151
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001152
1153xml.etree
1154---------
1155
R David Murray410d3202014-01-04 23:52:50 -05001156A new parser, :class:`~xml.etree.ElementTree.XMLPullParser`, allows a
1157non-blocking applications to parse XML documents. An example can be
1158seen at :ref:`elementtree-pull-parsing`. (Contributed by Antoine
1159Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +02001160
R David Murray575fb312013-12-25 23:21:03 -05001161The :mod:`xml.etree.ElementTree` :func:`~xml.etree.ElementTree.tostring` and
1162:func:`~xml.etree.ElementTree.tostringlist` functions, and the
1163:class:`~xml.etree.ElementTree.ElementTree`
1164:meth:`~xml.etree.ElementTree.ElementTree.write` method, now have a
1165*short_empty_elements* :ref:`keyword-only parameter <keyword-only_parameter>`
1166providing control over whether elements with no content are written in
1167abbreviated (``<tag />``) or expanded (``<tag></tag>``) form. (Contributed by
1168Ariel Poliak and Serhiy Storchaka in :issue:`14377`.)
1169
Christian Tismer59202e52013-10-21 03:59:23 +02001170
1171zipfile.PyZipfile
1172-----------------
1173
1174Add a filter function to ignore some packages (tests for instance),
1175:meth:`~zipfile.PyZipFile.writepy`.
Christian Tismer59202e52013-10-21 03:59:23 +02001176(Contributed by Christian Tismer in :issue:`19274`.)
1177
1178
R David Murraye6082552014-01-03 16:15:45 -05001179
Nick Coghlan367df122013-10-27 01:57:34 +10001180CPython Implementation Changes
1181==============================
1182
1183
R David Murrayc16dfe12013-12-21 12:32:10 -05001184.. _whatsnew-pep-445:
Nick Coghlan367df122013-10-27 01:57:34 +10001185
R David Murraye7cf6782013-12-24 14:51:25 -05001186PEP 445: Customization of CPython Memory Allocators
Nick Coghlan367df122013-10-27 01:57:34 +10001187---------------------------------------------------
1188
1189:pep:`445` adds new C level interfaces to customize memory allocation in
1190the CPython interpreter.
1191
1192.. seealso::
1193
R David Murray061efb12013-12-24 12:35:59 -05001194 :pep:`445` -- Add new APIs to customize Python memory allocators
Nick Coghlan367df122013-10-27 01:57:34 +10001195 PEP written and implemented by Victor Stinner.
1196
1197
R David Murrayc16dfe12013-12-21 12:32:10 -05001198.. _whatsnew-pep-442:
Nick Coghlan367df122013-10-27 01:57:34 +10001199
R David Murraye7cf6782013-12-24 14:51:25 -05001200PEP 442: Safe Object Finalization
Nick Coghlan367df122013-10-27 01:57:34 +10001201---------------------------------
1202
1203:pep:`442` removes the current limitations and quirks of object finalization
1204in CPython. With it, objects with :meth:`__del__` methods, as well as
1205generators with :keyword:`finally` clauses, can be finalized when they are
1206part of a reference cycle.
1207
1208As part of this change, module globals are no longer forcibly set to
1209:const:`None` during interpreter shutdown in most cases, instead relying
R David Murrayca794612013-12-22 14:05:11 -05001210on the normal operation of the cyclic garbage collector. This avoids a
1211whole class of interpreter-shutdown-time errors, usually involving
1212``__del__`` methods, that have plagued Python since the cyclic GC
1213was first introduced.
Nick Coghlan367df122013-10-27 01:57:34 +10001214
1215.. seealso::
1216
R David Murray061efb12013-12-24 12:35:59 -05001217 :pep:`442` -- Safe object finalization
Nick Coghlan367df122013-10-27 01:57:34 +10001218 PEP written and implemented by Antoine Pitrou.
1219
1220
R David Murrayc16dfe12013-12-21 12:32:10 -05001221.. _whatsnew-pep-456:
1222
1223PEP 456: Secure and Interchangeable Hash Algorithm
1224--------------------------------------------------
1225
1226:pep:`456` follows up on earlier security fix work done on Python's hash
1227algorithm to address certain DOS attacks to which public facing APIs backed by
1228dictionary lookups may be subject. (See :issue:`14621` for the start of the
1229current round of improvements.) The PEP unifies CPython's hash code to make it
1230easier for a packager to substitute a different hash algorithm, and switches
1231Python's default implementation to a SipHash implementation on platforms that
1232have a 64 bit data type. Any performance differences in comparison with the
1233older FNV algorithm are trivial.
1234
1235The PEP adds additional fields to the :func:`sys.hash_info` struct sequence to
1236describe the hash algorithm in use by the currently executing binary. Otherwise,
1237the PEP does not alter any existing CPython APIs.
1238
1239
R David Murray6dd18302013-12-24 12:23:56 -05001240.. _whatsnew-pep-436:
1241
1242PEP 436: Argument Clinic
1243------------------------
1244
1245"Argument Clinic" (:pep:`436`) is now part of the CPython build process
1246and can be used to simplify the process of defining and maintaining
1247accurate signatures for builtins and standard library extension modules
1248implemented in C.
1249
1250.. note::
1251 The Argument Clinic PEP is not fully up to date with the state of the
1252 implementation. This has been deemed acceptable by the release manager
1253 and core development team in this case, as Argument Clinic will not
1254 be made available as a public API for third party use in Python 3.4.
1255
1256.. seealso::
1257
R David Murray061efb12013-12-24 12:35:59 -05001258 :pep:`436` -- The Argument Clinic DSL
R David Murray6dd18302013-12-24 12:23:56 -05001259 PEP written and implemented by Larry Hastings.
1260
1261
R David Murraye7cf6782013-12-24 14:51:25 -05001262Other Build and C API Changes
Nick Coghlan367df122013-10-27 01:57:34 +10001263-----------------------------
Georg Brandlb80f5112012-09-30 09:11:58 +02001264
Nick Coghlan7d270ee2013-10-17 22:35:35 +10001265* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
1266 allows applications embedding the CPython interpreter to reliably force
1267 a particular encoding and error handler for the standard streams
1268 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +02001269
Nick Coghlan0acceb72013-10-20 13:22:21 +10001270* Most Python C APIs that don't mutate string arguments are now correctly
1271 marked as accepting ``const char *`` rather than ``char *`` (Contributed
1272 by Serhiy Storchaka in :issue:`1772673`).
1273
R David Murrayd91ba202013-12-24 12:13:44 -05001274* New shell version of ``python-config``; can be used even when a python
1275 interpreter is not available (for example, in cross compilation scenarios).
1276
Georg Brandlb80f5112012-09-30 09:11:58 +02001277
R David Murraye6082552014-01-03 16:15:45 -05001278
R David Murraye7cf6782013-12-24 14:51:25 -05001279Other Improvements
R David Murraybcaaecf2013-12-23 21:23:36 -05001280==================
1281
1282* Tab-completion is now enabled by default in the interactive interpreter.
1283 (Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
1284
1285* Invoking the Python interpreter with ``--version`` now outputs the version to
1286 standard output instead of standard error (:issue:`18338`). Similar changes
1287 were made to :mod:`argparse` (:issue:`18920`) and other modules that have
1288 script-like invocation capabilities (:issue:`18922`).
1289
R David Murray72420ff2013-12-24 10:46:44 -05001290* The CPython Windows installer now adds ``.py`` to the :envvar:`PATHEXT`
1291 variable when extensions are registered, allowing users to run a python
1292 script at the windows command prompt by just typing its name without the
1293 ``.py`` extension. (Contributed by Paul Moore in :issue:`18569`.)
1294
R David Murrayd17aba72013-12-24 14:46:23 -05001295* A new ``make`` target `coverage-report
1296 <http://docs.python.org/devguide/coverage.html#measuring-coverage-of-c-code-with-gcov-and-lcov>`_
1297 will build python, run the test suite, and generate an HTML coverage report
1298 for the C codebase using ``gcov`` and `lcov
1299 <http://ltp.sourceforge.net/coverage/lcov.php>`_.
1300
1301* The ``-R`` option to the :ref:`python regression test suite <regrtest>` now
1302 also checks for memory allocation leaks, using
1303 :func:`sys.getallocatedblocks()`. (Contributed by Antoine Pitrou in
1304 :issue:`13390`).
1305
R David Murraybcaaecf2013-12-23 21:23:36 -05001306
R David Murraye6082552014-01-03 16:15:45 -05001307
R David Murrayd74d09a2013-12-24 15:33:02 -05001308Significant Optimizations
1309=========================
R David Murraybcaaecf2013-12-23 21:23:36 -05001310
R David Murray4908f4a2014-01-04 18:07:20 -05001311* The UTF-32 decoder is now 3x to 4x faster. (Contributed by Serhiy Storchaka
1312 in :issue:`14625`.)
R David Murraybcaaecf2013-12-23 21:23:36 -05001313
1314* The cost of hash collisions for sets is now reduced. Each hash table
1315 probe now checks a series of consecutive, adjacent key/hash pairs before
1316 continuing to make random probes through the hash table. This exploits
1317 cache locality to make collision resolution less expensive.
R David Murraybcaaecf2013-12-23 21:23:36 -05001318 The collision resolution scheme can be described as a hybrid of linear
1319 probing and open addressing. The number of additional linear probes
1320 defaults to nine. This can be changed at compile-time by defining
1321 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
R David Murray59171722014-01-03 15:52:22 -05001322 linear probing entirely. (Contributed by Raymond Hettinger in
1323 :issue:`18771`.)
R David Murraybcaaecf2013-12-23 21:23:36 -05001324
1325* The interpreter starts about 30% faster. A couple of measures lead to the
1326 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
1327 :mod:`collections` and :mod:`locale` modules and their dependencies are no
1328 longer imported by default. The marshal module has been improved to load
R David Murray59171722014-01-03 15:52:22 -05001329 compiled Python code faster. (Contributed by Antoine Pitrou, Christian
1330 Heimes and Victor Stinner in :issue:`19219`, :issue:`19218`, :issue:`19209`,
1331 :issue:`19205` and :issue:`9548`)
R David Murraybcaaecf2013-12-23 21:23:36 -05001332
R David Murray6e390152013-12-24 22:28:04 -05001333* :class:`bz2.BZ2File` is now as fast or faster than the Python2 version for
1334 most cases. :class:`lzma.LZMAFile` has also been optimized. (Contributed by
1335 Serhiy Storchaka and Nadeem Vawda in :issue:`16034`.)
1336
R David Murray8b2d6822013-12-31 15:06:05 -05001337* :func:`random.getrandbits` is 20%-40% faster for small integers (the most
1338 common use case). (Contributed by Serhiy Storchaka in :issue:`16674`).
1339
R David Murrayb231b2b2014-01-04 17:11:23 -05001340* By taking advantage of the new storage format for strings, pickling of
1341 strings is now significantly faster. (Contributed by Victor Stinner and
1342 Antoine Pitrou in :issue:`15596`.)
1343
R David Murraybcaaecf2013-12-23 21:23:36 -05001344
R David Murraye6082552014-01-03 16:15:45 -05001345
Georg Brandlb80f5112012-09-30 09:11:58 +02001346Deprecated
1347==========
1348
R David Murrayd74d09a2013-12-24 15:33:02 -05001349This section covers various APIs and other features that have been deprecated
1350in Python 3.4, and will be removed in Python 3.5 or later. In most (but not
1351all) cases, using the deprecated APIs will produce a :exc:`DeprecationWarning`
1352when the interpreter is run with deprecation warnings enabled (for example, by
1353using ``-Wd``).
1354
Georg Brandlb80f5112012-09-30 09:11:58 +02001355
R David Murraye7cf6782013-12-24 14:51:25 -05001356Deprecated Python Modules, Functions and Methods
Georg Brandlb80f5112012-09-30 09:11:58 +02001357------------------------------------------------
1358
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -04001359* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -04001360 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
1361 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +02001362
Brett Cannon82b3d6a2013-06-14 22:37:11 -04001363* :func:`importlib.util.module_for_loader` is pending deprecation. Using
1364 :func:`importlib.util.module_to_load` and
1365 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
1366 to more easily customize module loading.
1367
Brett Cannone4f41de2013-06-16 13:13:40 -04001368* The :mod:`imp` module is pending deprecation. To keep compatibility with
1369 Python 2/3 code bases, the module's removal is currently not scheduled.
1370
Brett Cannon1448ecf2013-10-04 11:38:59 -04001371* The :mod:`formatter` module is pending deprecation and is slated for removal
1372 in Python 3.6.
1373
Christian Heimes634919a2013-11-20 17:23:06 +01001374* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
1375 require an explicit digest name or constructor as *digestmod* argument.
1376
R David Murray9025f1c2014-01-02 13:44:18 -05001377* The internal ``Netrc`` class in the :mod:`ftplib` module has been documented
1378 as deprecated in its docstring for quite some time. It now emits a
1379 :exc:`DeprecationWarning` and will be removed completely in Python 3.5.
1380
Georg Brandlb80f5112012-09-30 09:11:58 +02001381
R David Murraye7cf6782013-12-24 14:51:25 -05001382Deprecated Functions and Types in the C API
Georg Brandlb80f5112012-09-30 09:11:58 +02001383-------------------------------------------
1384
R David Murrayd74d09a2013-12-24 15:33:02 -05001385XXX: None so far
Georg Brandlb80f5112012-09-30 09:11:58 +02001386
1387
R David Murraye7cf6782013-12-24 14:51:25 -05001388Deprecated Features
Georg Brandlb80f5112012-09-30 09:11:58 +02001389-------------------
1390
R David Murray5ea95242013-12-24 15:59:57 -05001391* Running :ref:`idle` with the ``-n`` flag (no subprocess) is deprecated.
1392 However, the feature will not be removed until :issue:`18823` is resolved.
1393
Antoine Pitrou3b2f0f02013-10-25 21:39:26 +02001394* The site module adding a "site-python" directory to sys.path, if it
1395 exists, is deprecated (:issue:`19375`).
Georg Brandlb80f5112012-09-30 09:11:58 +02001396
1397
R David Murray59171722014-01-03 15:52:22 -05001398
R David Murray72420ff2013-12-24 10:46:44 -05001399Removed
1400=======
1401
R David Murray59171722014-01-03 15:52:22 -05001402
1403Operating Systems No Longer Supported
1404-------------------------------------
1405
1406Support for the following operating systems has been removed from the source
1407and build tools:
1408
1409* OS/2 (:issue:`16135`).
1410* Windows 2000 (changeset e52df05b496a).
1411* VMS (:issue:`16136`).
1412
1413
1414API and Feature Removals
1415------------------------
1416
R David Murrayd2653812013-12-27 14:06:15 -05001417The following obsolete and previously deprecated APIs and features have been
R David Murray59171722014-01-03 15:52:22 -05001418removed:
R David Murray076dead2013-12-24 14:59:50 -05001419
R David Murray72420ff2013-12-24 10:46:44 -05001420* The unmaintained ``Misc/TextMate`` and ``Misc/vim`` directories have been
R David Murrayd91ba202013-12-24 12:13:44 -05001421 removed (see the `devguide <http://docs.python.org/devguide>`_
R David Murray00569362014-01-03 13:04:25 -05001422 for suggestions on what to use instead).
R David Murray72420ff2013-12-24 10:46:44 -05001423
R David Murrayd17aba72013-12-24 14:46:23 -05001424* The ``SO`` makefile macro is removed (it was replaced by the
1425 ``SHLIB_SUFFIX`` and ``EXT_SUFFIX`` macros) (:issue:`16754`).
1426
R David Murrayd74d09a2013-12-24 15:33:02 -05001427* The ``PyThreadState.tick_counter`` field has been removed; its value has
1428 been meaningless since Python 3.2, when the "new GIL" was introduced.
1429
R David Murrayd2653812013-12-27 14:06:15 -05001430* ``PyLoader`` and ``PyPycLoader`` have been removed from :mod:`importlib`.
1431 (Contributed by Taras Lyapun in :issue:`15641`.)
1432
R David Murraya2924ca2014-01-03 14:06:01 -05001433* The *strict* argument to :class:`~http.client.HTTPConnection` and
1434 :class:`~http.client.HTTPSConnection` has been removed. HTTP 0.9-style
1435 "Simple Responses" are no longer supported.
R David Murray00569362014-01-03 13:04:25 -05001436
R David Murraydb085f52014-01-03 15:46:24 -05001437* The deprecated :mod:`urllib.request.Request` getter and setter methods
1438 ``add_data``, ``has_data``, ``get_data``, ``get_type``, ``get_host``,
1439 ``get_selector``, ``set_proxy``, ``get_origin_req_host``, and
1440 ``is_unverifiable`` have been removed (use direct attribute access instead).
1441
R David Murray244ad602014-01-04 21:17:52 -05001442* Support for loading the deprecated ``TYPE_INT64`` has been removed from
1443 :mod:`marshal`. (Contributed by Dan Riti in :issue:`15480`.)
1444
R David Murray72420ff2013-12-24 10:46:44 -05001445
R David Murray98358272014-01-05 20:52:06 -05001446Code Cleanups
1447-------------
1448
1449* The unused and undocumented internal ``Scanner`` class has been removed from
1450 the :mod:`pydoc` module.
1451
1452
R David Murraye6082552014-01-03 16:15:45 -05001453
Benjamin Peterson88f3b232012-10-04 12:45:10 -04001454Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +02001455=====================
1456
1457This section lists previously described changes and other bugfixes
1458that may require changes to your code.
1459
R David Murrayd74d09a2013-12-24 15:33:02 -05001460Changes in the Python API
1461-------------------------
1462
Brett Cannon777622b2013-04-09 17:03:10 -04001463* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
1464 exception or return a default value instead of raising
1465 :exc:`NotImplementedError` blindly. This will only affect code calling
1466 :func:`super` and falling through all the way to the ABCs. For compatibility,
1467 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001468
1469* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
1470 attributes to ``None`` by default. To determine if these attributes were set
1471 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001472 ``getattr(module, '__loader__', None) is not None``.
1473
1474* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
1475 ``__package__`` unconditionally to properly support reloading. If this is not
1476 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -04001477 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -04001478
1479* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
1480 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
1481
Brett Cannon1448ecf2013-10-04 11:38:59 -04001482* Frozen packages no longer set ``__path__`` to a list containing the package
1483 name but an empty list instead. Determing if a module is a package should be
1484 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -04001485
Brett Cannon33915eb2013-06-14 18:33:00 -04001486* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
1487 it would write to is a symlink or a non-regular file. This is to act as a
1488 warning that import will overwrite those files with a regular file regardless
1489 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -04001490
1491* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
1492 :exc:`ImportError` when the source code being loaded triggers a
1493 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
1494 meant to be raised only when source code cannot be found but it should, it was
1495 felt to be over-reaching/overloading of that meaning when the source code is
1496 found but improperly structured. If you were catching ImportError before and
1497 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +02001498 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +10001499
1500* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
Nick Coghlan367df122013-10-27 01:57:34 +10001501 set the ``__wrapped__`` attribute to the function being wrapper, even if
1502 that function also had its ``__wrapped__`` attribute set. This means
1503 ``__wrapped__`` attributes now correctly link a stack of decorated
1504 functions rather than every ``__wrapped__`` attribute in the chain
1505 referring to the innermost function. Introspection libraries that
1506 assumed the previous behaviour was intentional can use
1507 :func:`inspect.unwrap` to access the first function in the chain that has
1508 no ``__wrapped__`` attribute.
Victor Stinner2fe9bac2013-10-10 16:18:20 +02001509
Georg Brandl0f5bff22013-10-19 17:46:38 +02001510* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -04001511 directory to objects in :data:`sys.path_hooks` for the empty string. This
1512 results in :data:`sys.path_importer_cache` never containing ``''``, thus
1513 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
1514 will not find all keys. A module's ``__file__`` when imported in the current
1515 working directory will also now have an absolute path, including when using
1516 ``-m`` with the interpreter (this does not influence when the path to a file
1517 is specified on the command-line).
Victor Stinner2748bc72013-12-13 10:57:04 +01001518
R David Murraya2924ca2014-01-03 14:06:01 -05001519* The removal of the *strict* argument to :class:`~http.client.HTTPConnection`
1520 and :class:`~http.client.HTTPSConnection` changes the meaning of the
1521 remaining arguments if you are specifying them positionally rather than by
1522 keyword. If you've been paying attention to deprecation warnings your code
1523 should already be specifying any additional arguments via keywords.
1524
R David Murray4908f4a2014-01-04 18:07:20 -05001525* Strings between ``from __future__ import ...`` statements now *always* raise
1526 a :exc:`SyntaxError`. Previously if there was no leading docstring, an
1527 interstitial string would sometimes be ignored. This brings CPython into
1528 compliance with the language spec; Jython and PyPy already were.
1529 (:issue:`17434`).
1530
R David Murraya101bdb2014-01-06 16:32:05 -05001531* :meth:`ssl.SSLSocket.getpeercert` and :meth:`ssl.SSLSocket.do_handshake`
1532 now raise an :exc:`OSError` with ``ENOTCONN`` when the ``SSLSocket`` is not
1533 connected, instead of the previous behavior of raising an
1534 :exc:`AttributError`. In addition, :meth:`~ssl.SSLSocket.getpeercert`
1535 will raise a :exc:`ValueError` if the handshake has not yet been done.
1536
R David Murrayd2653812013-12-27 14:06:15 -05001537
Victor Stinner774b2e02013-12-13 14:33:01 +01001538Changes in the C API
1539--------------------
1540
1541* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
1542 argument is not set. Previously only ``NULL`` was returned with no exception
1543 set.
1544
1545* The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
1546 now be a string allocated by :c:func:`PyMem_RawMalloc` or
1547 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
1548 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
1549
1550* :c:func:`PyThread_set_key_value` now always set the value. In Python
Victor Stinner2748bc72013-12-13 10:57:04 +01001551 3.3, the function did nothing if the key already exists (if the current
1552 value is a non-NULL pointer).
1553
Victor Stinner774b2e02013-12-13 14:33:01 +01001554* The ``f_tstate`` (thread state) field of the :c:type:`PyFrameObject`
1555 structure has been removed to fix a bug: see :issue:`14432` for the
1556 rationale.
1557