blob: 2b68d862ad16e5d07f569d316570765443033417 [file] [log] [blame]
Georg Brandlb80f5112012-09-30 09:11:58 +02001****************************
2 What's New In Python 3.4
3****************************
4
Georg Brandl3b80d342012-10-28 13:37:54 +01005.. :Author: Someone <email>
6 (uncomment if there is a principal author)
Georg Brandlb80f5112012-09-30 09:11:58 +02007
8.. Rules for maintenance:
9
Nick Coghlan03074fd2012-09-30 18:51:53 +053010 * Anyone can add text to this document, but the maintainer reserves the
11 right to rewrite any additions. In particular, for obscure or esoteric
12 features, the maintainer may reduce any addition to a simple reference to
13 the new documentation rather than explaining the feature inline.
Georg Brandlb80f5112012-09-30 09:11:58 +020014
Nick Coghlan03074fd2012-09-30 18:51:53 +053015 * While the maintainer will periodically go through Misc/NEWS
16 and add changes, it's best not to rely on this. We know from experience
17 that any changes that aren't in the What's New documentation around the
18 time of the original release will remain largely unknown to the community
19 for years, even if they're added later. We also know from experience that
20 other priorities can arise, and the maintainer will run out of time to do
21 updates - in such cases, end users will be much better served by partial
22 notifications that at least give a hint about new features to
23 investigate.
Georg Brandlb80f5112012-09-30 09:11:58 +020024
25 * This is not a complete list of every single change; completeness
Nick Coghlan03074fd2012-09-30 18:51:53 +053026 is the purpose of Misc/NEWS. The What's New should focus on changes that
27 are visible to Python *users* and that *require* a feature release (i.e.
28 most bug fixes should only be recorded in Misc/NEWS)
29
30 * PEPs should not be marked Final until they have an entry in What's New.
31 A placeholder entry that is just a section header and a link to the PEP
32 (e.g ":pep:`397` has been implemented") is acceptable. If a PEP has been
33 implemented and noted in What's New, don't forget to mark it as Final!
Georg Brandlb80f5112012-09-30 09:11:58 +020034
35 * If you want to draw your new text to the attention of the
36 maintainer, add 'XXX' to the beginning of the paragraph or
37 section.
38
Nick Coghlan03074fd2012-09-30 18:51:53 +053039 * It's OK to add just a very brief note about a change. For
40 example: "The :ref:`~socket.transmogrify()` function was added to the
41 :mod:`socket` module." The maintainer will research the change and
42 write the necessary text (if appropriate). The advantage of doing this
43 is that even if no more descriptive text is ever added, readers will at
44 least have a notification that the new feature exists and a link to the
45 relevant documentation.
Georg Brandlb80f5112012-09-30 09:11:58 +020046
47 * You can comment out your additions if you like, but it's not
48 necessary (especially when a final release is some months away).
49
50 * Credit the author of a patch or bugfix. Just the name is
51 sufficient; the e-mail address isn't necessary.
52
53 * It's helpful to add the bug/patch number as a comment:
54
Nick Coghlan03074fd2012-09-30 18:51:53 +053055 The :ref:`~socket.transmogrify()` function was added to the
56 :mod:`socket` module. (Contributed by P.Y. Developer in :issue:`12345`.)
Georg Brandlb80f5112012-09-30 09:11:58 +020057
58 This saves the maintainer the effort of going through the Mercurial log
59 when researching a change.
60
Nick Coghlan03074fd2012-09-30 18:51:53 +053061 * Cross referencing tip: :ref:`mod.attr` will display as ``mod.attr``,
62 while :ref:`~mod.attr` will display as ``attr``.
63
Georg Brandlb80f5112012-09-30 09:11:58 +020064This article explains the new features in Python 3.4, compared to 3.3.
65
Nick Coghlan03074fd2012-09-30 18:51:53 +053066.. Python 3.4 was released on TBD.
Georg Brandlb80f5112012-09-30 09:11:58 +020067
Ezio Melotti25bbe5e2012-11-17 19:30:48 +020068For full details, see the
69`changelog <http://docs.python.org/3.4/whatsnew/changelog.html>`_.
Georg Brandlb80f5112012-09-30 09:11:58 +020070
71.. note:: Prerelease users should be aware that this document is currently in
72 draft form. It will be updated substantially as Python 3.4 moves towards
73 release, so it's worth checking back even after reading earlier versions.
74
75
76.. seealso::
77
Nick Coghlan03074fd2012-09-30 18:51:53 +053078 .. :pep:`4XX` - Python 3.4 Release Schedule
Georg Brandlb80f5112012-09-30 09:11:58 +020079
80
81Summary -- Release highlights
82=============================
83
Kristjan Valur Jonssona1e82442013-03-26 13:56:14 +000084.. This section singles out the most important changes in Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020085 Brevity is key.
86
87New syntax features:
88
Nick Coghlan0acceb72013-10-20 13:22:21 +100089* No new syntax features are planned for Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +020090
91New library modules:
92
Nick Coghlan0acceb72013-10-20 13:22:21 +100093* :mod:`asyncio`: New provisonal API for asynchronous IO (:pep:`3156`).
94* :mod:`enum`: Support for enumeration types (:pep:`435`).
Victor Stinner4aea4a02013-09-04 20:30:34 +020095* :mod:`selectors`: High-level and efficient I/O multiplexing, built upon the
96 :mod:`select` module primitives.
Nick Coghlan0acceb72013-10-20 13:22:21 +100097* :mod:`statistics`: A basic numerically stable statistics library (:pep:`450`).
Georg Brandlb80f5112012-09-30 09:11:58 +020098
99New built-in features:
100
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200101* :ref:`PEP 442: Safe object finalization <pep-442>`.
102* :ref:`PEP 445: Configurable memory allocators <pep-445>`.
Victor Stinnerdaf45552013-08-28 00:53:59 +0200103* :ref:`PEP 446: Make newly created file descriptors non-inheritable <pep-446>`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200104
105Implementation improvements:
106
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200107* A more efficient :mod:`marshal` format (:issue:`16475`).
108* Improve finalization of Python modules to avoid setting their globals
109 to None, in most cases (:issue:`18214`).
Nick Coghlan0acceb72013-10-20 13:22:21 +1000110* "Argument Clinic", providing improved introspection support for builtin
111 and standard library extension types implemented in C (:pep:`436`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200112
113Significantly Improved Library Modules:
114
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200115* Single-dispatch generic functions (:pep:`443`)
116* SHA-3 (Keccak) support for :mod:`hashlib`.
117* TLSv1.1 and TLSv1.2 support for :mod:`ssl`.
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100118* :mod:`multiprocessing` now has option to avoid using :func:`os.fork`
119 on Unix (:issue:`8713`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200120
Georg Brandlb80f5112012-09-30 09:11:58 +0200121Security improvements:
122
Christian Heimesad73a9c2013-08-10 16:36:18 +0200123* command line option for :ref:`isolated mode <using-on-misc-options>`,
124 :issue:`16499`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200125
126Please read on for a comprehensive list of user-facing changes.
127
Victor Stinnerdaf45552013-08-28 00:53:59 +0200128.. _pep-446:
129
130PEP 446: Make newly created file descriptors non-inheritable
131============================================================
132
Georg Brandl5642ff92013-09-15 10:37:57 +0200133The :pep:`446` makes newly created file descriptors :ref:`non-inheritable
134<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200135
136* :func:`os.get_inheritable`, :func:`os.set_inheritable`
137* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
138* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
139
140
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200141.. _pep-445:
142
143PEP 445: Add new APIs to customize Python memory allocators
144===========================================================
Georg Brandlb80f5112012-09-30 09:11:58 +0200145
Victor Stinner0507bf52013-07-07 02:05:46 +0200146The :pep:`445` adds new Application Programming Interfaces (API) to customize
147Python memory allocators.
Georg Brandlb80f5112012-09-30 09:11:58 +0200148
149
Antoine Pitrou796564c2013-07-30 19:59:21 +0200150.. _pep-442:
151
152PEP 442: Safe object finalization
153=================================
154
155This PEP removes the current limitations and quirks of object finalization.
156With it, objects with :meth:`__del__` methods, as well as generators
157with :keyword:`finally` clauses, can be finalized when they are part of a
158reference cycle.
159
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000160As part of this change, module globals are no longer forcibly set to
161:const:`None` during interpreter shutdown, instead relying on the normal
162operation of the cyclic garbage collector.
163
Antoine Pitrou796564c2013-07-30 19:59:21 +0200164.. seealso::
165
166 :pep:`442` - Safe object finalization
167 PEP written and implemented by Antoine Pitrou
168
Georg Brandlb80f5112012-09-30 09:11:58 +0200169
170Other Language Changes
171======================
172
173Some smaller changes made to the core Python language are:
174
Ezio Melotti34808e22013-10-12 16:36:13 +0300175* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200176
R David Murray9a2f1392013-06-28 13:31:19 -0400177* :func:`min` and :func:`max` now accept a *default* argument that can be used
178 to specify the value they return if the iterable they are evaluating has no
179 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200180
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200181* Module objects are now :mod:`weakref`'able.
182
Nick Coghlan0acceb72013-10-20 13:22:21 +1000183* Module ``__file__`` attributes (and related values) should now always
184 contain absolute paths by default, with the sole exception of
185 ``__main__.__file__`` when a script has been executed directly using
186 a relative path (Contributed by Brett Cannon in :issue:`18416`).
187
Georg Brandlb80f5112012-09-30 09:11:58 +0200188
189New Modules
190===========
191
Nick Coghlan0acceb72013-10-20 13:22:21 +1000192
193asyncio
194-------
195
196The new :mod:`asyncio` module (defined in :pep:`3156`) provides a standard
197pluggable event loop model for Python, providing solid asynchronous IO
198support in the standard library, and making it easier for other event loop
199implementations to interoperate with the standard library and each other.
200
201For Python 3.4, this module is considered a :term:`provisional API`.
202
203enum
204----
205
206The new :mod:`enum` module provides a standard implementation of enumeration
207types, allowing other modules (such as :mod:`socket`) to provide more
208informative error messages and better debugging support by replacing opaque
209integer constants with backwards compatible enumeration values.
210
211
Charles-François Natali243d8d82013-09-04 19:02:49 +0200212selectors
213---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200214
Nick Coghlan0acceb72013-10-20 13:22:21 +1000215The new :mod:`selectors` module (created as part of implementing :pep:`3156`)
216allows high-level and efficient I/O multiplexing, built upon the
217:mod:`select` module primitives.
218
219
220statistics
221----------
222
223The new :mod:`statistics` module (defined in :pep:`450`) offers some core
224statistics functionality directly in the standard library. This module
225supports calculation of the mean, median, mode, variance and standard
226deviation of a data series.
Georg Brandlb80f5112012-09-30 09:11:58 +0200227
228
229Improved Modules
230================
231
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200232aifc
233----
234
235The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
236plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
237
238
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300239audioop
240-------
241
242Added support for 24-bit samples (:issue:`12866`).
243
244
Nick Coghlane206b6e2013-10-14 00:55:46 +1000245codecs
246------
247
248The :meth:`codecs.encode` and :meth:`codecs.decode` convenience functions are
249now properly documented. These functions have existed in the :mod:`codecs`
250module since ~2004, but were previously only discoverable through runtime
251introspection.
252
253Unlike the convenience methods on :class:`str`, :class:`bytes` and
254:class:`bytearray`, these convenience functions support arbitrary codecs,
255rather than being limited to Unicode text encodings.
256
257
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200258colorsys
259--------
260
261The number of digits in the coefficients for the RGB --- YIQ conversions have
262been expanded so that they match the FCC NTSC versions. The change in
263results should be less than 1% and may better match results found elsewhere.
264
R David Murray8e37d5d2013-04-13 14:49:48 -0400265
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000266contextlib
267----------
268
Nick Coghlan240f86d2013-10-17 23:40:57 +1000269The new :class:`contextlib.suppress` context manager helps to clarify the
270intent of code that deliberately suppresses exceptions from a single
271statement. (Contributed by Raymond Hettinger in :issue:`15806` and
272Zero Piraeus in :issue:`19266`)
273
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000274The new :class:`contextlib.redirect_stdio` context manager makes it easier
275for utility scripts to handle inflexible APIs that don't provide any
276options to retrieve their output as a string or direct it to somewhere
Nick Coghlan0acceb72013-10-20 13:22:21 +1000277other than :data:`sys.stdout`. In conjunction with :class:`io.StringIO`,
278this context manager is also useful for checking expected output from
279command line utilities. (Contribute by Raymond Hettinger in :issue:`15805`)
280
281The :mod:`contextlib` documentation has also been updated to include a
282:ref:`discussion <single-use-reusable-and-reentrant-cms>` of the
283differences between single use, reusable and reentrant context managers.
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000284
285
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000286dis
287---
288
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300289The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
290that provides details of individual bytecode operations and a
291:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000292given piece of Python code. The various display tools in the :mod:`dis`
293module have been updated to be based on these new components.
294
295The new :class:`dis.Bytecode` class provides an object-oriented API for
296inspecting bytecode, both in human-readable form and for iterating over
297instructions.
298
299(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`)
300
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200301
R David Murray5a9d7062012-11-21 15:09:21 -0500302doctest
303-------
304
R David Murray5707d502013-06-23 14:24:13 -0400305Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
306failure is detected. (Contributed by R. David Murray and Daniel Urban in
307:issue:`16522`.)
308
309Updated the doctest command line interface to use :mod:`argparse`, and added
310``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
311be specified on the command line, and ``-f`` is a shorthand for ``-o
312FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
313CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200314
R David Murray8e37d5d2013-04-13 14:49:48 -0400315
R David Murraybb17d2b2013-08-09 16:15:28 -0400316email
317-----
318
319:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
320override the default policy of the message when generating a string
321representation of it. This means that ``as_string`` can now be used in more
322circumstances, instead of having to create and use a :mod:`~email.generator` in
323order to pass formatting parameters to its ``flatten`` method.
324
325New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
326representation of the message in a fashion similar to how ``as_string``
327produces a string representation. It does not accept the *maxheaderlen*
328argument, but does accept the *unixfrom* and *policy* arguments. The
329:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
330calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
331result: a bytes object containing the fully formatted message.
332
333(Contributed by R. David Murray in :issue:`18600`.)
334
R David Murray3da240f2013-10-16 22:48:40 -0400335A pair of new subclasses of :class:`~email.message.Message` have been added,
336along with a new sub-module, :mod:`~email.contentmanager`. All documentation
337is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000338:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400339number of new methods that make extracting content from and inserting content
340into email messages much easier. See the :mod:`~email.contentmanager`
341documentation for details.
342
343These API additions complete the bulk of the work that was planned as part of
344the email6 project. The currently provisional API is scheduled to become final
345in Python 3.5 (possibly with a few minor additions in the area of error
346handling).
347
348(Contributed by R. David Murray in :issue:`18891`.)
349
R David Murraybb17d2b2013-08-09 16:15:28 -0400350
Victor Stinner854ffcb2013-06-21 00:36:30 +0200351functools
352---------
353
354New :func:`functools.singledispatch` decorator: see the :pep:`443`.
355
Nick Coghlane8c45d62013-07-28 20:00:01 +1000356
Christian Heimese92ef132013-10-13 00:52:43 +0200357hashlib
358-------
359
360New :func:`hashlib.pbkdf2_hmac` function.
361
362(Contributed by Christian Heimes in :issue:`18582`)
363
364
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200365inspect
366-------
367
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000368
369The inspect module now offers a basic command line interface to quickly
370display source code and other information for modules, classes and
371functions.
372
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200373:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
374created by :func:`functools.wraps` (and any other API that sets the
375``__wrapped__`` attribute on a wrapper function).
376
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200377mmap
378----
379
380mmap objects can now be weakref'ed.
381
382(Contributed by Valerie Lambert in :issue:`4885`.)
383
384
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100385multiprocessing
386---------------
387
388On Unix two new *start methods* have been added for starting processes
389using :mod:`multiprocessing`. These make the mixing of processes with
390threads more robust. See :issue:`8713`.
391
392Also, except when using the old *fork* start method, child processes
393will no longer inherit unneeded handles/file descriptors from their parents.
394
395
Victor Stinnerdaf45552013-08-28 00:53:59 +0200396os
397--
398
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200399New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200400descriptors or a Windows handle:
401
402* :func:`os.get_inheritable`, :func:`os.set_inheritable`
403* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
404
405
R David Murray78d692f2013-10-10 17:23:26 -0400406pdb
407---
408
409The ``print`` command has been removed from :mod:`pdb`, restoring access to the
410``print`` function.
411
412Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
413entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
414mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
415prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
416command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
417``print`` function, making it inaccessible at the ``pdb`` prompt.
418
419(Contributed by Connor Osborn in :issue:`18764`.)
420
421
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200422poplib
423------
424
425New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
426an encrypted POP3 session.
427
428New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
429POP3 server.
430
431(Contributed by Lorenzo Catucci in :issue:`4473`.)
432
433
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300434pprint
435------
436
437The :mod::`pprint` module now supports *compact* mode for formatting long
438sequences (:issue:`19132`).
439
440
R David Murray8e37d5d2013-04-13 14:49:48 -0400441smtplib
442-------
443
R David Murray8a345962013-04-14 06:46:35 -0400444:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400445both socket level errors and SMTP protocol level errors to be caught in one
446try/except statement by code that only cares whether or not an error occurred.
447(:issue:`2118`).
448
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200449
Victor Stinnerdaf45552013-08-28 00:53:59 +0200450socket
451------
452
Georg Brandl5642ff92013-09-15 10:37:57 +0200453Socket objects have new methods to get or set their :ref:`inheritable flag
454<fd_inheritance>`:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200455
456* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
457
Eli Bendersky34567ec2013-08-31 15:18:48 -0700458The ``socket.AF_*`` and ``socket.SOCK_*`` constants are enumeration values,
459using the new :mod:`enum` module. This allows descriptive reporting during
460debugging, instead of seeing integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200461
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200462ssl
463---
464
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200465TLSv1.1 and TLSv1.2 support.
Christian Heimes70833a82013-06-22 19:34:17 +0200466
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200467(Contributed by Michele Orrù and Antoine Pitrou in :issue:`16692`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200468
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200469* New diagnostic functions :func:`~ssl.get_default_verify_paths`,
470 :meth:`~ssl.SSLContext.cert_store_stats` and
471 :meth:`~ssl.SSLContext.get_ca_certs`
472
473* Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
474 cert store.
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200475
476(Contributed by Christian Heimes in :issue:`18143`, :issue:`18147` and
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200477 :issue:`17134`.)
478
479Support for server-side SNI using the new
480:meth:`ssl.SSLContext.set_servername_callback` method.
481
482(Contributed by Daniel Black in :issue:`8109`.)
483
484
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200485stat
486----
487
488The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
489implementation is required as most of the values aren't standardized and
490platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
491
492The module supports new file types: door, event port and whiteout.
493
494
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200495struct
496------
497
498Streaming struct unpacking using :func:`struct.iter_unpack`.
499
500(Contributed by Antoine Pitrou in :issue:`17804`.)
501
502
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300503sunau
504-----
505
506The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
507plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
508
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300509:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
510
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300511
Andrew Kuchling173a1572013-09-15 18:15:56 -0400512traceback
513---------
514
515A new :func:`traceback.clear_frames` function takes a traceback object
516and clears the local variables in all of the frames it references,
517reducing the amount of memory consumed (:issue:`1565525`).
518
519
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200520urllib
521------
522
523Add support.for ``data:`` URLs in :mod:`urllib.request`.
524
525(Contributed by Mathias Panzenböck in :issue:`16423`.)
526
527
528unittest
529--------
530
531Support for easy dynamically-generated subtests using the
532:meth:`~unittest.TestCase.subTest` context manager.
533
534(Contributed by Antoine Pitrou in :issue:`16997`.)
535
R David Murray8e37d5d2013-04-13 14:49:48 -0400536
R David Murray671cd322013-04-10 12:31:43 -0400537wave
538----
539
540The :meth:`~wave.getparams` method now returns a namedtuple rather than a
541plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
542
R David Murrayc91d5ee2013-07-31 13:46:08 -0400543:meth:`wave.open` now supports the context manager protocol. (Contributed
544by Claudiu Popa in :issue:`17616`.)
545
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200546
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200547weakref
548-------
549
550New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000551methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200552
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000553New :class:`~weakref.finalize` class makes it possible to register a callback
554to be invoked when an object is garbage collected, without needing to
555carefully manage the lifecycle of the weak reference itself. (Contributed by
556Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200557
558
559xml.etree
560---------
561
562Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -0700563:class:`~xml.etree.ElementTree.XMLPullParser`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200564
Eli Benderskyb5869342013-08-30 05:51:20 -0700565(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200566
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200567Other improvements
568==================
569
570Tab-completion is now enabled by default in the interactive interpreter.
571
572(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
573
Eli Bendersky96d848a2013-09-06 06:55:58 -0700574Python invocation changes
575=========================
576
577Invoking the Python interpreter with ``--version`` now outputs the version to
578standard output instead of standard error (:issue:`18338`). Similar changes
579were made to :mod:`argparse` (:issue:`18920`) and other modules that have
580script-like invocation capabilities (:issue:`18922`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200581
Georg Brandlb80f5112012-09-30 09:11:58 +0200582Optimizations
583=============
584
585Major performance enhancements have been added:
586
Victor Stinnere64322e2012-10-30 23:12:47 +0100587* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200588
Raymond Hettingerc301b552013-08-19 09:12:20 -0700589* The cost of hash collisions for sets is now reduced. Each hash table
Raymond Hettinger8408dc52013-09-15 14:57:15 -0700590 probe now checks a series of consecutive, adjacent key/hash pairs before
591 continuing to make random probes through the hash table. This exploits
592 cache locality to make collision resolution less expensive.
593
594 The collision resolution scheme can be described as a hybrid of linear
595 probing and open addressing. The number of additional linear probes
596 defaults to nine. This can be changed at compile-time by defining
597 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
598 linear probing entirely.
Raymond Hettingerc301b552013-08-19 09:12:20 -0700599
Andrew Kuchling13aa7812013-08-19 13:07:18 -0400600 (Contributed by Raymond Hettinger in :issue"`18771`.)
Raymond Hettingerc301b552013-08-19 09:12:20 -0700601
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200602* The interpreter starts about 30% faster. A couple of measures lead to the
Eric V. Smith57841dd2013-10-13 00:36:08 -0400603 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200604 :mod:`collections` and :mod:`locale` modules and their dependencies are no
605 longer imported by default. The marshal module has been improved to load
606 compiled Python code faster.
607
608 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
609 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
610 :issue:`9548`)
611
612
Georg Brandlb80f5112012-09-30 09:11:58 +0200613Build and C API Changes
614=======================
615
616Changes to Python's build process and to the C API include:
617
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000618* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
619 allows applications embedding the CPython interpreter to reliably force
620 a particular encoding and error handler for the standard streams
621 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200622
Nick Coghlan0acceb72013-10-20 13:22:21 +1000623* Most Python C APIs that don't mutate string arguments are now correctly
624 marked as accepting ``const char *`` rather than ``char *`` (Contributed
625 by Serhiy Storchaka in :issue:`1772673`).
626
627* "Argument Clinic" (:pep:`436`) is now part of the CPython build process
628 and can be used to simplify the process of defining and maintaining
629 accurate signatures for builtins and standard library extension modules
630 implemented in C.
631
Georg Brandlb80f5112012-09-30 09:11:58 +0200632
633Deprecated
634==========
635
636Unsupported Operating Systems
637-----------------------------
638
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200639* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200640* Windows 2000
Georg Brandlb80f5112012-09-30 09:11:58 +0200641
642
643Deprecated Python modules, functions and methods
644------------------------------------------------
645
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -0400646* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -0400647 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
648 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +0200649
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400650* :func:`importlib.util.module_for_loader` is pending deprecation. Using
651 :func:`importlib.util.module_to_load` and
652 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
653 to more easily customize module loading.
654
Brett Cannone4f41de2013-06-16 13:13:40 -0400655* The :mod:`imp` module is pending deprecation. To keep compatibility with
656 Python 2/3 code bases, the module's removal is currently not scheduled.
657
Brett Cannon1448ecf2013-10-04 11:38:59 -0400658* The :mod:`formatter` module is pending deprecation and is slated for removal
659 in Python 3.6.
660
Georg Brandlb80f5112012-09-30 09:11:58 +0200661
662Deprecated functions and types of the C API
663-------------------------------------------
664
Victor Stinner8d197672013-10-09 14:53:01 +0200665* The ``PyThreadState.tick_counter`` field has been value: its value was meaningless
666 since Python 3.2 ("new GIL").
Georg Brandlb80f5112012-09-30 09:11:58 +0200667
668
669Deprecated features
670-------------------
671
Nick Coghlan0acceb72013-10-20 13:22:21 +1000672* No feature deprecations are planned for Python 3.4.
Georg Brandlb80f5112012-09-30 09:11:58 +0200673
674
Benjamin Peterson88f3b232012-10-04 12:45:10 -0400675Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +0200676=====================
677
678This section lists previously described changes and other bugfixes
679that may require changes to your code.
680
Brett Cannon777622b2013-04-09 17:03:10 -0400681* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
682 exception or return a default value instead of raising
683 :exc:`NotImplementedError` blindly. This will only affect code calling
684 :func:`super` and falling through all the way to the ABCs. For compatibility,
685 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -0400686
687* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
688 attributes to ``None`` by default. To determine if these attributes were set
689 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -0400690 ``getattr(module, '__loader__', None) is not None``.
691
692* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
693 ``__package__`` unconditionally to properly support reloading. If this is not
694 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -0400695 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -0400696
697* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
698 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
699
Brett Cannon1448ecf2013-10-04 11:38:59 -0400700* Frozen packages no longer set ``__path__`` to a list containing the package
701 name but an empty list instead. Determing if a module is a package should be
702 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -0400703
704* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
Brett Cannon82da8882013-07-04 17:48:16 -0400705 argument is not set. Previously only ``NULL`` was returned with no exception
706 set.
Brett Cannon33915eb2013-06-14 18:33:00 -0400707
708* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
709 it would write to is a symlink or a non-regular file. This is to act as a
710 warning that import will overwrite those files with a regular file regardless
711 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -0400712
713* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
714 :exc:`ImportError` when the source code being loaded triggers a
715 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
716 meant to be raised only when source code cannot be found but it should, it was
717 felt to be over-reaching/overloading of that meaning when the source code is
718 found but improperly structured. If you were catching ImportError before and
719 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +0200720 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +1000721
722* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
723 set the ``__wrapped__`` attribute even if the wrapped function had a
724 wrapped attribute set. This means ``__wrapped__`` attributes now correctly
725 link a stack of decorated functions rather than every ``__wrapped__``
726 attribute in the chain referring to the innermost function. Introspection
Nick Coghlane8c45d62013-07-28 20:00:01 +1000727 libraries that assumed the previous behaviour was intentional can use
728 :func:`inspect.unwrap` to gain equivalent behaviour.
Victor Stinner2fe9bac2013-10-10 16:18:20 +0200729
Georg Brandlc2228c82013-10-12 13:24:55 +0200730* (C API) The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
Victor Stinner2fe9bac2013-10-10 16:18:20 +0200731 now be a string allocated by :c:func:`PyMem_RawMalloc` or
732 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
733 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
734
Georg Brandl0f5bff22013-10-19 17:46:38 +0200735* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -0400736 directory to objects in :data:`sys.path_hooks` for the empty string. This
737 results in :data:`sys.path_importer_cache` never containing ``''``, thus
738 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
739 will not find all keys. A module's ``__file__`` when imported in the current
740 working directory will also now have an absolute path, including when using
741 ``-m`` with the interpreter (this does not influence when the path to a file
742 is specified on the command-line).
743
Georg Brandl0f5bff22013-10-19 17:46:38 +0200744* :class:`importlib.machinery.FileFinder` no longer special-cases the empty string
Brett Cannon27e27f72013-10-18 11:39:04 -0400745 to be changed to ``'.'``.