blob: 35f820e3b5e528779d813fb347784c412e27e3e2 [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
89* None yet.
90
91New library modules:
92
Victor Stinner84e33c82013-06-21 00:31:55 +020093* :mod:`enum`: Implementation of the :pep:`435`.
Victor Stinner4aea4a02013-09-04 20:30:34 +020094* :mod:`selectors`: High-level and efficient I/O multiplexing, built upon the
95 :mod:`select` module primitives.
Georg Brandlb80f5112012-09-30 09:11:58 +020096
97New built-in features:
98
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +020099* :ref:`PEP 442: Safe object finalization <pep-442>`.
100* :ref:`PEP 445: Configurable memory allocators <pep-445>`.
Victor Stinnerdaf45552013-08-28 00:53:59 +0200101* :ref:`PEP 446: Make newly created file descriptors non-inheritable <pep-446>`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200102
103Implementation improvements:
104
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200105* A more efficient :mod:`marshal` format (:issue:`16475`).
106* Improve finalization of Python modules to avoid setting their globals
107 to None, in most cases (:issue:`18214`).
Georg Brandlb80f5112012-09-30 09:11:58 +0200108
109Significantly Improved Library Modules:
110
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200111* Single-dispatch generic functions (:pep:`443`)
112* SHA-3 (Keccak) support for :mod:`hashlib`.
113* TLSv1.1 and TLSv1.2 support for :mod:`ssl`.
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100114* :mod:`multiprocessing` now has option to avoid using :func:`os.fork`
115 on Unix (:issue:`8713`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200116
Georg Brandlb80f5112012-09-30 09:11:58 +0200117Security improvements:
118
Christian Heimesad73a9c2013-08-10 16:36:18 +0200119* command line option for :ref:`isolated mode <using-on-misc-options>`,
120 :issue:`16499`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200121
122Please read on for a comprehensive list of user-facing changes.
123
Victor Stinnerdaf45552013-08-28 00:53:59 +0200124.. _pep-446:
125
126PEP 446: Make newly created file descriptors non-inheritable
127============================================================
128
Georg Brandl5642ff92013-09-15 10:37:57 +0200129The :pep:`446` makes newly created file descriptors :ref:`non-inheritable
130<fd_inheritance>`. New functions and methods:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200131
132* :func:`os.get_inheritable`, :func:`os.set_inheritable`
133* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
134* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
135
136
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200137.. _pep-445:
138
139PEP 445: Add new APIs to customize Python memory allocators
140===========================================================
Georg Brandlb80f5112012-09-30 09:11:58 +0200141
Victor Stinner0507bf52013-07-07 02:05:46 +0200142The :pep:`445` adds new Application Programming Interfaces (API) to customize
143Python memory allocators.
Georg Brandlb80f5112012-09-30 09:11:58 +0200144
145
Antoine Pitrou796564c2013-07-30 19:59:21 +0200146.. _pep-442:
147
148PEP 442: Safe object finalization
149=================================
150
151This PEP removes the current limitations and quirks of object finalization.
152With it, objects with :meth:`__del__` methods, as well as generators
153with :keyword:`finally` clauses, can be finalized when they are part of a
154reference cycle.
155
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000156As part of this change, module globals are no longer forcibly set to
157:const:`None` during interpreter shutdown, instead relying on the normal
158operation of the cyclic garbage collector.
159
Antoine Pitrou796564c2013-07-30 19:59:21 +0200160.. seealso::
161
162 :pep:`442` - Safe object finalization
163 PEP written and implemented by Antoine Pitrou
164
Georg Brandlb80f5112012-09-30 09:11:58 +0200165
166Other Language Changes
167======================
168
169Some smaller changes made to the core Python language are:
170
Ezio Melotti34808e22013-10-12 16:36:13 +0300171* Unicode database updated to UCD version 6.3.
Georg Brandlb80f5112012-09-30 09:11:58 +0200172
R David Murray9a2f1392013-06-28 13:31:19 -0400173* :func:`min` and :func:`max` now accept a *default* argument that can be used
174 to specify the value they return if the iterable they are evaluating has no
175 elements. Contributed by Julian Berman in :issue:`18111`.
Georg Brandlb80f5112012-09-30 09:11:58 +0200176
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200177* Module objects are now :mod:`weakref`'able.
178
Georg Brandlb80f5112012-09-30 09:11:58 +0200179
180New Modules
181===========
182
Charles-François Natali243d8d82013-09-04 19:02:49 +0200183selectors
184---------
Georg Brandlb80f5112012-09-30 09:11:58 +0200185
Charles-François Natali243d8d82013-09-04 19:02:49 +0200186The new :mod:`selectors` module allows high-level and efficient I/O
187multiplexing, built upon the :mod:`select` module primitives.
Georg Brandlb80f5112012-09-30 09:11:58 +0200188
189
190Improved Modules
191================
192
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200193aifc
194----
195
196The :meth:`~aifc.getparams` method now returns a namedtuple rather than a
197plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.)
198
199
Serhiy Storchakaeaea5e92013-10-19 21:10:46 +0300200audioop
201-------
202
203Added support for 24-bit samples (:issue:`12866`).
204
205
Nick Coghlane206b6e2013-10-14 00:55:46 +1000206codecs
207------
208
209The :meth:`codecs.encode` and :meth:`codecs.decode` convenience functions are
210now properly documented. These functions have existed in the :mod:`codecs`
211module since ~2004, but were previously only discoverable through runtime
212introspection.
213
214Unlike the convenience methods on :class:`str`, :class:`bytes` and
215:class:`bytearray`, these convenience functions support arbitrary codecs,
216rather than being limited to Unicode text encodings.
217
218
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200219colorsys
220--------
221
222The number of digits in the coefficients for the RGB --- YIQ conversions have
223been expanded so that they match the FCC NTSC versions. The change in
224results should be less than 1% and may better match results found elsewhere.
225
R David Murray8e37d5d2013-04-13 14:49:48 -0400226
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000227contextlib
228----------
229
Nick Coghlan240f86d2013-10-17 23:40:57 +1000230The new :class:`contextlib.suppress` context manager helps to clarify the
231intent of code that deliberately suppresses exceptions from a single
232statement. (Contributed by Raymond Hettinger in :issue:`15806` and
233Zero Piraeus in :issue:`19266`)
234
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000235
236The new :class:`contextlib.redirect_stdio` context manager makes it easier
237for utility scripts to handle inflexible APIs that don't provide any
238options to retrieve their output as a string or direct it to somewhere
Nick Coghlan240f86d2013-10-17 23:40:57 +1000239other than :data:`sys.stdout`. (Contribute by Raymond Hettinger in
240:issue:`15805`)
Nick Coghlanb4534ae2013-10-13 23:23:08 +1000241
242
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000243dis
244---
245
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300246The :mod:`dis` module is now built around an :class:`~dis.Instruction` class
247that provides details of individual bytecode operations and a
248:func:`~dis.get_instructions` iterator that emits the Instruction stream for a
Nick Coghlanb39fd0c2013-05-06 23:59:20 +1000249given piece of Python code. The various display tools in the :mod:`dis`
250module have been updated to be based on these new components.
251
252The new :class:`dis.Bytecode` class provides an object-oriented API for
253inspecting bytecode, both in human-readable form and for iterating over
254instructions.
255
256(Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in :issue:`11816`)
257
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200258
R David Murray5a9d7062012-11-21 15:09:21 -0500259doctest
260-------
261
R David Murray5707d502013-06-23 14:24:13 -0400262Added :data:`~doctest.FAIL_FAST` flag to halt test running as soon as the first
263failure is detected. (Contributed by R. David Murray and Daniel Urban in
264:issue:`16522`.)
265
266Updated the doctest command line interface to use :mod:`argparse`, and added
267``-o`` and ``-f`` options to the interface. ``-o`` allows doctest options to
268be specified on the command line, and ``-f`` is a shorthand for ``-o
269FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
270CLI). (Contributed by R. David Murray in :issue:`11390`.)
Georg Brandlb80f5112012-09-30 09:11:58 +0200271
R David Murray8e37d5d2013-04-13 14:49:48 -0400272
R David Murraybb17d2b2013-08-09 16:15:28 -0400273email
274-----
275
276:meth:`~email.message.Message.as_string` now accepts a *policy* argument to
277override the default policy of the message when generating a string
278representation of it. This means that ``as_string`` can now be used in more
279circumstances, instead of having to create and use a :mod:`~email.generator` in
280order to pass formatting parameters to its ``flatten`` method.
281
282New method :meth:`~email.message.Message.as_bytes` added to produce a bytes
283representation of the message in a fashion similar to how ``as_string``
284produces a string representation. It does not accept the *maxheaderlen*
285argument, but does accept the *unixfrom* and *policy* arguments. The
286:class:`~email.message.Message` :meth:`~email.message.Message.__bytes__` method
287calls it, meaning that ``bytes(mymsg)`` will now produce the intuitive
288result: a bytes object containing the fully formatted message.
289
290(Contributed by R. David Murray in :issue:`18600`.)
291
R David Murray3da240f2013-10-16 22:48:40 -0400292A pair of new subclasses of :class:`~email.message.Message` have been added,
293along with a new sub-module, :mod:`~email.contentmanager`. All documentation
294is currently in the new module, which is being added as part of the new
Nick Coghlan240f86d2013-10-17 23:40:57 +1000295:term:`provisional <provisional package>` email API. These classes provide a
R David Murray3da240f2013-10-16 22:48:40 -0400296number of new methods that make extracting content from and inserting content
297into email messages much easier. See the :mod:`~email.contentmanager`
298documentation for details.
299
300These API additions complete the bulk of the work that was planned as part of
301the email6 project. The currently provisional API is scheduled to become final
302in Python 3.5 (possibly with a few minor additions in the area of error
303handling).
304
305(Contributed by R. David Murray in :issue:`18891`.)
306
R David Murraybb17d2b2013-08-09 16:15:28 -0400307
Victor Stinner854ffcb2013-06-21 00:36:30 +0200308functools
309---------
310
311New :func:`functools.singledispatch` decorator: see the :pep:`443`.
312
Nick Coghlane8c45d62013-07-28 20:00:01 +1000313
Christian Heimese92ef132013-10-13 00:52:43 +0200314hashlib
315-------
316
317New :func:`hashlib.pbkdf2_hmac` function.
318
319(Contributed by Christian Heimes in :issue:`18582`)
320
321
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200322inspect
323-------
324
Nick Coghlanf94a16b2013-09-22 22:46:49 +1000325
326The inspect module now offers a basic command line interface to quickly
327display source code and other information for modules, classes and
328functions.
329
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200330:func:`~inspect.unwrap` makes it easy to unravel wrapper function chains
331created by :func:`functools.wraps` (and any other API that sets the
332``__wrapped__`` attribute on a wrapper function).
333
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200334mmap
335----
336
337mmap objects can now be weakref'ed.
338
339(Contributed by Valerie Lambert in :issue:`4885`.)
340
341
Richard Oudkerk84ed9a62013-08-14 15:35:41 +0100342multiprocessing
343---------------
344
345On Unix two new *start methods* have been added for starting processes
346using :mod:`multiprocessing`. These make the mixing of processes with
347threads more robust. See :issue:`8713`.
348
349Also, except when using the old *fork* start method, child processes
350will no longer inherit unneeded handles/file descriptors from their parents.
351
352
Victor Stinnerdaf45552013-08-28 00:53:59 +0200353os
354--
355
Georg Brandlc6ebbef2013-09-16 04:03:12 +0200356New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
Victor Stinnerdaf45552013-08-28 00:53:59 +0200357descriptors or a Windows handle:
358
359* :func:`os.get_inheritable`, :func:`os.set_inheritable`
360* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
361
362
R David Murray78d692f2013-10-10 17:23:26 -0400363pdb
364---
365
366The ``print`` command has been removed from :mod:`pdb`, restoring access to the
367``print`` function.
368
369Rationale: Python2's ``pdb`` did not have a ``print`` command; instead,
370entering ``print`` executed the ``print`` statement. In Python3 ``print`` was
371mistakenly made an alias for the pdb :pdbcmd:`p` command. ``p``, however,
372prints the ``repr`` of its argument, not the ``str`` like the Python2 ``print``
373command did. Worse, the Python3 ``pdb print`` command shadowed the Python3
374``print`` function, making it inaccessible at the ``pdb`` prompt.
375
376(Contributed by Connor Osborn in :issue:`18764`.)
377
378
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200379poplib
380------
381
382New :meth:`~poplib.POP3.stls` method to switch a clear-text POP3 session into
383an encrypted POP3 session.
384
385New :meth:`~poplib.POP3.capa` method to query the capabilities advertised by the
386POP3 server.
387
388(Contributed by Lorenzo Catucci in :issue:`4473`.)
389
390
Serhiy Storchaka7c411a42013-10-02 11:56:18 +0300391pprint
392------
393
394The :mod::`pprint` module now supports *compact* mode for formatting long
395sequences (:issue:`19132`).
396
397
R David Murray8e37d5d2013-04-13 14:49:48 -0400398smtplib
399-------
400
R David Murray8a345962013-04-14 06:46:35 -0400401:exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
R David Murray8e37d5d2013-04-13 14:49:48 -0400402both socket level errors and SMTP protocol level errors to be caught in one
403try/except statement by code that only cares whether or not an error occurred.
404(:issue:`2118`).
405
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200406
Victor Stinnerdaf45552013-08-28 00:53:59 +0200407socket
408------
409
Georg Brandl5642ff92013-09-15 10:37:57 +0200410Socket objects have new methods to get or set their :ref:`inheritable flag
411<fd_inheritance>`:
Victor Stinnerdaf45552013-08-28 00:53:59 +0200412
413* :meth:`socket.socket.get_inheritable`, :meth:`socket.socket.set_inheritable`
414
Eli Bendersky34567ec2013-08-31 15:18:48 -0700415The ``socket.AF_*`` and ``socket.SOCK_*`` constants are enumeration values,
416using the new :mod:`enum` module. This allows descriptive reporting during
417debugging, instead of seeing integer "magic numbers".
Victor Stinnerdaf45552013-08-28 00:53:59 +0200418
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200419ssl
420---
421
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200422TLSv1.1 and TLSv1.2 support.
Christian Heimes70833a82013-06-22 19:34:17 +0200423
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200424(Contributed by Michele Orrù and Antoine Pitrou in :issue:`16692`)
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200425
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200426* New diagnostic functions :func:`~ssl.get_default_verify_paths`,
427 :meth:`~ssl.SSLContext.cert_store_stats` and
428 :meth:`~ssl.SSLContext.get_ca_certs`
429
430* Add :func:`ssl.enum_cert_store` to retrieve certificates and CRL from Windows'
431 cert store.
Christian Heimes24cd4cf2013-06-22 19:31:58 +0200432
433(Contributed by Christian Heimes in :issue:`18143`, :issue:`18147` and
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200434 :issue:`17134`.)
435
436Support for server-side SNI using the new
437:meth:`ssl.SSLContext.set_servername_callback` method.
438
439(Contributed by Daniel Black in :issue:`8109`.)
440
441
Antoine Pitroud6cbd342013-08-12 20:48:15 +0200442stat
443----
444
445The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
446implementation is required as most of the values aren't standardized and
447platform-dependent. (Contributed by Christian Heimes in :issue:`11016`.)
448
449The module supports new file types: door, event port and whiteout.
450
451
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200452struct
453------
454
455Streaming struct unpacking using :func:`struct.iter_unpack`.
456
457(Contributed by Antoine Pitrou in :issue:`17804`.)
458
459
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300460sunau
461-----
462
463The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
464plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
465
Serhiy Storchaka34d20132013-09-05 17:01:53 +0300466:meth:`sunau.open` now supports the context manager protocol (:issue:`18878`).
467
Serhiy Storchakae06a8962013-09-04 00:43:03 +0300468
Andrew Kuchling173a1572013-09-15 18:15:56 -0400469traceback
470---------
471
472A new :func:`traceback.clear_frames` function takes a traceback object
473and clears the local variables in all of the frames it references,
474reducing the amount of memory consumed (:issue:`1565525`).
475
476
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200477urllib
478------
479
480Add support.for ``data:`` URLs in :mod:`urllib.request`.
481
482(Contributed by Mathias Panzenböck in :issue:`16423`.)
483
484
485unittest
486--------
487
488Support for easy dynamically-generated subtests using the
489:meth:`~unittest.TestCase.subTest` context manager.
490
491(Contributed by Antoine Pitrou in :issue:`16997`.)
492
R David Murray8e37d5d2013-04-13 14:49:48 -0400493
R David Murray671cd322013-04-10 12:31:43 -0400494wave
495----
496
497The :meth:`~wave.getparams` method now returns a namedtuple rather than a
498plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
499
R David Murrayc91d5ee2013-07-31 13:46:08 -0400500:meth:`wave.open` now supports the context manager protocol. (Contributed
501by Claudiu Popa in :issue:`17616`.)
502
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200503
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200504weakref
505-------
506
507New :class:`~weakref.WeakMethod` class simulates weak references to bound
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000508methods. (Contributed by Antoine Pitrou in :issue:`14631`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200509
Nick Coghlanbe57ab82013-09-22 21:26:30 +1000510New :class:`~weakref.finalize` class makes it possible to register a callback
511to be invoked when an object is garbage collected, without needing to
512carefully manage the lifecycle of the weak reference itself. (Contributed by
513Richard Oudkerk in :issue:`15528`)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200514
515
516xml.etree
517---------
518
519Add an event-driven parser for non-blocking applications,
Eli Benderskyb5869342013-08-30 05:51:20 -0700520:class:`~xml.etree.ElementTree.XMLPullParser`.
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200521
Eli Benderskyb5869342013-08-30 05:51:20 -0700522(Contributed by Antoine Pitrou in :issue:`17741`.)
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200523
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200524Other improvements
525==================
526
527Tab-completion is now enabled by default in the interactive interpreter.
528
529(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
530
Eli Bendersky96d848a2013-09-06 06:55:58 -0700531Python invocation changes
532=========================
533
534Invoking the Python interpreter with ``--version`` now outputs the version to
535standard output instead of standard error (:issue:`18338`). Similar changes
536were made to :mod:`argparse` (:issue:`18920`) and other modules that have
537script-like invocation capabilities (:issue:`18922`).
Antoine Pitrouf89aa9a2013-08-12 20:46:47 +0200538
Georg Brandlb80f5112012-09-30 09:11:58 +0200539Optimizations
540=============
541
542Major performance enhancements have been added:
543
Victor Stinnere64322e2012-10-30 23:12:47 +0100544* The UTF-32 decoder is now 3x to 4x faster.
Georg Brandlb80f5112012-09-30 09:11:58 +0200545
Raymond Hettingerc301b552013-08-19 09:12:20 -0700546* The cost of hash collisions for sets is now reduced. Each hash table
Raymond Hettinger8408dc52013-09-15 14:57:15 -0700547 probe now checks a series of consecutive, adjacent key/hash pairs before
548 continuing to make random probes through the hash table. This exploits
549 cache locality to make collision resolution less expensive.
550
551 The collision resolution scheme can be described as a hybrid of linear
552 probing and open addressing. The number of additional linear probes
553 defaults to nine. This can be changed at compile-time by defining
554 LINEAR_PROBES to be any value. Set LINEAR_PROBES=0 to turn-off
555 linear probing entirely.
Raymond Hettingerc301b552013-08-19 09:12:20 -0700556
Andrew Kuchling13aa7812013-08-19 13:07:18 -0400557 (Contributed by Raymond Hettinger in :issue"`18771`.)
Raymond Hettingerc301b552013-08-19 09:12:20 -0700558
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200559* The interpreter starts about 30% faster. A couple of measures lead to the
Eric V. Smith57841dd2013-10-13 00:36:08 -0400560 speedup. The interpreter loads fewer modules on startup, e.g. the :mod:`re`,
Christian Heimes17ecd1d2013-10-13 03:10:06 +0200561 :mod:`collections` and :mod:`locale` modules and their dependencies are no
562 longer imported by default. The marshal module has been improved to load
563 compiled Python code faster.
564
565 (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in
566 :issue:`19219`, :issue:`19218`, :issue:`19209`, :issue:`19205` and
567 :issue:`9548`)
568
569
Georg Brandlb80f5112012-09-30 09:11:58 +0200570
571Build and C API Changes
572=======================
573
574Changes to Python's build process and to the C API include:
575
Nick Coghlan7d270ee2013-10-17 22:35:35 +1000576* The new :c:func:`Py_SetStandardStreamEncoding` pre-initialization API
577 allows applications embedding the CPython interpreter to reliably force
578 a particular encoding and error handler for the standard streams
579 (Contributed by Bastien Montagne and Nick Coghlan in :issue:`16129`)
Georg Brandlb80f5112012-09-30 09:11:58 +0200580
581
582Deprecated
583==========
584
585Unsupported Operating Systems
586-----------------------------
587
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200588* OS/2
Victor Stinnerf3fd13b2013-08-04 10:30:57 +0200589* Windows 2000
Georg Brandlb80f5112012-09-30 09:11:58 +0200590
591
592Deprecated Python modules, functions and methods
593------------------------------------------------
594
Terry Jan Reedy2b6c26e2013-03-21 19:36:26 -0400595* :meth:`difflib.SequenceMatcher.isbjunk` and
Andrew Kuchling0d0813a2013-06-15 13:29:09 -0400596 :meth:`difflib.SequenceMatcher.isbpopular` were removed: use ``x in sm.bjunk`` and
597 ``x in sm.bpopular``, where *sm* is a :class:`~difflib.SequenceMatcher` object.
Georg Brandlb80f5112012-09-30 09:11:58 +0200598
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400599* :func:`importlib.util.module_for_loader` is pending deprecation. Using
600 :func:`importlib.util.module_to_load` and
601 :meth:`importlib.abc.Loader.init_module_attrs` allows subclasses of a loader
602 to more easily customize module loading.
603
Brett Cannone4f41de2013-06-16 13:13:40 -0400604* The :mod:`imp` module is pending deprecation. To keep compatibility with
605 Python 2/3 code bases, the module's removal is currently not scheduled.
606
Brett Cannon1448ecf2013-10-04 11:38:59 -0400607* The :mod:`formatter` module is pending deprecation and is slated for removal
608 in Python 3.6.
609
Georg Brandlb80f5112012-09-30 09:11:58 +0200610
611Deprecated functions and types of the C API
612-------------------------------------------
613
Victor Stinner8d197672013-10-09 14:53:01 +0200614* The ``PyThreadState.tick_counter`` field has been value: its value was meaningless
615 since Python 3.2 ("new GIL").
Georg Brandlb80f5112012-09-30 09:11:58 +0200616
617
618Deprecated features
619-------------------
620
Brett Cannon82b3d6a2013-06-14 22:37:11 -0400621* None yet.
Georg Brandlb80f5112012-09-30 09:11:58 +0200622
623
Benjamin Peterson88f3b232012-10-04 12:45:10 -0400624Porting to Python 3.4
Georg Brandlb80f5112012-09-30 09:11:58 +0200625=====================
626
627This section lists previously described changes and other bugfixes
628that may require changes to your code.
629
Brett Cannon777622b2013-04-09 17:03:10 -0400630* The ABCs defined in :mod:`importlib.abc` now either raise the appropriate
631 exception or return a default value instead of raising
632 :exc:`NotImplementedError` blindly. This will only affect code calling
633 :func:`super` and falling through all the way to the ABCs. For compatibility,
634 catch both :exc:`NotImplementedError` or the appropriate exception as needed.
Brett Cannon4c14b5d2013-05-04 13:56:58 -0400635
636* The module type now initializes the :attr:`__package__` and :attr:`__loader__`
637 attributes to ``None`` by default. To determine if these attributes were set
638 in a backwards-compatible fashion, use e.g.
Brett Cannon3dc48d62013-05-28 18:35:54 -0400639 ``getattr(module, '__loader__', None) is not None``.
640
641* :meth:`importlib.util.module_for_loader` now sets ``__loader__`` and
642 ``__package__`` unconditionally to properly support reloading. If this is not
643 desired then you will need to set these attributes manually. You can use
Brett Cannon028d5122013-05-31 18:02:11 -0400644 :func:`importlib.util.module_to_load` for module management.
Brett Cannon3e0651b2013-05-31 23:18:39 -0400645
646* Import now resets relevant attributes (e.g. ``__name__``, ``__loader__``,
647 ``__package__``, ``__file__``, ``__cached__``) unconditionally when reloading.
648
Brett Cannon1448ecf2013-10-04 11:38:59 -0400649* Frozen packages no longer set ``__path__`` to a list containing the package
650 name but an empty list instead. Determing if a module is a package should be
651 done using ``hasattr(module, '__path__')``.
Brett Cannon8f5ac512013-06-12 23:29:18 -0400652
653* :c:func:`PyErr_SetImportError` now sets :exc:`TypeError` when its **msg**
Brett Cannon82da8882013-07-04 17:48:16 -0400654 argument is not set. Previously only ``NULL`` was returned with no exception
655 set.
Brett Cannon33915eb2013-06-14 18:33:00 -0400656
657* :func:`py_compile.compile` now raises :exc:`FileExistsError` if the file path
658 it would write to is a symlink or a non-regular file. This is to act as a
659 warning that import will overwrite those files with a regular file regardless
660 of what type of file path they were originally.
Brett Cannonf4375ef2013-06-16 18:05:54 -0400661
662* :meth:`importlib.abc.SourceLoader.get_source` no longer raises
663 :exc:`ImportError` when the source code being loaded triggers a
664 :exc:`SyntaxError` or :exc:`UnicodeDecodeError`. As :exc:`ImportError` is
665 meant to be raised only when source code cannot be found but it should, it was
666 felt to be over-reaching/overloading of that meaning when the source code is
667 found but improperly structured. If you were catching ImportError before and
668 wish to continue to ignore syntax or decoding issues, catch all three
Victor Stinner84e33c82013-06-21 00:31:55 +0200669 exceptions now.
Nick Coghlan24c05bc2013-07-15 21:13:08 +1000670
671* :func:`functools.update_wrapper` and :func:`functools.wraps` now correctly
672 set the ``__wrapped__`` attribute even if the wrapped function had a
673 wrapped attribute set. This means ``__wrapped__`` attributes now correctly
674 link a stack of decorated functions rather than every ``__wrapped__``
675 attribute in the chain referring to the innermost function. Introspection
Nick Coghlane8c45d62013-07-28 20:00:01 +1000676 libraries that assumed the previous behaviour was intentional can use
677 :func:`inspect.unwrap` to gain equivalent behaviour.
Victor Stinner2fe9bac2013-10-10 16:18:20 +0200678
Georg Brandlc2228c82013-10-12 13:24:55 +0200679* (C API) The result of the :c:data:`PyOS_ReadlineFunctionPointer` callback must
Victor Stinner2fe9bac2013-10-10 16:18:20 +0200680 now be a string allocated by :c:func:`PyMem_RawMalloc` or
681 :c:func:`PyMem_RawRealloc`, or *NULL* if an error occurred, instead of a
682 string allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`.
683
Georg Brandl0f5bff22013-10-19 17:46:38 +0200684* :class:`importlib.machinery.PathFinder` now passes on the current working
Brett Cannon27e27f72013-10-18 11:39:04 -0400685 directory to objects in :data:`sys.path_hooks` for the empty string. This
686 results in :data:`sys.path_importer_cache` never containing ``''``, thus
687 iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
688 will not find all keys. A module's ``__file__`` when imported in the current
689 working directory will also now have an absolute path, including when using
690 ``-m`` with the interpreter (this does not influence when the path to a file
691 is specified on the command-line).
692
Georg Brandl0f5bff22013-10-19 17:46:38 +0200693* :class:`importlib.machinery.FileFinder` no longer special-cases the empty string
Brett Cannon27e27f72013-10-18 11:39:04 -0400694 to be changed to ``'.'``.